当--no生成被传递时,如何跳过.csproj中的Target



运行dotnet publish --no-build ...时,如何停止.csproj文件中<Target><Exec>标记中的命令运行?我可以停止使用整个<Target>部分吗?

样品:

<Target Name="BuildSpa" BeforeTargets="Build" AfterTargets="ComputeFilesToPublish" Condition="'$(Configuration.ToUpper())' == 'RELEASE'">
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build" />
</Target>
CLI参数--no-build将msbuild属性NoBuild设置为true:
public static readonly Option NoBuildOption = new Option<bool>("--no-build", LocalizableStrings.NoBuildOptionDescription)
.ForwardAs("-property:NoBuild=true");

dotnet文档也将其命名为:

可以通过将--no-build属性传递给dotnet.exe来避免这种情况,这相当于在项目文件中设置<NoBuild>true</NoBuild>以及在项目文件中将<IncludeBuildOutput>false</IncludeBuildOutput>设置在内。

您应该能够在Condition检查中测试该属性:

<Target ... Condition="'$(Configuration.ToUpper())' == 'RELEASE' and '$(NoBuild)' != 'true' ">
...

最新更新