Я пытаюсь перенести существующее веб-приложение ASP.NET MVC из TeamCity в DevOps Azure, однако, похоже, у меня нет конвейера для поиска пакетов, которые он восстановил, из задачи восстановления пакета NuGet.
Решение имеет несколько проектов и использует большое количество пакетов NuGet. Я создал многошаговый конвейер, который в настоящее время имеет задачу восстановления NuGet и задачу построения VS.
Структура решения выглядит следующим образом:
\source
..\SolutionFolder
...Solution.sln
..\..\Project1
....Project1.csproj
..\..\Project2
....Project2.csproj
..\..\Packages
azure-pipelines.yaml
NuGet.config
Конвейер YAML выглядит следующим образом:
trigger:
- PipelineBranch
pool:
vmImage: 'windows-latest'
stages:
## NuGet Restore ##
- stage: nuget_restore
displayName: 'Restore nuget packages'
jobs:
- job: nuget_package_restore
steps:
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
command: 'restore'
restoreSolution: 'source/SolutionFolder/Solution.sln'
feedsToUse: 'config'
nugetConfigPath: 'NuGet.Config'
restoreDirectory: '$(Build.SourcesDirectory)\source\SolutionFolder\packages'
## Build ##
- stage: build_for_int
displayName: 'Build to int)'
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
displayName: 'Build Solution.sln (int)'
inputs:
solution: 'source/SolutionFolder/Solution.sln'
msbuildArgs: '
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
Когда конвейер запускает задачу восстановления, она успешно выдает следующие результаты:
<example package>
Added package 'postal.1.2.2' to folder 'd:\a\1\s\source\SolutionFolder\packages'
<loads more packages>
Installed:
190 package(s) to packages.config projects
Когда задача компоновки запускается в решении, она завершается неудачно со следующей ошибкой в первом проектеон встречает:
[warning]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2106,5):
Warning MSB3245: Could not resolve this reference. Could not locate the assembly "postal, Version=1.2.14706.0, Culture=neutral, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
...
Considered "d:\a\1\s\source\SolutionFolder\packages\postal.1.2.2\lib\postal.dll", but it didn't exist.
Та же ошибка возникает для каждой зависимости пакета. Похоже, задача восстановления пакета восстанавливает пакеты здесь:
d:\a\1\s\source\SolutionFolder\packages\
И в соответствии с журналом сборки ищет их здесь в иерархической структуре папок пакета, например:
d:\a\1\s\source\SolutionFolder\packages\<package>\<lib>\<dll>
Я пробовал несколько вещей, включая удаление параметра restoreDirectory
из задачи восстановления, локальный запуск команды MSBuild (она работает) и удаление некоторых пакетов, однако я все еще вижу те же ошибки сборки.
Некоторые файлы проекта также содержат подсказки;например, в формате:
<ItemGroup>
<Reference Include="<some package>">
<HintPath>..\packages\<package>\lib\<dll></HintPath>
</Reference>
У кого-нибудь есть идеи? Спасибо.