Недавно я обновился с Umbraco 10.x (.NET 6 Core) до 13.x (.NET 8 Core).
С тех пор конвейер для сборки проекта не давал сбоев и не жаловался, но я подозреваю, что он все еще каким-то образом строится в .NET 6, поскольку он не запускается. Я также могу сравнить следующие файлы после локальной публикации с результатами конвейера.
В myproj.deps.json есть { "runtimeTarget": { "name": ".NETCoreApp,Version=v6.0" ...
myproj.runtimeconfig.json имеет { "runtimeOptions" : { "tfm": "net6.0" ...
Локальная сборка/публикация у них 8.0.
Пробуя решения из похожих постов, я добавил этап задачи «Использовать .NET Core».
steps:
- task: UseDotNet@2
displayName: 'Use .NET Core sdk 8.x'
inputs:
version: 8.x
Я даже добавил информацию о dotnet, чтобы доказать, что там был номер 8:
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet info'
inputs:
command: custom
custom: '--info'
Но когда дело доходит до этапа сборки, я получаю следующую ошибку:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
projects: '**/myproj.csproj'
arguments: '--configuration $(BuildConfiguration) --no-restore --framework net8.0'
##[ошибка]C:\hostedtoolcache\windows\dotnet\sdk\8.0.204\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): Ошибка NETSDK1005: файл ресурсов 'D:\ a\8\s\Dev\Main\myproj\obj\project.assets.json' не имеет цели для "net8.0". Убедитесь, что восстановление выполнено и вы включили «net8.0» в TargetFrameworks для своего проекта.
Тот же результат с --framework net8.0
или без него.
Несмотря на то, что я специально не занимаюсь NuGet, я попробовал добавить следующее без изменений.
steps:
- task: NuGetToolInstaller@1
displayName: 'Use NuGet 5.8'
inputs:
versionSpec: 5.8
Я также пробовал сменить хост с Windows-последнего на Windows-2022. Без изменений.
Я даже пытался изменить следующий элемент в файле проекта с TargetFramework
на TargetFrameworks
.
<TargetFramework>net8.0</TargetFramework>
ЛЮБЫЕ идеи или помощь будут очень признательны.
Да, полный конвейер на данный момент: (Использовать NuGet 5.8, Использовать .NET Core sdk 8.x, информацию dotnot, восстановление dotnet, установку npm, Использовать .NET Core sdk 8.x (снова), Сборку, сборку npm, публикацию в dotnet , Опубликовать Артефакт) В моих многочисленных отчаянных попытках были добавлены дополнительные материалы.
Судя по вашему описанию Local build/publish those have 8.0.
, кажется, что вы можете успешно создать свой проект на локальном компьютере. Если да, попробуйте настроить автономный агент на локальном компьютере и запустить конвейер с помощью этого агента. Тогда мы сможем узнать, связана ли проблема с вашим проектом или настройками конвейера.
Исключая интерфейсную часть конвейера, мы успешно собираем Umbraco 13 (и, следовательно, .net 8) с помощью этого
pool:
vmImage: 'windows-latest'
demands:
- msbuild
- visualstudio
trigger:
- main
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages
steps:
- task: UseDotNet@2
displayName: Setup .Net 8
inputs:
packageType: 'sdk'
version: '8.0.x'
- task: DotNetCoreCLI@2
displayName: Publish Solution
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
displayName: Publish Artifact
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'prod-drop'
publishLocation: 'Container'
Кстати, несмотря на то, что здесь показаны материалы YAML, мне приходится использовать пользовательский интерфейс. Не уверен, что это влияет. Я подумал, что, возможно, проблема в версии «8.x», и попробовал «8.0.x», но все равно нет. Я сократил дополнительные функции конвейера до следующих: (UseDotNet 8.0.x sdk, восстановление dotnet, установка npm, сборка npm, публикация dotnet, публикация артефакта), но все равно безуспешно. На этапе публикации у меня отмечен флажок «публиковать веб-проекты».
Мне удалось добиться успешной сборки/развертывания после создания нового конвейера сборки с нуля.
По какой-то причине старый конвейер удерживал то, чего у него не должно было быть (даже Clean не помог).
Вы запускали
dotnet restore
перед этапами сборки? Если нет, пожалуйста, попробуйте.