Я нахожусь на ранних стадиях миграции своей кодовой базы с. NET Framework на. NET Standard. Я преобразовываю некоторые основополагающие проекты в своем решении в типы проектов SDK с целевыми платформами net462 и netstandard2.0.
Все мои приложения и службы по-прежнему. NET Framework.
Чтобы уточнить, у меня есть библиотечный проект, нацеленный на обе платформы, а затем на другие библиотечные проекты (только. NET Framework), которые имеют многоцелевой проект в качестве ссылки, а затем приложения (только. NET Framework), которые ссылаются все вышеперечисленное.
Когда я компилирую свое решение в Visual Studio 2019, оно компилируется просто отлично. Если я сделаю ручную публикацию sh, это также работает просто отлично. Однако, когда я пытаюсь сделать PR в Azure DevOps, мой CI создает конвейер с ошибками с этой ошибкой:
[error] C: \ Program Files \ dotnet \ sdk \ 3.0.100 \ Sdks \ Microsoft. NET .Sdk \ target \ Microsoft. NET .Sdk.CrossTargeting.targets (27,5): Ошибка: цель «Publi sh» не поддерживается без указания целевой структуры. Текущий проект нацелен на несколько фреймворков, пожалуйста, укажите фреймворк для опубликованного приложения.
Google предлагает, чтобы, если бы я использовал do tnet -publi sh, мне нужно было бы предоставить параметр фреймворка. Однако задача VSBuild, похоже, не поддерживает это.
Соответствующий YAML для моего конвейера:
steps:
- task: VSBuild@1
displayName: 'Check for Build Errors'
inputs:
solution: '$(SolutionName)'
msbuildArgs: '/target:publish'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
maximumCpuCount: true
И идеи или уточняющие вопросы?