Msbuild Visual Studio清单工具不支持';是否不接受多个附加清单文件?
TL;DR(如何)让Visual Studio(2010-2015)通过实际的Msbuild Visual Studio清单工具不支持';是否不接受多个附加清单文件?,msbuild,visual-studio,visual-c++,manifest,Msbuild,Visual Studio,Visual C++,Manifest,TL;DR(如何)让Visual Studio(2010-2015)通过实际的附加清单文件GUI/props选项(而不是通过变通方法)接受多个清单文件(合并) 简化走查: < >我的C++应用程序(包含私有程序集信息)通过VisualC++程序设置: CFG属性>清单工具>输入和输出>附加清单文件< /Calp> 这一点与预期一样有效 现在,我需要在第二个清单文件中添加/合并。由于该选项称为“附加清单文件”,并且这是一个多行编辑框,因此我尝试在此处添加要合并的第二个文件: VS 2015告
附加清单文件
GUI/props选项(而不是通过变通方法)接受多个清单文件(合并)
简化走查: < >我的C++应用程序(包含私有程序集信息)通过VisualC++程序设置:<代码> CFG属性>清单工具>输入和输出>附加清单文件< /Calp> 这一点与预期一样有效 现在,我需要在第二个清单文件中添加/合并。由于该选项称为“附加清单文件”,并且这是一个多行编辑框,因此我尝试在此处添加要合并的第二个文件: VS 2015告诉我:
1>LINK : fatal error LNK1104: cannot open file 'private-assem.manifest my-compat.manifest'
2>private-assem.manifest my-compat.manifest : general error c1010070: Failed to load and parse the manifest. Das System kann die angegebene Datei nicht finden.
VS2010告诉我:
1>LINK : fatal error LNK1104: cannot open file 'private-assem.manifest my-compat.manifest'
2>private-assem.manifest my-compat.manifest : general error c1010070: Failed to load and parse the manifest. Das System kann die angegebene Datei nicht finden.
这里需要注意的是,这两个工具都将两个文件连接为一个,实际上,查看命令行,我们可以看到:(注意引号)
进一步查看我们看到的mt.exe
帮助:
C:\Program Files (x86)\Microsoft Visual Studio 14.0>mt /?
Microsoft (R) Manifest Tool version 6.3.9600.17336
Copyright (c) Microsoft Corporation 2012.
All rights reserved.
Usage:
-----
mt
[ -manifest <manifest1 name> <manifest2 name> ... ]
...
C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0>mt/?
Microsoft(R)清单工具版本6.3.9600.17336
版权所有(c)微软公司2012。
版权所有。
用法:
-----
mt
[-舱单…]
...
请注意,清单文件选项是空格分隔的,因此VS传递给mt.exe的内容是伪造的,因为它将两个文件都包含在一个引号字符串中
问题:
有没有办法使附加清单文件
选项实际适用于多个文件?还是我做错了什么
背景/解决方法
我可以想出以下可能的解决办法:
- 尝试通过预链接步骤和手动调用mt.exe(未尝试:可怕)来破解某些东西
- 实际将清单文件作为文件项添加到VS项目中:这将起作用,但:
当将多个
属性表组合到单个项目中时,会出现实际情况,其中一个指定私有程序集,另一个指定应用程序兼容性声明。因此,设置不位于实际项目本身,而是位于项目中包含的属性页上.props
.props
或.vcxproj
文件来实现这一点汉斯的评论恰到好处: 。。。空格不是文件分隔符。 在文件名之间加上分号 添加seimcolon
属性中的每个.manifest
文件名之后的代码>会起作用。VS/MSBuild(无论谁)将正确引用/manifest
选项
也就是说,不是指定:
<ItemDefinitionGroup>
<Manifest>
<AdditionalManifestFiles>somefile.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
这是一个简单的文件未找到错误,空格不是文件分隔符。设置编辑器有点笨拙,您必须键入;文件名之间的分号。