2012-02-10 69 views
0

是否可以从Perl执行Msbuild命令?使用Perl调用在Msbuild中编写的构建脚本

在我用来检索所有Visual Studio 2010环境变量的powershell中,然后直接调用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()(执行子shell中的命令)和exec()(执行取代正在执行的进程的命令)等标准设施。其他进程处理工具位于Win32 :: namespace中。我看不出为什么你不能使用上述设施的组合来运行Msbuild命令。

您必须用类似于您正在使用的技巧来制作命令的环境,或者您可以通过简单地操作perl进程的环境(通过访问%ENV)来获得所需的效果。