2013-01-10 10 views
19

私は現在、ハックアップされたデプロイメントシステムをもう少しエレガントなものに再構築しようとしています - Octopus。そうすることで、リリースビルドが実行されたときにVSがプロジェクトをパッケージ化するようにしようとしています。さて、この素晴らしいPowerShellスクリプトを書いて作業していますが、msbuildスクリプトからEXECしようとすると、ビジュアルスタジオがハングアップするだけです!Exec powershell.exeがmsbuildをハングアップ

最初は、シェルのものがエスケープされる方法を疑っていましたが、私はそれを簡単に簡略化しましたが、まだフリーズしています。

はここでは関係の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. 

を、それだけで永遠にハングします。どんな提案も大歓迎です。

答えて

28

わかりません。 少しプレイした後、それはプロパティグループの拡張についてのようです。 PowerShellExeの値に新しい行を追加します。 これは正常に動作します:

+0

まあまあ私は確かに来ていませんでした。とにかく、あなたは頭の爪を打つ。私はこれを数時間過ごした..それはいつも最後に何かばかげている:)非常にありがとう! – monkeybuffer

+0

np私の喜び。 –

+0

私はこれと数時間戦った。私はちょうど "msbuildファイルに改行を入れないでください"よりも良い答えがあったと思います。余分なセミコロンや何かが最終的にこれを回避するのだろうか?基本的には、改行を含む複数の行にまたがるときに終端行をpowershellのように入力するのを待っていると思います。末尾に余分な行を入れる必要があります。いずれにしても、少なくともこれを回避するには何ができるのか?私はこの種のもので私の車輪を回転させることは嫌いです。 – EdFred

0

試してください:あなたは答えを好きになるだろう

<Exec Command='$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command "& {Get-ChildItem}"' /> 
+1

いいえサイコロです。正確なコピー/ペーストでは構文エラーが発生しますが、 "&"を "&"でエスケープした後でもまだぶら下がっています:( – monkeybuffer

関連する問題