0

是否可以从 perl 执行 Msbuild 命令?

在 powershell 中,我使用检索所有 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中存档?

4

1 回答 1

1

perl 具有标准功能,例如 system()(在子 shell 中执行命令)和 exec()(执行替换正在执行进程的命令)。其他进程处理工具位于 Win32:: 命名空间中。我看不出你为什么不能使用上述工具的组合来运行 Msbuild 命令。

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

于 2012-02-10T10:20:19.023 回答