gpt4 book ai didi

asp.net - 在 MSBuild 期间运行 powershell 脚本

转载 作者:行者123 更新时间:2023-12-01 22:28:05 25 4
gpt4 key购买 nike

我有一个 .NET Framework 4.5.2 WebAPI2 项目。在 Visual Studio 中构建项目时,我希望在每次构建之前运行我编写的 powershell 脚本。如果 powershell 脚本以任何非零代码退出,我希望构建失败并且来自 powershell 脚本的错误消息在 Visual Studio 输出中可见。

这就是到目前为止我修改 csproj 文件的方式:

<Project ToolsVersion="12.0" DefaultTargets="MyCustomTarget;Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Target Name="MyCustomTarget">
<PropertyGroup>
<PowerShellExe Condition=" '$(PowerShellExe)'=='' ">
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
</PowerShellExe>
<ScriptLocation Condition=" '$(ScriptLocation)'=='' ">
C:\Code\MyScript.ps1
</ScriptLocation>
</PropertyGroup>
<Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command &quot;&amp; { $(ScriptLocation) } &quot;" />
</Target>

为了简单起见,我的脚本如下:

if(((get-date -Format "mm") % 2) -eq 0){ exit 0 } else { write-error "The minute is not equally divisible by 2.";exit 1 }

但是,当我去构建项目时,我现在看到我的 powershell 脚本在记事本中打开,并且构建停止,直到我关闭记事本。关闭后,我收到错误,但没有找到解决该错误的任何方法。任何帮助将不胜感激。

The command " 
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
-NonInteractive -executionpolicy Unrestricted -command "& {
C:\Code\MyScript.ps1
} "" exited with code 9009. MyWebApi2Project C:\Code\MySolution\MyWebApi2Project\MyWebApi2Project.csproj 269

最佳答案

通过更改以下内容,我能够使一切正常工作。这是基于 Apoorva 的答案:

<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" /><!-- existing line, not part of answer -->
<Exec Command="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -executionpolicy Unrestricted -command &quot;&amp; { .\MyScript.ps1 } &quot;" LogStandardErrorAsError="True" ContinueOnError="False" WorkingDirectory="$(MSBuildProjectDirectory)" />
</Target>

对我来说,包含 PowerShellExe 和 ScriptLocation 变量都会导致错误。删除这些行并剥离 Exec 行解决了这个问题。包含“ContinueOnError =“False””和“LogStandardErrorAsError =“True””可确保如果 powershell 脚本抛出非零退出代码,构建过程将停止。

关于asp.net - 在 MSBuild 期间运行 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com