我有一个MSBuild任务,用于在解决方案文件中构建特定项目。看起来像这样:

<Target Name="Baz">
  <MSBuild Projects="Foo.sln" Targets="bar:$(BuildCmd)" />
</Target>

在命令行中,我可以将BuildCmd设置为RebuildClean,它可以按预期工作:



但是我要用哪个词来设置BuildCmd以便进行构建?我试过了BuildCompile,只是将其保留为空白或未定义,但是我总是遇到错误。

最佳答案

我了解到您想使用特定命令构建目标:Build,Clean等。

这就是我要做的。

创建一个属性以接收您的构建命令,如果未指定则默认为Build

<PropertyGroup>
  <BuildCmd Condition=" '$(BuildCmd)' == ''">Build</BuildCmd>
</PropertyGroup>

之后,创建将使用参数中的指定目标启动MSBuild的目标:
<Target Name="Stackoverflow">
  <MsBuild Projects="Foo.sln" Targets="$(BuildCmd)" />
</Target>

然后使用target和BuildCmd参数调用您的MSBuild文件,如下所示:
msbuild msbuild.xml /t:Stackoverflow /p:BuildCmd=Clean

只要确保目标存在于解决方案或项目文件中即可。

10-01 19:34