TL;DR(如何)是否可以让 Visual Studio(2010 - 2015)通过实际的其他 list 文件
接受多个 list 文件(进行合并) GUI/props 选项(而不是通过解决方法)?
简化演练:
我的 C++ 应用程序 embeds an additional manifest file (包含私有(private)程序集信息)通过 Visual-C++ 设置:Cfg Properties > Manifest Tool > 输入和输出 > 附加 list 文件
这按预期工作。
现在,我需要添加/合并第二个 list 文件。由于该选项称为“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:"Debug\ConsoleApplication2.exe.embed.manifest" /nologo "Debug\ConsoleApplication2.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> ... ]
...
请注意, list 文件选项是空格分隔的,因此 VS 传递给 mt.exe 的内容是骗人的,因为它将两个文件括在单引号字符串中。
问题
有没有办法让附加 list 文件
选项真正适用于多个文件?还是我做错了什么?
背景/解决方法
我可以想到以下可能的解决方法:
- 尝试通过预链接步骤和手动调用 mt.exe 来破解某些内容(未尝试过:太糟糕了)
实际上将 list 文件作为文件项添加到 VS 项目:这会起作用,但是:
实际情况是在将多个
.props
属性表组合到一个项目中时出现的,其中一个指定了私有(private)程序集,另一个指定了应用程序兼容性声明。因此,这些设置并不驻留在实际项目本身上,而是驻留在项目中包含的属性表上。
我还包括 msbuild在问题中标记,就像我一样
- 不确定这应该归咎于什么 - VS 还是 MSBuild
- 也许有可能通过破解
.props
或.vcxproj
文件来实现此目的
最佳答案
汉斯的评论很准确:
... a space is not a file separator. Put semicolons between the file names.
在属性中的每个 .manifest
文件名后面添加一个分号 ;
即可达到目的。 VS/MSBuild(无论是谁)都会正确引用 /manifest
选项。
也就是说,而不是指定:
<ItemDefinitionGroup>
<Manifest>
<AdditionalManifestFiles>somefile.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
所有属性表文件(实际上是所有附加 list 文件
设置)都可以(并且应该)在每个文件名后附加一个分号(当仅指定单个文件名时也可以这样做,以便将其组合在一起)对于多个属性表正确):
<AdditionalManifestFiles>somefile.manifest; %(AdditionalManifestFiles)</AdditionalManifestFiles>
^^^
关于Visual-Studio list 工具不接受多个附加 list 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346550/