Версия зависимостей для NuGet сгенерирована неверно в Azure конвейере. NET Framework Project - PullRequest
0 голосов
/ 03 февраля 2020

В моем Azure конвейере я создаю пакет NuGet для проекта. Net Framework. Пакет NuGet версионирован правильно с помощью инструмента gitversion, который изменяет файл GlobalAssemblyInfo.cs. Этот файл GloablAssembly используется для создания версии пакета Nuget и библиотек DLL, сгенерированных как выходные данные.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я упаковываю проект, давайте назовем его A, который имеет зависимость проекта от B, зависимости проекта включите его в файл Nuspe c сгенерированного NuGet, но указанная в файле Nuspe c версия неверна . Важно помнить, что NuGet, Dlls et c получают правильную версию, но зависимость, определенная в файле Nuspe c, получает неправильную версию.

Эта проблема возникает только на Azure Конвейер, но если я локально упаковываю NuGet, версия зависимости генерируется правильно. На Azure конвейере я использую Nuget версии 4.9.4.

Я надеюсь, что во время упаковки версию DLL нужно выбрать из файла GloabalAssembly.

МОЯ сборка Pipeline

- powershell: $(Build.BinariesDirectory)\GitVersion.CommandLine.${{ parameters.gitVersionVersion }}\tools\GitVersion.exe $(Build.SourcesDirectory) /output buildserver /nofetch /updateassemblyinfo $(Build.SourcesDirectory)\source\global\GlobalAssemblyInfo.cs 
  displayName: GitVersion to update the Assembly file

- task: NuGetCommand@2
  displayName: "NuGet Restore"
  inputs:
    restoreSolution: '**/*.csproj'
    feedsToUse: config
    nugetConfigPath: NuGet.config

- task: VSBuild@1
  displayName: ".NET build"
  inputs:
    solution: '**/*.csproj'
    vsVersion: '15.0'
    configuration: 'Release'
    restoreNugetPackages: false

- task: NuGetCommand@2
  displayName: "Nuget pack"
  inputs:
    command: pack
    packagesToPack: source/ProjectB/ProjectB.csproj
    versioningScheme: byEnvVar
    versionEnvVar: CI_Version
    arguments: --no-build
    nobuild: true
    packDirectory: $(build.artifactStagingDirectory)\sdk
    includeReferencedProjects: True

Приведенный выше конвейер создает объект Nuget для проекта B, в котором есть зависимость проекта от проекта A ie добавил проект A в качестве ссылки на проект для проекта B. Я также создаю объект Nuget для проекта A, поэтому хочу упаковать проект A как зависимость, упомянутая в файле Nuspe c проекта B.

Если я проверяю пакет NuGet проекта B, файл Nuspe c выглядит следующим образом. enter image description here Упомянутая версия Project A - 1.0.0, но она должна была быть 2.1.0 как версия для B. Если я сделаю это на своем локальном компьютере, выполнив следующие действия - Изменение GlobalAssemblyInfo.cs вручную (здесь не требуется Git версия) - создание пакета nuget с помощью команды

nuget pack .\source\ProjectB.csproj -IncludeReferencedProjects -NonInteractive -OutputDirectory nuget-package -version 2.1.0 -Verbosity Detailed
  • Пакет NuGet, созданный с версией 2.1.0. DLL для Project B упакован имеет версию 2.1.0. Зависимость проекта B, упомянутая в файле Nuspe c, имеет версию 2.1.0
...