iis - 发布 .NET Web 应用程序后是否执行任何 MSBuild 目标?
问题描述
在 Visual Studio 2019 中发布 .NET Web 应用程序后,我需要执行命令。
我尝试在 .csproj 和 .pubxml 中遵循自定义目标,但在发布发生后没有打印任何内容:
解决方案
根据您的描述,我认为您正在使用 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>
睡眠时间取决于项目的大小以及发布文件夹所需的时间。
这个功能在我这边运行良好。
推荐阅读
- ansible - Ansible,在剧本中使用可变内容时出现问题
- google-chrome - 当应用程序应该支持其他浏览器(如 chrome)时应该测试什么?
- r - 在 visIgraphnetwoork 中添加主标题
- jenkins - Jenkins 作业在循环中连续运行
- php - AD/LDAP:单击按钮登录后出现“无效的用户名/密码”
- typo3 - TYPO3 版本 10 多域
- sql - 查找具有特定日期格式的记录
- excel - VBA VLookup 方法不适用于数字和字符串
- sql-server - 将字符串编码为 UTF-8 格式
- java - 使用“ITestListener”或“IReporter”监听器生成范围报告