如果.NET Core 项目从 NuGet GitVersion.CommandLine获取可执行文件,如何在 Azure Pipelines 中配置构建步骤以执行命令 GitVersion.exe ?
在 .NET Framework 中可以在 path 中找到可执行文件packages/GitVersion.CommandLine/**/GitVersion.exe
,但在 .NET Core 包目录中不存在。
如果.NET Core 项目从 NuGet GitVersion.CommandLine获取可执行文件,如何在 Azure Pipelines 中配置构建步骤以执行命令 GitVersion.exe ?
在 .NET Framework 中可以在 path 中找到可执行文件packages/GitVersion.CommandLine/**/GitVersion.exe
,但在 .NET Core 包目录中不存在。
您可以安装Git 版本扩展并将其添加到您的管道中,它也适用于 .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 现在由数百个包组成。因此,现在的框架非常精细,您可以使用所需的内容或“聚合”包,例如 microsoft.aspnetcore.all(它引用所有内容)。
所以现在您可以在您的用户帐户下找到已安装的 Nuget 包,例如:C:\Users\<您的用户名>.nuget\packages。
根据此文档,您可以运行此命令,该命令将列出您机器上的所有 Nuget 文件夹:
dotnet nuget locals all -l
如果您无法访问此文件夹,或者您不知道构建代理上的用户名,我建议您下载该工具并将其签入您的 Git 存储库,以便您有一个固定的路径。