Помилка публікації сайту ASP.NET Core 3.1 на Azure від Visual Studio 2019


10

У мене є вже існуюча програма ASP.NET Core 3.0, яка успішно розгорнута в службі додатків Azure (за допомогою AspNetCoreModuleV2модуля). Після оновлення додатка до (сьогоднішній випуск) ASP.NET Core 3.1 , додаток будується та працює правильно на моїй локальній версії IIS Express . Коли я намагаюся опублікувати службу додатків Azure за допомогою (сьогоднішній випуск) Visual Studio 16.4 , однак я отримую таку помилку:

Файл активів 'C: \ Project \ obj \ project.assets.json' не має цілі для '.NETCoreApp, Version = v3.0'. Переконайтеся, що відновлення запущено, і що ви включили 'netcoreapp3.0' в TargetFrameworks для свого проекту.

Примітки

  • Всі <PackageReference>«з до Microsoft.AspNetCore, Microsoft.EntityFrameworkCoreі Microsoft.Extensionsбули оновлені3.1.0
  • Я очистив своє рішення і навіть наклав нудинг на свою objпапку, щоб переконатися, що немає ніяких затяжних посилань.
  • Ця помилка створюється з 3.1.100версії Microsoft.PackageDependencyResolution.targets.

Я розумію, що щось все ще висить у залежності від .NET Core 3.0 . Але незрозуміло, чому це викликає проблеми лише під час розгортання. Є чи Azure App Service це ще не готовий до .NET Ядра 3.1 ? Або це питання із цілями вирішення залежності?


Дякую @Panagiotis Kanavos, що позначили це asp.net-core-3.1. Мені не вистачило необхідної репутації для створення нового тегу.
— Джеремі Кейні

Очевидно, що наступним моїм кроком буде початок із нового шаблону проекту ASP.NET Core 3.1 , спробу розгортання у свіжому сервісі додатка Azure та повторне введення залежностей, поки я не зможу відтворити проблему. Я не встигну це зробити до пізніше цього тижня. До цього часу я сподівався, що хтось інший, можливо, матиме деяке уявлення про цей тип помилок або знайшов рішення.
— Джеремі Кейні

Документи показують, як явно вибрати версію .NET Core SDK . Ви пробували це? Чи відображається в списку 3.1 SDK?
— Панайотис Канавос

@PanagiotisKanavos: Цей проект ще не опублікований за допомогою Azure Pipelines . Тим НЕ менше, це дійсно нагадує мені , що є також<TargetFramework> налаштування в pubxmlпрофілі , що Visual Studio спирається на, який я рознесений на. На жаль! Якщо змінити цільовий показник netcoreapp3.1на csprojцільовий, вирішується негайне питання. (Це вводить нову проблему з тим, що сама Служба додатків Azure спрацьовує на цілі, але це, ймовірно, може бути вирішене за допомогою автономного розгортання, подібного до посилання, яке ви надали.) Дякую, що вказали на мене в правильному напрямку!
— Джеремі Кейні

1
Добре дякуємо, що знайшли це питання (і відповідь). Я починаю дуже засмучуватися прийняттям кровоточивих змін РС (за їх рекомендацією та заохоченням) лише для продовження таких питань.
— Френк

Відповіді:


14

Безпосередня проблема - як визначено в первинному питанні - пов'язана з тим, що встановлено два місця <TargetFramework>:

  1. Файл проекту (наприклад, csproj)
  2. Публікації профілю (тобто pubxml)

<TargetFramework>Повинні бути оновлені в обох місцях, і вони повинні відповідати точно . В іншому випадку, видавництво не зможе знайти свої цілі в project.assets.jsonфайл, який побудований на основі на <TargetFramework>в csjprojфайлі.

Примітка. Ви можете очікувати, щоpubxmlфайл відкладеться до<TargetFramework>набору уcsprojфайлі, але це не так.

Текстовий редактор

Щоб внести цю модифікацію за допомогою текстового редактора,

  1. Відкрийте ~/Properties/PublishProfilesпапку.
  2. Відкрийте *.pubxmlпотрібне для редагування.
  3. Змініть значення <TargetFramework>для netcoreapp3.1:
<TargetFramework>netcoreapp3.1</TargetFramework>

Візуальна студія 2019

