Galat saat menerbitkan situs ASP.NET Core 3.1 ke Azure dari Visual Studio 2019

10

Saya memiliki aplikasi ASP.NET Core 3.0 yang sudah ada sebelumnya yang berhasil digunakan untuk Layanan Aplikasi Azure (menggunakan AspNetCoreModuleV2modul). Setelah memutakhirkan aplikasi ke (rilis hari ini) ASP.NET Core 3.1 , aplikasi membangun dan berjalan dengan benar pada versi lokal saya dari IIS Express . Ketika saya mencoba untuk mempublikasikan ke Layanan Aplikasi Azure menggunakan (rilis hari ini) Visual Studio 16.4 , namun, saya menerima kesalahan berikut:

File aset 'C: \ Project \ obj \ project.assets.json' tidak memiliki target untuk '.NETCoreApp, Version = v3.0'. Pastikan pemulihan telah berjalan dan Anda telah memasukkan 'netcoreapp3.0' di TargetFrameworks untuk proyek Anda.

Catatan

  • Semua <PackageReference>'s untuk Microsoft.AspNetCore, Microsoft.EntityFrameworkCoredan Microsoft.Extensionstelah diperbarui untuk3.1.0
  • Saya sudah membersihkan solusi saya, dan bahkan nuked objfolder saya untuk memastikan tidak ada referensi yang tersisa.
  • Kesalahan ini dihasilkan dari 3.1.100versi Microsoft.PackageDependencyResolution.targets.

Saya mendapatkan sesuatu yang masih tergantung pada dependensi .NET Core 3.0 . Tetapi tidak jelas mengapa itu hanya menyebabkan masalah selama penempatan. Apakah Layanan Aplikasi Azure belum siap untuk .NET Core 3.1 ? Atau apakah ini merupakan masalah dengan target resolusi ketergantungan?

Jeremy Caney
sumber
Terima kasih @Panagiotis Kanavos karena memberi tag ini asp.net-core-3.1. Saya tidak memiliki reputasi yang diperlukan untuk membuat tag baru.
Jeremy Caney
Jelas, langkah saya selanjutnya adalah memulai dengan template proyek ASP.NET Core 3.1 yang baru, mencoba untuk menyebarkan ke layanan Azure App yang baru , dan kemudian memperkenalkan kembali dependensi sampai saya dapat mereproduksi masalah. Saya tidak akan punya waktu untuk melakukannya sampai akhir minggu ini. Sampai saat itu, saya berharap orang lain mungkin memiliki wawasan tentang jenis kesalahan ini, atau telah menemukan solusi sendiri.
Jeremy Caney
Dokumen menunjukkan cara memilih versi .NET Core SDK secara eksplisit . Sudahkah Anda mencobanya? Apakah 3.1 SDK muncul dalam daftar?
Panagiotis Kanavos
@PanagiotisKanavos: Proyek ini belum dipublikasikan menggunakan Azure Pipeline . Yang mengatakan, ini tidak mengingatkan saya bahwa ada juga sebuah <TargetFramework>pengaturan dalam pubxmlprofil yang Visual Studio bergantung pada, yang saya spasi pada. Ups! Mengubahnya agar netcoreapp3.1sesuai dengan csprojtarget menyelesaikan masalah langsung. (Ini memperkenalkan masalah baru dengan Azure App Service sendiri yang tersandung pada target, tetapi itu mungkin dapat diatasi dengan menggunakan penyebaran mandiri, mirip dengan tautan yang Anda berikan.) Terima kasih telah mengarahkan saya ke arah yang benar!
Jeremy Caney
1
Terima kasih Tuhan sudah menemukan pertanyaan ini (dan jawabannya). Saya mulai merasa sangat frustrasi dengan mengadopsi perubahan MS tepi berdarah (atas rekomendasi dan dorongan mereka) hanya untuk terus mengalami masalah seperti ini.
Frank

Jawaban:

14

Masalah langsung — sebagaimana diidentifikasi dalam pertanyaan awal — berkaitan dengan keberadaan dua tempat di mana <TargetFramework>:

  1. File proyek (misalnya, csproj)
  2. The profil penerbitan (yaitu, pubxml)

The <TargetFramework>harus diperbarui di kedua lokasi, dan mereka harus sesuai persis . Kalau tidak, penerbitan tidak akan dapat menemukan targetnya di project.assets.jsonfile, yang dibangun berdasarkan pada <TargetFramework>di csjprojfile.

Catatan: Anda mungkin mengharapkanpubxmlfile untuk tunduk pada<TargetFramework>set dalamcsprojfile, tetapi bukan itu masalahnya.

Editor Teks

Untuk melakukan modifikasi ini melalui editor teks,

  1. Buka ~/Properties/PublishProfilesfoldernya.
  2. Buka yang *.pubxmlingin Anda edit.
  3. Ubah nilai <TargetFramework>untuk netcoreapp3.1:
<TargetFramework>netcoreapp3.1</TargetFramework>

Visual Studio 2019

