Msbuild Visual Studio清单工具不支持';是否不接受多个附加清单文件?

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告

TL;DR(如何)让Visual Studio(2010-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
    属性表组合到单个项目中时,会出现实际情况,其中一个指定私有程序集,另一个指定应用程序兼容性声明。因此,设置不位于实际项目本身,而是位于项目中包含的属性页上

我也在问题中加入了标签,因为我

  • 不确定此-VS或MSBuild应归咎于什么
  • 也许有可能通过破解
    .props
    .vcxproj
    文件来实现这一点

  • 汉斯的评论恰到好处:

    。。。空格不是文件分隔符。 在文件名之间加上分号

    添加seimcolon
    .manifest
    文件名之后的代码>会起作用。VS/MSBuild(无论谁)将正确引用
    /manifest
    选项

    也就是说,不是指定:

      <ItemDefinitionGroup>
        <Manifest>
          <AdditionalManifestFiles>somefile.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
        </Manifest>
      </ItemDefinitionGroup>
    

    这是一个简单的文件未找到错误,空格不是文件分隔符。设置编辑器有点笨拙,您必须键入;文件名之间的分号。