Щоб внести цю модифікацію за допомогою IDE Visual Studio 2019 ,

  1. Клацніть піктограму шестерні на веб- панелі інструментів Один клік Опублікувати (справа від значка опублікування).
  2. Припускаючи , що Target Framework буде НЕ встановлено netcoreapp3.1, натисніть на значок редагування поруч з ним.
  3. Переконайтеся, що цільова рамка встановлена netcoreapp3.1.
  4. Клацніть Зберегти .

Попередження: При використанні IDE тут може виникнути проблема. Під час редагування профілю ви, ймовірно, побачите нове значення зnetcoreapp3.1уже вибраногофайла проекту (тобто). Якщо ви натиснете кнопку " Зберегти" , вона повернеться до початкового значення (наприклад,netcoreapp3.0у моєму випадку). Це тому, що ви насправді не змінили значення в інтерфейсі, що Visual Studio помиляється, оскільки не було зміни базових значень. Якщо ви тимчасово переключите інше значення (наприклад, Конфігурація ), Visual Studio визнає, що відбулася зміна, і обидва значення будуть оновлені у*.pubxmlфайлі.

Ще раз дякую @PanagiotisKanavos за те, що вказали мені в правильному напрямку (див. Коментарі до оригінальної теми).


Дякуємо за публікацію рішення! Я боровся з цим, коли спробував опублікувати вчора ввечері, і це просто не мало сенсу. У майстрі публікації у нього завжди було 3.1, вибране як цільове, тому я зрозумів, що це нормально, але як тільки я відкрив pubxфайл, як ви пояснили, він все ще знаходився на 3.0. Дуже засмучує. Чесно кажучи, з моменту виходу VS 16.3 та .NET Core 3.0 у мене не було нічого, окрім дивних, незрозумілих та повністю показаних зупинок помилок та проблем. Знову дякую!
— Gup3rSuR4c

Idk, якщо ви також отримуєте це, але це дуже чудово, як коли ви кажете йому публікувати як залежне від рамки, він вирішує опублікувати весь фреймворк разом із ним.
— Публікація,

FYI: Оскільки я спочатку опублікував це, Microsoft оновила Служби додатків Azure, щоб забезпечити вбудовану підтримку .NET Core 3.1 . Враховуючи це, я видалив попередження щодо HTTP Error 500.30 - ANCM In-Process Start Failureповідомлення з мого оригінального повідомлення. Раніше це вимагало публікації повністю автономного розповсюдження вашої заявки. (Втім, між новою версією .NET Core і її інтеграцією в середовище служби Azure App зазвичай триває 2-3 дні затримки , тому це корисно знати в наступних оновленнях.)
— Джеремі Кейні

1
Приємно, я лише оновив рамкову версію у властивостях проекту і навіть не передумав про файл .pubxml. Це спричинило зависання моєї публікації після оновлення .pubxml до "netcoreapp3.1", воно спрацювало чудово. Спасибі
— demoncodemonkey

2

Відкрити папку Project;

  • Перейдіть до Властивості папки >> PublishProfiles
  • Відкрийте файл FolderProfile.pubxml та змініть версію 3.0 на 3.1

    netcoreapp3.1

  • Нарешті, відновіть свою програму перед публікацією


Хороший заклик надати чіткі вказівки щодо зміни pubxmlфайлу вручну, особливо, враховуючи чіткість зміни цих значень через графічний інтерфейс Visual Studio 2019 . Ці деталі я включив у свою оригінальну відповідь, тому цей варіант прямо пояснено. Дякую!
— Джеремі Кейні

0

змінити

<PackageReferenceInclude="Microsoft.AspNetCore"Version="2.2.0" />
 to 
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />

працює для мене.


1
Для ASP.NET Core 3.1 всі Microsoft.AspNetCoreбібліотеки повинні бути оновлені відповідно до 3.1.0приміток до випуску Microsoft v3.1. Ваш підхід може бути коректним виправленням подібних проблем в ASP.NET Core 2.2 , припускаючи, що помилка не була викликана невідповідністю між вашими файлами csprojта pubxфайлами, як це було в моєму випадку.
— Джеремі Кейні

Версія двох вищезгаданих пакетів наразі знаходиться в 2.2.0 та позначена як остання версія.
— Лібертад

1
@Libertad, вам потрібно оновити установку своєї візуальної студії до версії 16.4.0, щоб побачити останню версію точкового ядра 3.1 версії
— navule

@navule мій VS оновлений. Нагорі пакети - це просто пакунок. Подивіться на це: nuget.org/packages/Microsoft.AspNetCore і подивіться його останню версію
— Libertad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.