You need to enable JavaScript to run this app. 如何在.NET Core MVC项目中添加发布后执行PowerShell脚本的事件
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core MVC项目中添加发布后执行PowerShell脚本的事件

配置调整方法

直接替换你现有配置里的CustomActionsAfterPublish目标节点内容即可,完整配置如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <ApplicationIcon />
    <OutputType>Exe</OutputType>
    <StartupObject />
    <UserSecretsId>f572b776-d17e-4de4-xxxx-xxxxxxxxxxx</UserSecretsId>
  </PropertyGroup>
  <Target Name="CustomActionsAfterPublish" AfterTargets="AfterPublish">
    <Message Text="正在执行发布后脚本pb.ps1" Importance="high" />
    <Exec 
      WorkingDirectory="$(MSBuildProjectDirectory)"
      Command="powershell -NoProfile -ExecutionPolicy Bypass -File &quot;$(MSBuildProjectDirectory)\pb.ps1&quot;" />
  </Target>
</Project>

参数说明:

  • $(MSBuildProjectDirectory)是MSBuild内置变量,指向当前项目文件所在的根目录,避免相对路径定位错误
  • -NoProfile 跳过加载用户的PowerShell配置文件,加快执行速度,避免无关配置影响脚本
  • -ExecutionPolicy Bypass 临时绕过执行策略限制,仅对本次脚本执行生效
  • &quot;是XML中的转义双引号,用来包裹带空格的路径避免解析错误

执行策略相关说明

  • 按照上面的配置加了-ExecutionPolicy Bypass参数的情况下,不需要额外修改系统全局的PowerShell执行策略,不会影响系统其他设置
  • 如果不加该参数,默认Windows的PowerShell执行策略为Restricted,会禁止执行所有.ps1脚本,导致发布后事件报错
  • 如果需要跨平台在Linux/macOS环境下发布,把命令里的powershell改成pwsh,路径分隔符换成/即可

额外调试建议

如果脚本执行不符合预期,可以在发布时加-v d参数输出详细的构建日志,查看脚本执行的具体报错信息。如果需要给脚本传参,直接跟在文件路径后面即可,比如需要把发布目录传给脚本,可以写成:

powershell -NoProfile -ExecutionPolicy Bypass -File &quot;$(MSBuildProjectDirectory)\pb.ps1&quot; -PublishPath &quot;$(PublishDir)&quot;

内容的提问来源于stack exchange,提问作者lonelydev101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 15:15:08