Visual C ++ 2010: изменения в развертывании среды выполнения MSVC (больше не нужно SxS с манифестом)

Где я могу найти официальную заметку, статью в КБ или другую документацию, описывающую изменения в политике связывания и развертывания среды выполнения Visual Studio 2010 C / C ++?

В Visual Studio 2008 ( со средой выполнения VC90) манифест был встроен в собственные образы, а библиотеки времени выполнения были развернуты как параллельные сборки (WinSxS). Это вызвало проблемы при восстановлении собственного исполняемого файла или библиотеки с использованием VS 2008 SP1, в этой обновленной версии среды выполнения C ++ требовалось встроенным манифестом.

Для VS 2010 и версии среды выполнения MSVCR100 политика, похоже, полностью изменилась.

  1. Файл msvcr100.dll и другие библиотеки времени выполнения C / C ++ больше не используются установить как сборки SxS.
  2. При компиляции под VS2010 во встроенный манифест не добавляется запись о «зависимостях» времени выполнения, что означает, что любая версия msvcr100.dll может быть загружена во время выполнения.
  3. На машинах с установленным .NET 4 , соответствующая среда выполнения называется msvcr100_cl r0400.dll и не будет загружен собственным кодом, хотя копия, переименованная в msvcr100.dll, работает нормально. Я думаю, это означает, что любой процесс с кодом C / C ++ всегда будет иметь две версии одной и той же среды выполнения C / C ++.

Похоже, это существенное изменение в политике, откат от развертывания SxS и зависимости манифеста, которые у нас были в VS 2008. Может ли кто-нибудь пролить больше света на то, что изменилось, и, возможно, указать на какую-то документацию, файл readme или сообщение в блоге, описывающее эти изменения, мотивацию и связанные с ними последствия?

Думаю, так лучше - манифест сильной версии и SxS развертывание было кошмаром, но меня удивили эти неожиданные и, казалось бы, недокументированные изменения в VS 2010.

Бонусный вопрос: Как я могу скомпилировать свою библиотеку C ++ / CLI под VS 2010 для ссылки на msvcr100_clr0400.dll вместо msvcr100.dll? Идея состоит в том, что сборка C ++ / CLI должна работать без каких-либо зависимостей, кроме установленных .NET 4 (без статического связывания).

27
задан KarSho 3 June 2015 в 10:20
поделиться