Obecnie szukam możliwości ponownego połączenia naszego zhackowanego systemu wdrażania z czymś nieco bardziej eleganckim - Octopus. Czyniąc to, próbuję zmusić VS do spakowania projektu po uruchomieniu kompilacji wydania. No cóż, mam napisany i działający fantazyjny skrypt powershell, ale kiedy próbuję EXEC ze skryptu msbuild, visual studio po prostu wisi!Exec powershell.exe zawiesza się msbuild
Początkowo podejrzewałem, że w powłoce uciekł materiał, ale uprościłem go niedorzecznie i nadal się zawiesza.
Oto odpowiedni kod 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>
Wszystko należy zrobić, to dać listę katalogów. Wywołanie to od cmd.exe działa dobrze:
C:\Users\smithj>%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -executionpolicy unrestricted -command dir
Trying to:
msbuild Solution.sln /p:Configuration=Release
Pobiera mi to:
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.
Po tym, to po prostu wisi na zawsze. Wszelkie sugestie są mile widziane.
Cóż, na pewno nie widziałem, że nadchodzi.Jesteś absolutnie rację.Nawiasem mówiąc to nie jak nowe linie w komendzie właściwości, w każdym razie trafiłeś w sedno, spędziłem wiele godzin na tym ... To zawsze coś głupiego na końcu :) Dziękuję bardzo! – monkeybuffer
np. Moja przyjemność. –
Walczyłem z tym przez wiele godzin. Szkoda, że nie było lepszej odpowiedzi niż po prostu "nie umieszczaj podziałów linii w pliku msbuild". Zastanawiam się, czy dodatkowy średnik lub coś ostatecznie się z tym obejdzie? Zasadniczo, myślę, że czeka na podanie linii końcowej, tak jak w PowerShell, kiedy rozciągasz wiele linii z liniowymi przerwami, musisz na końcu umieścić dodatkowy. Tak czy inaczej, co za ulga, że mogę przynajmniej obejść to. Nienawidzę obracać kółek na tego rodzaju rzeczy. – EdFred