PostBuild 事件陷入无限循环

问题描述 投票:0回答:1

我正在尝试定义一个

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

c# .net-core csproj
1个回答
0
投票

/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" />

© www.soinside.com 2019 - 2024. All rights reserved.