我們最近已將基於MFC的大型項目套件從Visual Studio 2005/2008轉換爲Visual Studio 2012(Update 5)。我們的項目以前使用一組特定於配置的清單文件,作爲資源嵌入,以指定要加載的並行(SxS)程序集的確切版本。作爲一個例子,下面這裏是我們的VC90運行舊清單文件中的一個片段:在Visual Studio中使用清單文件指定正確的VS 2012 VC/MFC運行時
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
以前,我可以在身份以上位於C文件夾關聯:\ WINDOWS \ WinSxS文件。一個例子是包含正確的二進制文件的文件夾「x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_e163563597edeada」。
如您所見,文件夾名稱包含填充assemblyIdentity節點屬性所需的所有信息。不幸的是,this(過時)文章證實了我的發現,即Microsoft不再以這種方式存儲VC2010 + SxS文件。 我想告訴我們的項目運行最新的Microsoft Visual C++ 2012 Redistributable(安裝程序v11.0.61030.0)。如何找到這些二進制文件的正確名稱/版本/ publicKeyToken信息?我無法找到MSDN列表或類似信息。
請注意,我一直在使用sxstrace.exe/Dependency Walker等來調查此問題。我可以確認清單文件已被正確嵌入到我們的可執行文件中;問題是隻有清單文件被錯誤地指定。
在此先感謝!