Errore durante la pubblicazione di un sito ASP.NET Core 3.1 in Azure da Visual Studio 2019


10

Ho un'applicazione ASP.NET Core 3.0 preesistente che viene distribuita correttamente in un servizio app di Azure (usando il AspNetCoreModuleV2modulo). Dopo aver aggiornato l'app a (versione odierna) di ASP.NET Core 3.1 , l'applicazione viene compilata ed eseguita correttamente sulla mia versione locale di IIS Express . Quando provo a pubblicare nel servizio app di Azure usando (la versione odierna di) Visual Studio 16.4 , tuttavia, ricevo il seguente errore:

Il file di risorse "C: \ Project \ obj \ project.assets.json" non ha una destinazione per ".NETCoreApp, Version = v3.0". Assicurarsi che il ripristino sia stato eseguito e che sia stato incluso "netcoreapp3.0" in TargetFrameworks per il progetto.

Appunti

  • Tutto <PackageReference>'s a Microsoft.AspNetCore, Microsoft.EntityFrameworkCoree Microsoft.Extensionssono stati aggiornati per3.1.0
  • Ho pulito la mia soluzione e ho persino modificato la mia objcartella per assicurarmi che non ci siano riferimenti persistenti.
  • Questo errore viene generato dalla 3.1.100versione di Microsoft.PackageDependencyResolution.targets.

Ho capito che qualcosa è ancora sospeso nelle dipendenze di .NET Core 3.0 . Ma non è chiaro perché ciò causi problemi solo durante la distribuzione. Il servizio app di Azure non è ancora pronto per .NET Core 3.1 ? O è un problema con gli obiettivi di risoluzione delle dipendenze?


Grazie @Panagiotis Kanavos per aver taggato questo asp.net-core-3.1. Mi mancava la reputazione necessaria per creare un nuovo tag.
Jeremy Caney,

Ovviamente, il mio prossimo passo sarà iniziare con un nuovo modello di progetto ASP.NET Core 3.1 , tentare di distribuirlo in un nuovo servizio app di Azure e quindi reintrodurre dipendenze fino a quando non sarò in grado di riprodurre il problema. Non avrò tempo di farlo fino a fine settimana. Fino ad allora, speravo che qualcun altro potesse avere qualche idea su questo tipo di errore o aver trovato una soluzione da soli.
Jeremy Caney,

I documenti mostrano come selezionare esplicitamente la versione di .NET Core SDK . Ci hai provato? L'SDK 3.1 appare nell'elenco?
Panagiotis Kanavos il

@PanagiotisKanavos: questo progetto non è stato ancora pubblicato usando Azure Pipeline . Detto questo, non mi ricordano che c'è anche una <TargetFramework>regolazione nel pubxmlprofilo che Visual Studio si basa su, che ho ripartite su. Oops! Modificandolo in modo che netcoreapp3.1corrisponda al csprojtarget risolve il problema immediato. (Ciò introduce un nuovo problema con il servizio app di Azure stesso che inciampa sulla destinazione, ma che probabilmente può essere risolto usando una distribuzione autonoma, simile al collegamento fornito.) Grazie per avermi indicato nella giusta direzione!
Jeremy Caney,

1
Bene, grazie al cielo per aver trovato questa domanda (e la risposta). Sto iniziando a sentirmi piuttosto frustrato nell'adottare modifiche emorragiche alla SM (su loro raccomandazione e incoraggiamento) solo per continuare a incappare in problemi come questo.
Frank,

Risposte:


14

Il problema immediato, come identificato nella domanda originale, ha a che fare con la presenza di due punti in cui <TargetFramework>è impostato:

  1. Il file di progetto (ad es. csproj)
  2. Il profilo di pubblicazione (ovvero, pubxml)

Il <TargetFramework>devono essere aggiornati in entrambe le località, e devono corrispondere esattamente . Altrimenti, la pubblicazione non sarà in grado di trovare le sue destinazioni nel project.assets.jsonfile, che si basa sul file <TargetFramework>nel csjprojfile.

Nota: è probabile che ilpubxmlfile si rinvii al<TargetFramework>set nelcsprojfile, ma non ècosì.

Editor di testo

Per apportare questa modifica tramite un editor di testo,

  1. Apri la ~/Properties/PublishProfilescartella
  2. Apri il *.pubxmlche desideri modificare.
  3. Modifica il valore di <TargetFramework>a netcoreapp3.1:
<TargetFramework>netcoreapp3.1</TargetFramework>

Visual Studio 2019

