Где я могу найти официальную заметку, статью kb или другую документацию, описывающую изменения политики компоновки и развертывания среды исполнения Visual Studio 2010?
В Visual Studio 2008 (с временем выполнения VC90) манифест был встроен в собственные изображения, а библиотеки времени выполнения были развернуты как сборочные сборки (WinSxS). Это вызвало проблемы при восстановлении родного exe или библиотеки с использованием VS 2008 SP1, поскольку обновленная версия среды выполнения С++ требовалась встроенным манифестом.
Для версии VS 2010 и версии среды MSVCR100 политика, похоже, полностью изменилась.
- Файл msvcr100.dll и другие библиотеки времени исполнения C/С++ больше не устанавливаются в виде сборок SxS.
- При компиляции под VS2010 во встроенный манифест добавляется запись "зависимость" runtime, что означает, что любая версия msvcr100.dll может быть загружена во время выполнения.
- На компьютерах с установленным .NET 4 соответствующая среда выполнения называется msvcr100_clr0400.dll и не будет загружаться с помощью собственного кода, хотя копия, переименованная в msvcr100.dll, отлично работает. Я думаю, что это означает, что любой процесс с кодом C/С++ всегда будет иметь две версии одной и той же загрузочной среды C/С++.
Это, по-видимому, значительное изменение в политике, откат от развертывания SxS и манифеста, которые мы имели под VS 2008. Может ли кто-либо проливать больше света на то, что изменилось, и, возможно, указать на некоторую документацию, сообщение readme или blog, которое описывает эти изменения, мотивация и связанное с этим воздействие?
Думаю, что так лучше - сильная версия манифеста и развертывание SxS - это кошмар, но я удивлен этими неожиданными и, казалось бы, недокументированными изменениями в VS 2010.
Бонусный вопрос: Как я могу скомпилировать мою библиотеку С++/CLI в VS 2010 для ссылки на msvcr100_clr0400.dll вместо msvcr100.dll? Эта идея состоит в том, что сборка С++/CLI должна выполняться без зависимостей, отличных от установленных .NET 4 (без статической привязки).