EDITBIN 在 Microsoft 托管代理中的位置

Location of EDITBIN in Microsoft-hosted agents

如何找到 C# 项目的输出 DLL 的 EDITBIN on a Microsoft-hosted agent? I'm trying to use it to set SWAPRUN 位置。

对于本地构建,我使用 $(DevEnvDir)\..\..\VC\Tools\MSVC.14.26428\bin\Hostx86\x86\editbin。但是,在 Microsoft 托管的代理上,DevEnvDir 未定义,我也不知道路径的其余部分是否有效?

一个相关的额外问题是我通常在哪里可以找到 Microsoft 托管代理的文件结构?

editbin.exe 存在于 Hosted VS2017 代理中:

C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\SDK\ScopeCppSDK\VC\bin\editbin.exe

要获取文件夹结构,您可以使用 powershell 脚本,例如:

cd "C:\Program Files (x86)\Microsoft Visual Studio17"
Get-childItem | tree

而且如果要像C:\一样检查根目录的结构,会花费很多时间。

出于自动化的原因,可能会自动 select editbin 的正确变体。我想出了以下 PS 脚本:

# define search parameters
$hostsys = "\hostx64"
$target = "\x86"
$basepath = "C:\Program Files (x86)\Microsoft Visual Studio19\"

# determine paths to the editbin executable and select the preferred one
$findings = Get-childItem -Path $basepath -Recurse -Include "editbin.exe"
$editbinexe = ""

Write-Host "`nEditbin candidates:"
foreach ($item in $findings) {
    [string]$directory = $item.DirectoryName.ToLower()
    Write-Host "$directory"
    
    if ($directory.Contains($hostsys) -and $directory.Contains($target))
    {
        $editbinexe = $item.FullName
    }
}

if ([string]::IsNullOrEmpty($editbinexe))
{
    Write-Host "`nEditbin was not found`n"
    exit -120
}

# execute the found executable

Write-Host "`nUsing editbin ""$editbinexe""`n"
Set-Location .\<the path to executable>
& $editbinexe /LARGEADDRESSAWARE "<the executable>"