首页 > 解决方案 > 如何为 Nuget 工件配置 Azure Devops Pipeline 包名称

问题描述

我们设置了一个现有的 Devops 管道,以使用 .Net Core 任务将 .Net Standard 类库打包并推送为 Nuget 工件。我们正在尝试用使用 Nuget 任务的管道替换它——我们正在使用 Nuget Pack 和 Nuget Push。我们无法让 Nuget 任务创建的包名称与我们在使用 .Net Core 任务打包时使用的包名称相匹配。

.Net Core 任务从 .csproj 文件中指定的 PackageId 中提取包名称。Nuget 任务似乎是从项目的程序集名称中提取它。有没有办法用 Nuget 任务配置 pacakge 名称?

新的 devops 管道

标签: azure-devopsnugetazure-pipelinespipelineartifact

解决方案


对于您的问题,我没有具体的答案,但是如果您正在处理 Net core 项目,那么对我有用的是设置项目以在构建任务上生成 nuget。在 csproj 中查找GeneratePackageOnBuild。这将在每次使用您的 csproj 上的属性构建时创建 nuget。

如果您不设置AssemblyName,则包名称将与您的 csproj 文件名相同。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Company>ACME inc</Company>
    <Version>1.1.0</Version>
    <AssemblyName>YourPackageID</AssemblyName>
  </PropertyGroup>

   <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
   </PropertyGroup>
</Project>

您不需要打包任何东西,只需将 nupkg 推送到构建目录中即可。Nuget Push 任务只需要这样的正则表达式 - 路径可能包含多个正则表达式:

$(Build.SourcesDirectory)/**/**/*.nupkg;$(Build.SourcesDirectory)/**/**/**/*.nupkg;

推荐阅读