2009-08-06 40 views
8

如您所知,Microsoft最近爲Visual Studio部署了安全更新:KB971090VC++:KB971090並選擇Visual C運行時DLL依賴關係

除此之外,此操作將Visual C運行時DLL從版本8.0.50727.762更新爲8.0.50727.4053。

因此,在此更新之後,我使用運行時動態鏈接進行編譯的所有內容都將其依賴關係更新爲新運行時。

當然,對於新的應用程序來說,更新到新的,可能更安全的版本是很好的。

但我還想保留舊的依賴關係 - 例如,我可能想構建一個只需要更換一個DLL的修復包(如果我在更新後嘗試這樣做,我會得到可怕的「此應用程序未能啓動,因爲應用程序配置不正確」,除非我還分發更新的運行時)。

有沒有辦法做到這一點,還是我需要保留兩個Visual Studio的安裝:一個更新,一個未更新?

+0

參見:http://netscantools.blogspot.com/2009/08/security-update-for -compiler-broke-our.html – 2009-08-06 12:30:09

+0

我有一個非常類似的問題,但我更關心在單個可執行文件中使用不同版本的c運行時庫。看到http://stackoverflow.com/questions/1238741/does-the-latest-visual-studio-2005-security-update-cause-c-runtime-library-issues – iain 2009-08-06 13:13:02

+0

很酷。這是目前KB971090在Google上的第三次。 – JesperE 2009-08-18 10:40:26

回答

6

您可以通過使用解決方法指定版本中發現here

3

您可以關閉自動生成的清單,並使用您需要的庫版本包含自己的清單。

例如:

<dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity></dependentAssembly></dependency> 
+0

這意味着您將在構建時使用新的頭文件和存根庫,而僅在運行時使用較舊的DLL。這是由Microsoft支持的嗎? – pauldoo 2009-08-12 13:28:00

+0

我認爲對於次要更新它會沒事的。 – 2009-08-25 08:31:57

+0

您的示例引用了DebugCRT。那個不是可再分發的。 – 2013-12-16 17:58:33