是否有任何 MSBuild 目标在发布 .NET Web 应用程序后执行?

Is there any MSBuild target that is executed after publishing a .NET web application?

我需要在 Visual Studio 2019 年发布 .NET Web 应用程序后执行命令。

我尝试在 .csproj 和 .pubxml 中遵循自定义目标,但发布后没有打印任何内容:

根据您的描述,我认为您使用的是 Net Framework Web 项目。 Since Framework web publish 不包含名为 Publish 的默认目标。但是 Net Core web publish 有。

对于Net Framework web publish来说比较特殊。 发布文件夹生成后没有这样的目标运行。意思是web publish框架下的所有target都像BeforePublish一样。 挺烦人的。

与net core web publish相比,老框架web publish确实有很多缺陷

不过,我有一个功能可以让target在publish文件夹生成后执行

解决方案

1) 首先,你应该安装一个名为 MSBuild.Extension.Pack 的 nuget 包,它是 msbuild 任务的额外扩展。

有一个名为 AsyncExec 的任务,它可以使用以下目标执行。当它是运行时,它将继续执行发布的后续步骤。你只需要让命令休眠一会儿,等待publish文件夹生成,就可以修改publish文件夹的内容了..

2)xxx.pubxml文件下写:

<Target Name="custom step" AfterTargets="GatherAllFilesToPublish">

    <AsyncExec Command="powershell.exe sleep 2;powershell.exe -file xxxxx"></AsyncExec>
          
</Target>

休眠时间取决于您项目的大小以及发布文件夹所需的时间。

这个功能在我这边很好用