В моем 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 выглядит следующим образом. Упомянутая версия 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