【问题标题】:Specifying Correct VS 2012 VC/MFC Runtime Using Manifest Files in Visual Studio在 Visual Studio 中使用清单文件指定正确的 VS 2012 VC/MFC 运行时
【发布时间】:2016-11-15 11:11:27
【问题描述】:

我们最近将基于 MFC 的大型项目套件从 Visual Studio 2005/2008 转换为 Visual Studio 2012(更新 5)。我们的项目以前使用一组特定于配置的清单文件,作为资源嵌入,以指定要加载的并排 (SxS) 程序集的确切版本。例如,下面是 VC90 运行时的旧清单文件之一的 sn-p:

   <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(过时的)文章证实了我的发现,即微软不再以这种方式存储 VC2010+ SxS 文件。 我想告诉我们的项目针对最新的 Microsoft Visual C++ 2012 Redistributable(安装程序 v11.0.61030.0)运行。如何找到这些二进制文件的正确名称/版本/publicKeyToken 信息?我找不到 MSDN 列表或类似内容。

请注意,我一直在使用 sxstrace.exe / Dependency Walker 等来调查此问题。我可以确认清单文件已适当地嵌入到我们的可执行文件中;问题只是清单文件指定不正确。

提前致谢!

【问题讨论】:

    标签: c++ visual-studio-2012 mfc manifest msvcrt


    【解决方案1】:

    看看this。我没记错,默认情况下,您的应用程序将链接到 Windows SDK 中的库。要让项目使用默认库,只需在项目文件中删除有关它们的信息或使用默认设置重新创建项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多