Visual Studio:在后台运行构建后事件

我有一个 powershell 脚本,我想在 Visual Studio 中触发构建后事件时运行该脚本。但是,重要的是脚本在后台运行并且在运行时不会暂停构建过程。另一个要求是我必须能够在目录名称中带有空格的项目目录中传递。

我一直很难让两者同时发生。经过多次试验和错误,我找到了在后台运行 powershell 脚本的复杂解决方案,但它不适用于目录名称中的空格。这是我目前正在做的事情,但我对完全不同的事情持开放态度,因为这似乎过于复杂:

在 Visual Studio 的构建后事件中:

powershell -ExecutionPolicy Unrestricted start-process " $(ProjectDir)scriptspost-build.cmd" -ArgumentList $(TargetDir),$(ConfigurationName),$(ProjectDir)

这是post-build.cmd:

START /B CMD /C CALL "Powershell.exe" -ExecutionPolicy Unrestricted -file %3scriptspost-build.ps1 %1 %2 %3

我尝试在参数周围添加引号,但是当我这样做时,我不断从 Powershell 收到各种错误(即缺少终止符 '"')。

请原谅我的无知,我是 Powershell 和 Visual Studio 的新手。

stack overflow Visual Studio: Run a post build event in the background
原文答案

答案:

作者头像

您可以在构建后事件中直接运行 Powershell 脚本。例如,我这样做是为了在构建完成后对可执行文件进行数字签名。这是我在后期构建步骤中使用的命令行:

powershell.exe -file "$(SolutionDir)sign.ps1" "$(TargetPath)" "....installscertsDigitalSignature.pfx"

请注意,不需要使用批处理文件。