Помилка публікації сайту 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.