visual-studio-2010 - microsoft - visual studio installer
Exec powershell.exe cuelga msbuild (2)
No estoy seguro de que te va a gustar la respuesta. Después de un poco de juego, parece ser sobre la expansión del grupo de propiedades. Pones una nueva línea en el valor de PowerShellExe. Esto funciona bien:
<PropertyGroup>
<PowerShellExe Condition=" ''$(PowerShellExe)''=='''' ">$(WINDIR)/System32/WindowsPowerShell/v1.0/powershell.exe</PowerShellExe>
</PropertyGroup>
<Target Name="AfterBuild">
<Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy bypass -command "&{get-childitem}"" />
</Target>
Actualmente estoy buscando reajustar nuestro sistema de implementación pirateado con algo un poco más elegante: Octopus. Al hacerlo, intento que VS empaquete un proyecto cuando se ejecuta una versión de lanzamiento. Bueno, tengo este sofisticado script de powershell escrito y en funcionamiento, pero cuando intento ejecutar EXEC desde el script de msbuild, ¡el visual studio simplemente se cuelga!
Al principio, sospeché la forma en que se escapaban las cosas en el caparazón, pero lo simplifiqué ridículamente, y todavía se congela.
Aquí está el código relevante de 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>
Todo lo que debe hacer es dar una lista de directorios. Llamar a esto desde cmd.exe funciona bien:
C:/Users/smithj>%WINDIR%/System32/WindowsPowerShell/v1.0/powershell.exe -noninteractive -executionpolicy unrestricted -command dir
Probando esto
msbuild Solution.sln /p:Configuration=Release
Me dice esto:
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.
Después de eso, simplemente se cuelga para siempre. Cualquier sugerencia es bienvenida.
Tratar:
<Exec Command=''$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command "& {Get-ChildItem}"'' />