Per apportare questa modifica tramite l' IDE di Visual Studio 2019 ,

  1. Fai clic sull'icona a forma di ingranaggio sulla barra degli strumenti di pubblicazione Web One Click (si trova a destra dell'icona di pubblicazione).
  2. Supponendo che il framework di destinazione è non impostato netcoreapp3.1, fare clic sull'icona di modifica accanto ad essa.
  3. Assicurarsi che Target Framework sia impostato su netcoreapp3.1.
  4. Fai clic su Salva .

Avvertenza: quando si utilizza l'IDE, è possibile riscontrare un problema qui. Quando modifichi il profilo probabilmente vedrai il nuovo valore dal tuo file di progetto (cioè,netcoreapp3.1) già selezionato. Quando fai clic su Salva , tuttavia, tornerà alvalore originale (ad esempio,netcoreapp3.0nel mio caso). Questo perché in realtà non hai modificato il valore nell'interfaccia, cosa che Visual Studio scambia perché non c'è stata una modifica aivalori sottostanti . Se si attiva / disattiva temporaneamente un altro valore (ad esempio, Configurazione ), Visual Studio riconoscerà che si è verificata una modifica ed entrambi i valori verranno aggiornati nel*.pubxmlfile.

Grazie ancora a @PanagiotisKanavos per avermi indicato nella giusta direzione (vedere i commenti sulla discussione originale).


Grazie per aver pubblicato una soluzione! Stavo lottando con questo quando ho provato a pubblicare la scorsa notte e non ha avuto senso. Nella procedura guidata di pubblicazione aveva sempre selezionato 3.1 come destinazione, quindi ho pensato che fosse ok, ma una volta aperto il pubxfile come spiegato, era ancora su 3.0. Molto frustrante. Onestamente, non ho avuto altro che strani, oscuri e completamente mostrare bug e problemi di arresto da quando sono stati rilasciati VS 16.3 e .NET Core 3.0. Grazie ancora!
Gup3rSuR4c

Idk se lo stai ottenendo anche tu, ma è abbastanza bello come quando gli dici di pubblicare come dipendente dal framework, decide di pubblicare l'intero framework insieme ad esso. Una pubblicazione che dovrebbe
durare circa

Cordiali saluti: Da quando l'ho pubblicato inizialmente, Microsoft ha aggiornato i servizi app di Azure per fornire supporto nativo per .NET Core 3.1 . Detto questo, ho rimosso l'avviso relativo al HTTP Error 500.30 - ANCM In-Process Start Failuremessaggio dal mio messaggio originale. In precedenza, era necessario pubblicare una distribuzione completamente autonoma dell'applicazione. (Detto questo, di solito c'è un intervallo di 2-3 giorni tra il rilascio di una nuova versione di .NET Core e l'integrazione nell'ambiente del servizio app di Azure , quindi è utile essere consapevoli degli aggiornamenti futuri.)
Jeremy Caney

1
Bene, avevo solo aggiornato la versione del framework nelle proprietà del progetto e non avevo nemmeno pensato al file .pubxml. Ciò stava causando il blocco della mia pubblicazione, dopo aver aggiornato il file .pubxml su "netcoreapp3.1" funzionava bene. Grazie
demoncodemonkey il

2

Apri la cartella del progetto;

  • Passare alla cartella Proprietà >> PublishProfiles
  • Apri il file FolderProfile.pubxml, quindi modifica la versione da 3.0 a 3.1

    netcoreapp3.1

  • Infine, ricostruisci l'applicazione prima di pubblicarla


Buona chiamata a fornire istruzioni esplicite per la modifica pubxmlmanuale del file e soprattutto data la sciocchezza di modificare questi valori tramite la GUI di Visual Studio 2019 . Ho incorporato questi dettagli nella mia risposta originale, quindi questa opzione è esplicitamente spiegata. Grazie!
Jeremy Caney,

0

modificare

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

per me va bene.


1
Per ASP.NET Core 3.1 , tutte le Microsoft.AspNetCorelibrerie devono essere aggiornate in 3.1.0base alle note sulla versione di Microsoft v3.1. Il tuo approccio potrebbe essere una soluzione valida per problemi simili in ASP.NET Core 2.2 , supponendo che l'errore non sia stato causato da una mancata corrispondenza tra te csproje i pubxfile, come nel mio caso.
Jeremy Caney,

La versione di due pacchetti sopra menzionati è attualmente in 2.2.0 e contrassegnata come ultima versione.
Libertad,

1
@Libertad, è necessario aggiornare l'installazione di Visual Studio alla versione 16.4.0 per vedere l'ultima versione dot net core 3.1
navule

@navule my VS è aggiornato. I pacchetti precedenti sono solo pacchetti nuget. Dai un'occhiata a questo: nuget.org/packages/Microsoft.AspNetCore e guarda la sua ultima versione
Libertad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.