我正在尝试定义一个
PostBuildEvent
来发布项目,然后构建 docker 镜像:
<Target Name="DockerBuild" AfterTargets="PostBuildEvent">
<Message Text="========== PostBuildEvent - Building Docker Image ==========" Importance="high" />
<Exec Command="dotnet publish $(ProjectDir)\MyProject.csproj -c Release -o ./app/publish /p:UseAppHost=true /p:PostBuildEvent=" />
<Exec Command="docker build -t myimagename ." />
<Exec Command="docker image prune --force" />
</Target>
但是,这似乎会触发构建事件的无限循环。
我知道
dotnet publish
也会进行构建,但我认为 /p:PostBuildEvent=
参数会否定这一点。
如何配置发布命令以跳过
PostBuildEvent
?
/p:PostBuildEvent=
将 $(PostBuildEvent)
属性设置为 ''
,这与重置目标 PostBuildEvent
* 有很大不同。请参阅:MSBuild CLI 参考。
我建议向目标添加 Condition 属性并进行设置。
<!-- Target will run if RunDockerBuild is ''(default), 'true', or anything else. -->
<Target Name="DockerBuild" AfterTargets="PostBuildEvent"
Condition="'$(RunDockerBuild)' != 'false'">
<Message Text="========== PostBuildEvent - Building Docker Image ==========" Importance="high" />
<!--
Update /p:PostBuildEvent= to /p:PostBuildEvent=false
so that it matches the new condition above.
-->
<Exec Command="dotnet publish $(ProjectDir)\MyProject.csproj -c Release -o ./app/publish /p:UseAppHost=true /p:PostBuildEvent=false" />
<Exec Command="docker build -t myimagename ." />
<Exec Command="docker image prune --force" />
</Target>
*:可以使用
PostBuildEvent
重置目标 <Target Name="PostBuildEvent" />
。