我正在尝试使用Powershell Extension for Visual Studio Enterprise 2017来构建脚本模块及其测试,并在Visual Studio生成项目时运行自己的自定义生成脚本。
我有一个Powershell脚本,该脚本将为我构建模块清单文件。我可以从CI系统或开发人员机器的提示符下轻松调用此脚本。我想将该脚本称为Post-build事件,以便我可以按自己的方式重建模块,因为我不想手动跟踪/更新某些清单属性。
因此,在我的项目属性中,添加了以下事件:
& 'C:\Path\To\My\Modules\Build-ALLModules.ps1' -moduleName 'MyModule.psm1'
我的构建成功,但是在输出日志中我得到:
File C:\Path\To\My\Modules\Build-ALLModules.ps1 cannot be loaded because running scripts is disabled on this system.
我之前已经读过about_Execution_Policies
,所以我尝试在运行脚本之前在后构建事件步骤中设置执行策略:
Set-ExecutionPolicy Unrestricted -Force; & 'C:\Path\To\My\Modules\Build-ALLModules.ps1' -moduleName 'MyModule.psm1'
哪一个失败并出现硬错误,阻止构建:
"Set-ExecutionPolicy Unrestricted; & 'C:\Path\To\My\Modules\Build-ALLModules.ps1' -moduleName 'MyModule.psm1'" is an invalid value for the "Command" parameter of the "RunPowerShellCommand" task. Multiple items cannot be passed into a parameter of type "Microsoft.Build.Framework.ITaskItem".
我现在不确定如何完成此任务。通过将powershell可执行文件作为构建事件运行,我已经能够从Visual Studio构建中运行PS脚本,然后我可以指定–ExecutionPolicy Bypass
并运行任意命令或脚本文件。
Powershell项目: