2012-02-10 5 views
0

perlからMsbuildコマンドを実行することは可能ですか?Perlを使ってMsbuildで書かれたビルドスクリプトを呼び出す

私はすべてのVisual Studio 2010環境変数を取得するために使用し、次にMsbuildコマンドを直接呼び出します。

function SetVS2010() 

{ 

    $vs100comntools = (Get-ChildItem env:VS100COMNTOOLS).Value 

    $batchFile = [System.IO.Path]::Combine($vs100comntools, "vsvars32.bat") 

    Get-Batchfile $BatchFile 

    [System.Console]::Title = "Visual Studio 2010 Windows PowerShell" 

} 



function Get-Batchfile($file) 

{ 

    $cmd = "`"$file`" & set" 

    cmd /c $cmd | Foreach-Object { 

     $p, $v = $_.split('=') 

     Set-Item -path env:$p -value $v 

    } 

} 


SetVS2010 

Function Update-VersionInfo { 
    &"$MsbuildBinPath\Msbuild.exe" $MSBuildFile /t:UpdateVersionInfo $Logger $AllErrLogger 
} 

これは大きな助けとなりました。同じものをperlでアーカイブできるかどうか?

答えて

1

perlにはsystem()(サブシェルでコマンドを実行)やexec()(実行中のプロセスを置き換えるコマンドを実行する)のような標準的な機能があります。他のプロセス処理機能は、Win32 :: namespaceにあります。上記の機能を組み合わせてMsbuildコマンドを実行できないようにすべき理由はありません。

あなたは、使用しているものと似たトリックでコマンドの環境を操作しなければなりません。そうしないと、%ENVを使ってperlプロセスの環境を操作するだけで目的の効果を得ることができます。

関連する問題