Конвейер DevOps "project.assets.json" не имеет цели для "net8.0"

Недавно я обновился с 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>

ЛЮБЫЕ идеи или помощь будут очень признательны.

Вы запускали dotnet restore перед этапами сборки? Если нет, пожалуйста, попробуйте.

Ziyang Liu-MSFT 07.05.2024 09:48

Да, полный конвейер на данный момент: (Использовать NuGet 5.8, Использовать .NET Core sdk 8.x, информацию dotnot, восстановление dotnet, установку npm, Использовать .NET Core sdk 8.x (снова), Сборку, сборку npm, публикацию в dotnet , Опубликовать Артефакт) В моих многочисленных отчаянных попытках были добавлены дополнительные материалы.

user3447577 07.05.2024 14:43

Судя по вашему описанию Local build/publish those have 8.0., кажется, что вы можете успешно создать свой проект на локальном компьютере. Если да, попробуйте настроить автономный агент на локальном компьютере и запустить конвейер с помощью этого агента. Тогда мы сможем узнать, связана ли проблема с вашим проектом или настройками конвейера.

Ziyang Liu-MSFT 08.05.2024 10:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
391
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Исключая интерфейсную часть конвейера, мы успешно собираем 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, публикация артефакта), но все равно безуспешно. На этапе публикации у меня отмечен флажок «публиковать веб-проекты».

user3447577 07.05.2024 20:07
Ответ принят как подходящий

Мне удалось добиться успешной сборки/развертывания после создания нового конвейера сборки с нуля.

  • восстановление дотнета
  • установка npm
  • сборка npm
  • публикация в дотнете
  • Опубликовать артефакт

По какой-то причине старый конвейер удерживал то, чего у него не должно было быть (даже Clean не помог).

Другие вопросы по теме