Untuk melakukan modifikasi ini melalui Visual Studio 2019 IDE,

  1. Klik ikon roda gigi di bilah alat Web One Click Publish (di sebelah kanan ikon publish).
  2. Dengan asumsi Kerangka Sasaran ini tidak diatur untuk netcoreapp3.1, klik edit icon sebelahnya.
  3. Pastikan Kerangka Target diatur ke netcoreapp3.1.
  4. Klik Simpan .

Peringatan: Saat menggunakan IDE, Anda mungkin mengalami masalah di sini. Saat mengedit profil Anda kemungkinan akan melihat nilai baru dari file proyek Anda (yaitu,netcoreapp3.1) sudah dipilih. Ketika Anda mengklik Simpan , bagaimanapun, itu akan kembali ke nilai asli (misalnya,netcoreapp3.0dalam kasus saya). Ini karena Anda tidak benar-benar mengubah nilai di antarmuka, yang Visual Studio salah karena tidak ada perubahan pada nilai yang mendasarinya . Jika Anda sementara beralih nilai lain (misalnya, Konfigurasi ), maka Visual Studio akan mengenali bahwa telah terjadi perubahan, dan kedua nilai akan diperbarui dalam*.pubxmlfile.

Sekali lagi terima kasih kepada @PanagiotisKanavos karena mengarahkan saya ke arah yang benar (lihat komentar di utas asli).

Jeremy Caney
sumber
Terima kasih telah mengirim solusi! Saya kesulitan dengan ini ketika saya mencoba untuk menerbitkan tadi malam dan itu tidak masuk akal. Dalam panduan penerbitan, selalu ada 3.1 yang dipilih sebagai target jadi saya pikir itu ok, tapi begitu saya membuka pubxfile seperti yang Anda jelaskan itu masih di 3.0. Sangat membuat frustrasi. Jujur, saya tidak punya apa-apa selain aneh, tidak jelas dan benar-benar menunjukkan menghentikan bug dan masalah sejak VS 16.3 dan .NET Core 3.0 dirilis. Terima kasih lagi!
Gup3rSuR4c
Idk jika Anda mendapatkan ini juga, tapi cukup menyenangkan bagaimana ketika Anda mengatakannya untuk menerbitkan sebagai kerangka kerja, ia memutuskan untuk menerbitkan seluruh kerangka kerja bersamanya. Publikasi yang seharusnya sekitar 1 menit atau lebih, sekarang 15+ menit ...
Gup3rSuR4c
FYI: Sejak saya memposting ini, Microsoft telah memperbarui Layanan Aplikasi Azure untuk memberikan dukungan asli untuk .NET Core 3.1 . Karena itu, saya telah menghapus peringatan tentang HTTP Error 500.30 - ANCM In-Process Start Failurepesan dari pesan asli saya. Sebelumnya, ini mengharuskan penerbitan distribusi aplikasi Anda sepenuhnya mandiri. (Yang mengatakan, biasanya ada jeda waktu 2-3 hari antara versi baru .NET Core menjatuhkan, dan itu diintegrasikan ke dalam lingkungan Layanan Aplikasi Azure , jadi ini berguna untuk diperhatikan dalam pembaruan di masa mendatang.)
Jeremy Caney
1
Bagus, saya hanya memperbarui versi kerangka kerja di properti proyek dan bahkan tidak terlintas dalam pikiran saya tentang file .pubxml. Ini menyebabkan terbitan saya hang, setelah memperbarui .pubxml menjadi "netcoreapp3.1" berfungsi dengan baik. Terima kasih
demoncodemonkey
2

Buka folder Proyek;

  • Arahkan ke folder Properties >> PublishProfiles
  • Buka file FolderProfile.pubxml lalu ubah versi 3.0 menjadi 3.1

    netcoreapp3.1

  • Terakhir, buat kembali aplikasi Anda sebelum diterbitkan

Kenneth Korir
sumber
Panggilan yang baik untuk memberikan instruksi eksplisit untuk memodifikasi pubxmlfile secara manual, dan terutama mengingat kesalahan memodifikasi nilai-nilai ini melalui Visual Studio 2019 GUI. Saya telah memasukkan detail ini ke dalam jawaban awal saya sehingga opsi ini dijelaskan secara eksplisit. Terima kasih!
Jeremy Caney
0

perubahan

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

bekerja untukku.

Libertad
sumber
1
Untuk ASP.NET Core 3.1 , semua Microsoft.AspNetCoreperpustakaan harus diperbarui 3.1.0, sesuai dengan catatan rilis Microsoft v3.1. Pendekatan Anda mungkin merupakan perbaikan yang valid untuk masalah serupa di ASP.NET Core 2.2 , dengan asumsi bahwa kesalahan itu bukan disebabkan oleh ketidakcocokan antara Anda csprojdan pubxfile, seperti dalam kasus saya.
Jeremy Caney
Versi dua paket yang disebutkan di atas saat ini dalam versi 2.2.0 dan ditandai sebagai versi terbaru.
Libertad
1
@Libertad, Anda perlu meningkatkan instalasi studio visual Anda ke versi 16.4.0 untuk melihat versi terbaru dot net core 3.1
navule
@navule VS saya uptodate. Paket aabove hanyalah paket nuget. Lihatlah ini: nuget.org/packages/Microsoft.AspNetCore dan lihat versi terbarunya
Libertad