Visual-Studio 清单工具不接受多个附加清单文件?

Visual-Studio Manifest Tool doesn't accept multiple Additional Manifest Files?

TL;DR(如何)是否有可能通过实际 Additional Manifest Files GUI / 道具选项(而不是通过解决方法)?


简化的演练:

我的 C++ 应用程序 embeds an additional manifest file(包含私有程序集信息)通过 Visual-C++ 设置:Cfg Properties > Manifest Tool > Input and Output > Additional Manifest Files

按预期工作

现在,我需要在第二个清单文件add/merge中。由于该选项称为 "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"

进一步查看 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> ... ]
...

请注意,清单文件选项是 space 分隔的 因此 VS 传递给 mt.exe 的内容是骗局,因为它将两个文件包含在一个文件中引用字符串。

问题

有什么方法可以使 Additional Manifest Files 选项真正适用于多个文件吗?还是我做错了什么?

背景/解决方法

我可以想到以下可能的解决方法:

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

  1. 不确定这应该归咎于什么 - VS 或 MSBuild
  2. 也许有可能破解 .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>

所有 属性 sheet 文件(实际上是所有 Additional Manifest Files 设置)可以(并且应该)在每个文件名后附加一个分号(当只指定一个时也这样做,所以它将正确组合多个 属性 sheets):

  <AdditionalManifestFiles>somefile.manifest; %(AdditionalManifestFiles)</AdditionalManifestFiles>
                                           ^^^