Azure Pipelines - 在 .NET Core 项目中使用从 NuGet 下载的工具

Azure Pipelines - use tool downloaded from NuGet in .NET Core project

如果 .NET Core 项目从 NuGet GitVersion.CommandLine 获取可执行文件,我如何在 Azure Pipelines 中配置构建步骤以执行命令 GitVersion.exe?

在 .NET Framework 中可以在路径 packages/GitVersion.CommandLine/**/GitVersion.exe 中找到可执行文件,但在 .NET Core 包目录中不存在。

您可以安装 Git Version 扩展并将其添加到您的管道中,它也适用于 .NET Core 项目。

扩展程序生成 2 个变量:

GitVersion.NuGetVersion
GitVersion.SemVer

您可以在接下来的步骤中使用这些变量:$(GitVersion.SemVer)

例如(在 yaml 中):

steps:

- task: GitVersion@4
  displayName: GitVersion

- powershell: 'Write-Host $(GitVersion.SemVer)'

结果:

如果要使用特定版本,可以添加命令行任务并使用chocolaty安装:

choco install gitversion.portable

顺便说一句,Microsoft Hosted VS2017/2019 Agents 包括安装的 GitVersion 4.0.0。

.NET Core 2引入了Nuget缓存的概念(有点类似于GAC)。所有包只下载一次到特定文件夹并重复用于所有项目。它是必需的,因为 .NET Core 2.x-3.x 现在由数百个包组成。所以现在的框架非常细化,你可以使用你需要的或者 "aggregating" 包,例如microsoft.aspnetcore.all(引用所有内容)。

现在您可以在您的用户帐户下找到已安装的 Nuget 包,例如: C:\Users\<你的用户名>.nuget\packages.

根据 this 文档,您可以 运行 此命令将列出您计算机上的所有 Nuget 文件夹:

dotnet nuget locals all -l

如果您无法访问此文件夹或您不知道构建代理上的用户名,我建议您下载该工具并将其签入您的 Git 存储库,这样您就有了一个固定的路径。