Blu*_*BSH 13 azure-devops azure-pipelines azure-pipelines-tasks visual-studio-2022
我在构建管道中有一个 Azure DevOps 2020.1.1 的本地实例 我有一个构建解决方案任务,在构建 .NET6 项目时,该任务将 Visual Studio 版本设置为“最新”,这失败了,当然不支持 .NET6因为它似乎识别的最新版本是 2019,所以 2022 甚至没有列在 Visual Studio Verios 下拉列表中。
我已在服务器上安装了 Visual Studio 2022,构建代理可以看到它(它们已更新到最新的代理版本)。
如何让最新的 Visual Studio 版本在构建解决方案任务中显示为 2022?据我所知,微软还没有为此发布任何本地服务器的更新,有没有办法添加它或让它找到它?
Gün*_*ein 11
技巧是使用 MSBUILD 任务并从版本切换到指定位置,然后插入 VS2022 的 msbuild.exe 的路径,例如 C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\ msbuild.exe。
编辑:
另一种方法是使用命令行任务并直接调用可执行文件。如果您需要完整的 VS 开发环境来构建应用程序,请在“工具”字段中指定可执行文件的路径,例如“C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.com”并在参数字段中指定解决方案和配置,例如“MySolution.sln /build“Release|Any CPU”。
您可以自己构建 Microsoft 的任务,并使用 tfx-cli 将这些任务直接推送到您的项目集合中。您还可以创建包含这些更新任务的扩展并将其安装到您的集合中。
要构建任务,您可以在 PowerShell 7 中运行此脚本:
$tasksToBuild = @("VSBuildV1", "VsTestV1", "VsTestV2", "VsTestPlatformToolInstallerV1",
"MSBuildV1", "DotNetCoreInstallerV1", "DotNetCoreCLIV2")
$outputDir = md _build -force
$extensionManifest = gc "vss-extension.json" | ConvertFrom-Json
$extensionManifest.contributions = @()
& git clone https://github.com/microsoft/azure-pipelines-tasks.git --quiet
cd azure-pipelines-tasks
& git config --local pager.branch false
$branches = & git branch -r
$version = (($branches | Select-String -pattern "(?<=origin/releases/m)\d+$").Matches) | %{ [int32]$_.Value } | measure-object -maximum
$version = $version.Maximum
& git reset --hard origin/releases/m$version
npm install
Write-Host "Building tasks..."
foreach ($task in $tasksToBuild)
{
Write-Host "Building $task..."
& node make.js build --task $task
Write-Host "Building $task done."
$taskDir = "$outputDir/$task"
copy "./_build/Tasks/$task" $taskDir -Recurse
Write-Host "Updating contributions..."
$extensionManifest.contributions += @{
"id" = "$task"
"type" = "ms.vss-distributed-task.task"
"targets" = @("ms.vss-distributed-task.tasks")
"properties" = @{
"name" = "_build/$task"
}
}
}
cd ..
$extensionManifest.version = "1.$version.0"
$extensionManifest | ConvertTo-Json -depth 100 | Out-File "vss-extension.json" -Encoding utf8NoBOM
& npm install tfx-cli -g
& tfx extension create --manifests vss-extension.dev.json vss-extension.json --output tasks.vsix
Run Code Online (Sandbox Code Playgroud)
从:
运行此脚本时,请确保文件夹中有可用的扩展清单。您可以查看此存储库的示例:
将 的内容替换build.ps1为上面的脚本,使用您自己的发布者和扩展 ID 更新 vss-extension.*.json 文件,它应该会为您生成一个扩展。
这样,您将获得 Microsoft 在最新版本的 Azure DevOps(云)中发布的确切任务的副本。
| 归档时间: |
|
| 查看次数: |
8725 次 |
| 最近记录: |