Присвоение имени пакету NuGet с помощью YAML

#azure-devops #nuget #azure-pipelines

#azure-devops #nuget #azure-конвейеры

Вопрос:

У меня есть сборка yaml на Azure DevOps для упаковки и переноса нескольких csproj проектов в один пакет NuGet.

Моя проблема заключается в том, что имя пакета называется как один из проектов. Я знаю о nuspec файле, но я не знаю, переопределит ли это мой механизм управления версиями, и я хотел бы управлять своим именованием из одного места — моего файла сборки!

Можно ли это сделать?

 - task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: pack
    arguments: --include-source --include-symbols
    packagesToPack: '**/*.csproj'    
    versioningScheme: byBuildNumber
  

Ответ №1:

Вы можете использовать эту команду dotnet pack -p:PackageID=myId , поэтому в YAML это было бы:

 - task: DotNetCoreCLI@2
  displayName: "dotnet pack"
  inputs:
    command: custom
    custom: pack
    arguments: >
      $(System.DefaultWorkingDirectory)/stackoverflow/52-nuget-packager/SampleApp.csproj
      --no-build
      -p:PackageId=myId
      --output $(Build.ArtifactStagingDirectory)
      -p:PackageVersion=2.1.0
      -p:Configuration=$(buildConfiguration)
    packagesToPack: '**/*.csproj'
    versioningScheme: 'off'
    outputDir: '$(Build.ArtifactStagingDirectory)'
  

однако, чтобы это работало, вам необходимо использовать пользовательскую команду. Но я не уверен, как это будет вести себя, когда у вас есть несколько проектов для упаковки, и у меня нет такого примера под рукой. Вы можете найти эту тему интересной.