如何正确传递MSBuild属性到另一个MSBuild脚本?

5

我有一个名为master.proj的MSBuild脚本,它使用MSBuild任务来构建多个项目。

这是一个典型的例子:

<Target Name="Log4PostSharp" DependsOnTargets="log4net">
  <MSBuild Projects="Log4PostSharp\Log4PostSharp.sln" Properties="Configuration=$(Configuration)" />
</Target>

但是,我的问题是如果在命令行中给出更多的属性,则这些属性不会传递给MSBuild任务。

有没有办法将所有在命令行中给出的属性都传递给MSBuild任务?

谢谢。


我曾经问过类似的问题(https://dev59.com/Tk_Sa4cB1Zd3GeqP9RuF),但从未找到解决方案,这似乎是msbuild的一个严重缺陷,我个人认为。 - arathorn
1个回答

3

您需要将额外的属性作为一个分号分隔的属性名称/值对列表显式地传递到Properties属性中。虽然不太美观,但这是可行的方法:

<Target Name="Log4PostSharp" DependsOnTargets="log4net">
  <MSBuild Projects="Log4PostSharp\Log4PostSharp.sln" 
           Properties="Configuration=$(Configuration);
                       Platform=$(Platform);
                       OtherPropertyPassInCommandLine=$(PropertyValue)" />
</Target>

1
这不是一个漂亮的问题。它根本不可能。Master.proj用于同时构建多个项目。它无法知道哪些属性与哪些项目相关。 - mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接