我目前正在考虑用更优雅的东西 - Octopus 重新构建我们被黑客攻击的部署系统。在这样做时,我试图让 VS 在运行发布版本时打包一个项目。好吧,我已经编写并运行了这个精美的 powershell 脚本,但是当我尝试从 msbuild 脚本执行时,Visual Studio 就挂了!
起初我怀疑东西在 shell 中的逃逸方式,但我荒谬地简化了它,它仍然冻结。
这是相关的 MsBuild 代码:
<PropertyGroup>
<PowerShellExe Condition=" '$(PowerShellExe)'=='' ">
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
</PowerShellExe>
</PropertyGroup>
<Target Name="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command get-childitem" />
</Target>
它应该做的就是提供一个目录列表。从 cmd.exe 调用它可以正常工作:
C:\Users\smithj>%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -executionpolicy unrestricted -command dir
试试这个:
msbuild Solution.sln /p:Configuration=Release
得到我这个:
AfterBuild:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\\tf.exe" che
ckout Package.nuspec
Package.nuspec
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
-NonInteractive -executionpolicy Unrestricted -command dir
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
在那之后,它就永远挂起。欢迎任何建议。