Visual-Studio Manifest Tool不接受多个附加清单文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual-Studio Manifest Tool不接受多个附加清单文件?相关的知识,希望对你有一定的参考价值。
TL; DR(How)是否可以通过实际的Additional Manifest Files
GUI / props选项(而不是通过变通方法)让Visual Studio(2010-2015)接受多个清单文件(合并)?
Simplified walk through:
我的C ++应用程序embeds an additional manifest file(包含私有程序集信息)通过Visual-C ++设置:Cfg Properties > Manifest Tool > Input and Output > Additional Manifest Files
这按预期工作。
现在,我需要在第二个清单文件中添加/合并。由于该选项被称为“Additional Manifest File_s_”,这是一个多行编辑框,我尝试在此处添加要合并的第二个文件:
VS 2015告诉我:
1>LINK : fatal error LNK1104: cannot open file 'private-assem.manifest my-compat.manifest'
VS 2010告诉我:
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.
这里要注意的是,两个工具都将两个文件连接成一个,实际上,看一下命令行,我们看到:(注意引号)
/manifest "private-assem.manifest my-compat.manifest" /verbose /out:"DebugConsoleApplication2.exe.embed.manifest" /nologo "DebugConsoleApplication2.exe.embed.manifest.res"
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> ... ]
...
请注意,清单文件选项是空格分隔的,因此VS传递给mt.exe的是humbug,因为它将两个文件都包含在单个引号字符串中。
Question
有没有办法让Additional Manifest Files
选项实际上适用于多个文件?或者我做错了什么?
Background / Workaround
我可以想到以下可能的解决方法:
- 尝试通过预链接步骤和手动调用mt.exe来共同破解某些东西(未尝试过:可怕)
- 实际上将清单文件作为文件项添加到VS项目:这将起作用,但是:
将多个
.props
属性表组合到一个项目中时出现了实际情况,其中一个编译了私有程序集,另一个编译了应用程序兼容性声明。因此,设置不会驻留在实际项目本身上,而是驻留在项目中包含的属性表中。
我也在问题中包括msbuild标签,就像我一样
- 不确定这是什么责任 - VS或MSBuild
- 也许有可能黑客攻击
.props
or.vcxproj
文件来完成这项工作
汉斯的评论是:
...空格不是文件分隔符。在文件名之间加上分号。
在属性中的每个;
文件名后添加seimcolon .manifest
就可以了。 VS / MSBuild(无论谁)将正确引用/manifest
option。
也就是说,而不是指定:
<ItemDefinitionGroup>
<Manifest>
<AdditionalManifestFiles>somefile.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
所有属性表文件(实际上所有Additional Manifest Files
设置)都可以(并且应该)在每个文件名后附加一个分号(当仅选择一个文件时也会这样做,以便它可以正确地组合多个属性表):
<AdditionalManifestFiles>somefile.manifest; %(AdditionalManifestFiles)</AdditionalManifestFiles>
^^^
以上是关于Visual-Studio Manifest Tool不接受多个附加清单文件?的主要内容,如果未能解决你的问题,请参考以下文章
错误提示:'……' is not assignable to Android.app.Activity Manifest XML
service cloudera-scm-server restart报错 Unable to retrieve remote parcel repository manifest
Failed to read Class-Path attribute from manifest of jar