目前,您无法在 Visual Studio 2022 中轻松调试二进制 PowerShell 模块(不是代码!)。
我不想手动打开 PowerShell 会话、更改项目的位置、附加调试器、导入我的模块并运行我的函数之一,而是希望自动打开一个新的 PowerShell 并执行所有这些操作使用 MSBuild
PostBuild
步骤导入我的模块。
以下 .NET 项目文件条目不起作用:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="Start-Process -FilePath pwsh -ArgumentList "-NoExit -Command Set-Location '$(OutputPath)'"" />
</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
exec
任务启动新的交互式 PowerShell 窗口,则需要使用 start
命令指示 CM 创建新进程,而不是在同一窗口内切换到 PowerShell 并发主机:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="start pwsh" />
</Target>