Последние обновления безопасности Visual Studio 2005 могут вызывать у нас проблемы.
Мы создаем и распространяем SDK, написанные на C ++ внутри компании. Эти SDK представляют собой набор только файлов заголовков и статических библиотек. После установки обновлений безопасности наши SDK теперь зависят от более новых версий библиотек DLL MSVC CRT. Эти SDK используются в проектах, которые создают EXE-файлы.
Если один из этих EXE-файлов создан с использованием набора SDK (некоторые из них были созданы до обновлений безопасности, некоторые - после), то созданный EXE-файл ссылается на два набора динамических DLL 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? Означает ли это, что мы должны распространять обе версии DLL среды выполнения MSVC с этим EXE?
Есть ли простой способ избежать этой проблемы, не заставляя все SDK собираться с установленными исправлениями безопасности Visual Studio 2005? (Это было бы нежелательно для некоторых старых и довольно стабильных SDK, которые мы не хотим перестраивать без надобности)
Можно ли просто переписать файл манифеста либо в SDK, либо в окончательном EXE-файле, чтобы упоминалась только одна версия DLL MSVC CRT?
Насколько я понимаю, соответствующие обновления заключаются в следующем:
Обновление безопасности для Microsoft Visual Studio 2005 с пакетом обновления 1: KB971090
http://go.microsoft.com/fwlink/?LinkId=155934
Обновление безопасности для Microsoft Visual Studio 2008 с пакетом обновления 1: KB971092
http://go.microsoft.com/fwlink/?LinkID=155933
Я обнаружил еще два похожих вопроса:
VC ++: KB971090 и выбор зависимостей DLL среды выполнения Visual C