MSBuild,在命令行上覆盖属性表

时间:2017-01-27 15:49:54

标签: msbuild

我正在寻找一种方法将命令行上的属性表(.props文件)传递给MSBuild。 MSBuild似乎没有特定的属性表开关,但确实有/property command line switch,您可以使用它来覆盖项目中的各个属性。

是否有某种方法可以在命令行上提供属性表,或者使用/property开关来应用属性表?

1 个答案:

答案 0 :(得分:2)

在项目文件中添加像

这样的导入
<Import Project="$(CustomProps)" Condition="Exists($(CustomProps))" />

只需将其添加到其他导入的位置,或者如果您不想为每个配置/平台组合重复自己,请将其添加到<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>行下方(在这种情况下,其他属性表可以覆盖值从它开始)或<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>行之上(因此您可以在自定义属性表中应用'final'值)。

然后在命令行传递/p:CustomProps=/path/to/props

编辑 msbuild也内置​​了此功能,只是认为这有点How to set PreProcessorDefinitions as a task propery for the msbuild task的副本。除非您想控制导入的位置,否则您必须在ForceImportBeforeCppTargets和ForceImportAfterCppTargets之间进行选择。