首页 > 解决方案 > 发布 .NET Web 应用程序后是否执行任何 MSBuild 目标?

问题描述

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

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

在此处输入图像描述

标签: iismsbuildvisual-studio-2019publishtarget

解决方案


根据您的描述,我认为您正在使用 Net Framework Web 项目。由于 Framework web 发布不包含名为Publish. 但是Net Core web publish有它。

对于Net Framework 网络发布,它是特殊的。在发布文件夹生成之后没有运行这样的目标。意思是框架web publish下的所有target都和BeforePublish一样。这很烦人。

net core web publish 相比,旧框架 web publish 确实存在很多缺陷。

但是,我有一个功能可以使目标在发布文件夹生成后执行。

解决方案

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

有一个名为的任务AsyncExec,可以使用以下目标执行。在运行时,它将继续执行发布的后续步骤。只需让命令休眠一段时间,等待发布文件夹生成,即可修改发布文件夹的内容。

2)xxx.pubxml在文件下写这个:

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

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

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

这个功能在我这边运行良好。


推荐阅读