Обновления безопасности Visual Studio 2005 и версии CRT DLL в манифесте
Последние обновления безопасности для Visual Studio 2005 могут вызывать у нас проблемы.
Мы создаем и распространяем SDK, написанные на C ++. Эти SDK представляют собой коллекцию только заголовочных файлов и статических библиотек. После установки обновлений безопасности наши SDK теперь зависят от более новых версий библиотек MSVC CRT. Эти SDK используются в последующих проектах, которые создают файлы EXE.
Если один из этих EXE-файлов собран из набора SDK (некоторые до обновления безопасности, некоторые после), то полученный EXE-файл ссылается на два набора библиотек времени выполнения MSVC. Например:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
Означает ли это, что во время выполнения этот EXE будет использовать обе версии DLL? Означает ли это, что мы должны распространять обе версии библиотек времени выполнения MSVC с этим EXE-файлом?
Есть ли простой способ избежать этой проблемы без принудительного создания всех SDK с исправлениями безопасности для Visual Studio 2005? (Это было бы нежелательно для некоторых более старых и достаточно стабильных SDK, которые мы не хотим перестраивать без необходимости)
Можно ли просто переписать файл манифеста либо в SDK, либо в конечном EXE-файле, чтобы была упомянута только одна версия DLL-библиотеки CRT MSVC?
Насколько я понимаю, соответствующие обновления заключаются в следующем:
Обновление безопасности для Microsoft Visual Studio 2005 с пакетом обновления 1 (SP1): KB971090
http://go.microsoft.com/fwlink/?LinkId=155934
Обновление безопасности для Microsoft Visual Studio 2008 с пакетом обновления 1 (SP1): KB971092
http://go.microsoft.com/fwlink/?LinkID=155933
Я обнаружил два других вопроса, которые похожи:
VC ++: KB971090 и выбор зависимостей DLL среды выполнения Visual C