如何启动 PowerShell 作为 MSBuild 中的构建后步骤?

问题描述 投票:0回答:1

目前,您无法在 Visual Studio 2022 中轻松调试二进制 PowerShell 模块(不是代码!)

我不想手动打开 PowerShell 会话、更改项目的位置、附加调试器、导入我的模块并运行我的函数之一,而是希望自动打开一个新的 PowerShell 并执行所有这些操作使用 MSBuild

PostBuild
步骤导入我的模块。

以下 .NET 项目文件条目不起作用:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
  <Exec Command="Start-Process -FilePath pwsh -ArgumentList &quot;-NoExit -Command Set-Location '$(OutputPath)'&quot;" />
</Target>

MSBuild 返回以下错误:

1>The command "Start-Process" is either misspelled or could not be found.
1>My.csproj(23,5): error MSB3073: The command "Start-Process -FilePath pwsh -ArgumentList "-NoExit -Command Set-Location 'bin\Debug\net8.0-windows\'"" exited with code 9009.

从错误中我可以看到执行命令的不是 PowerShell,而是控制台。

如何使用 MSBuild 从构建后步骤成功打开新的 PowerShell 窗口?

编辑

如果我只是运行

<Exec Command="pwsh" />
(应该可以正常工作),我会收到以下构建错误:

1>PowerShell 7.4.2
1>[31;1m´╗┐: [31;1mThe term '´╗┐' is not recognized as a name of a cmdlet, function, script file, or executable program.[0m
1>[31;1m[31;1mCheck the spelling of the name, or if a path was included, verify that the path is correct and try again.[0m
1>PS C:\MyPSModule> ´╗┐PS C:\MyPSModule>
1>C:\MyPSModule\MyPSModule.csproj(36,5): error MSB3073: The "pwsh" command exited with code 1.
msbuild windows-console msbuild-target powershell-7.4
1个回答
0
投票

如果要从 MSBuild

exec
任务启动新的交互式 PowerShell 窗口,则需要使用
start
命令指示 CM 创建新进程,而不是在同一窗口内切换到 PowerShell 并发主机:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
  <Exec Command="start pwsh" />
</Target>
© www.soinside.com 2019 - 2024. All rights reserved.