我有一个MSBuild任务,用于在解决方案文件中构建特定项目。看起来像这样:
<Target Name="Baz">
<MSBuild Projects="Foo.sln" Targets="bar:$(BuildCmd)" />
</Target>
在命令行中,我可以将
BuildCmd
设置为Rebuild
或Clean
,它可以按预期工作:但是我要用哪个词来设置
BuildCmd
以便进行构建?我试过了Build
和Compile
,只是将其保留为空白或未定义,但是我总是遇到错误。最佳答案
我了解到您想使用特定命令构建目标: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
只要确保目标存在于解决方案或项目文件中即可。