Где можно найти официальную заметку, статью kb или другую документацию, описывающую изменения в политике связывания и развертывания Visual Studio 2010 C / C ++ во время выполнения?
В Visual Studio 2008 (со средой выполнения VC90) манифест был встроен в собственные образы, а библиотеки времени выполнения были развернуты в виде параллельных сборок (WinSxS). Это вызывало проблемы при перестройке собственного exe-файла или библиотеки с использованием VS 2008 SP1, поскольку во встроенном манифесте требовалась обновленная версия среды выполнения C ++.
Для VS 2010 и версии среды выполнения MSVCR100 политика, похоже, полностью изменилась.
- Файл msvcr100.dll и другие библиотеки времени выполнения C / C ++ больше не устанавливаются как сборки SxS.
- При компиляции под VS2010, во время выполнения не добавляется запись «зависимости» во время выполнения, что означает, что любая версия msvcr100.dll может быть загружена во время выполнения.
- На компьютерах с установленным .NET 4 соответствующая среда выполнения называется msvcr100_clr0400.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 (без статического связывания).