【问题标题】:Azure Pipelines - use tool downloaded from NuGet in .NET Core projectAzure Pipelines - 在 .NET Core 项目中使用从 NuGet 下载的工具
【发布时间】:2019-06-26 12:43:17
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net-core azure-devops azure-pipelines gitversion


    【解决方案1】:

    您可以安装 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
    

    顺便说一句,微软托管的 VS2017/2019 代理包括安装的 GitVersion 4.0.0。

    【讨论】:

    • 这是有效的解决方法,但我更喜欢使用特定版本的 GitVersion。
    【解决方案2】:

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

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

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

    dotnet nuget locals all -l
    

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

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2018-05-21
      相关资源
      最近更新 更多