Fehler beim Veröffentlichen einer ASP.NET Core 3.1-Site in Azure aus Visual Studio 2019

9

Ich habe eine bereits vorhandene ASP.NET Core 3.0- Anwendung, die erfolgreich auf einem Azure App-Dienst bereitgestellt wird (mithilfe des AspNetCoreModuleV2Moduls). Nach dem Upgrade der App auf (die heutige Version von) ASP.NET Core 3.1 wird die Anwendung auf meiner lokalen Version von IIS Express erstellt und ordnungsgemäß ausgeführt . Wenn ich jedoch versuche, mit (der heutigen Version von) Visual Studio 16.4 im Azure App Service zu veröffentlichen, wird folgende Fehlermeldung angezeigt:

Die Assets-Datei 'C: \ Project \ obj \ project.assets.json' hat kein Ziel für '.NETCoreApp, Version = v3.0'. Stellen Sie sicher, dass die Wiederherstellung ausgeführt wurde und dass Sie 'netcoreapp3.0' in die TargetFrameworks für Ihr Projekt aufgenommen haben.

Anmerkungen

  • Alles <PackageReference>zu Microsoft.AspNetCore,Microsoft.EntityFrameworkCore und Microsoft.Extensionsaktualisiert wurden3.1.0
  • Ich habe meine Lösung gereinigt und sogar meine vernichtet obj Ordner zerstört, um sicherzustellen, dass keine Referenzen mehr vorhanden sind.
  • Dieser Fehler wird aus der 3.1.100Version von generiert Microsoft.PackageDependencyResolution.targets.

Ich verstehe, dass immer noch etwas an den .NET Core 3.0- Abhängigkeiten hängt. Es ist jedoch unklar, warum dies nur während der Bereitstellung zu Problemen führt. Sind die Azure App-Dienste noch nicht für .NET Core 3.1 bereit ? Oder ist dies ein Problem mit den Abhängigkeitsauflösungszielen?

Jeremy Caney
quelle
Vielen Dank an @Panagiotis Kanavos für das Markieren mit asp.net-core-3.1. Mir fehlte der nötige Ruf, um ein neues Tag zu erstellen.
Jeremy Caney
Mein nächster Schritt besteht natürlich darin, mit einer neuen ASP.NET Core 3.1- Projektvorlage zu beginnen, zu versuchen, sie für einen neuen Azure App-Dienst bereitzustellen , und dann die Abhängigkeiten wieder einzuführen, bis ich das Problem reproduzieren kann. Ich werde erst später in dieser Woche Zeit dafür haben. Bis dahin hatte ich gehofft, jemand anderes könnte einen Einblick in diese Art von Fehler bekommen oder selbst eine Lösung gefunden haben.
Jeremy Caney
In den Dokumenten wird gezeigt, wie Sie die .NET Core SDK-Version explizit auswählen . Hast du das versucht? Erscheint das 3.1 SDK in der Liste?
Panagiotis Kanavos
@PanagiotisKanavos: Dieses Projekt wurde noch nicht mit Azure Pipelines veröffentlicht . Dies erinnert mich jedoch daran, dass das Profil, auf das sich Visual Studio stützt, auch eine <TargetFramework>Einstellung enthält , auf die ich mich beschränkt habe. Hoppla! Wenn Sie dies so ändern, dass es dem Ziel entspricht, wird das unmittelbare Problem behoben. (Dies führt zu einem neuen Problem mit dem Azure App Service selbst, das auf dem Ziel ausgelöst wird. Dieses Problem kann jedoch wahrscheinlich mithilfe einer eigenständigen Bereitstellung behoben werden, die dem von Ihnen angegebenen Link ähnelt.) Vielen Dank, dass Sie mich in die richtige Richtung weisen! pubxmlnetcoreapp3.1csproj
Jeremy Caney
1
Gott sei Dank, dass Sie diese Frage (und Antwort) gefunden haben. Ich fange an, ziemlich frustriert zu werden, wenn ich (auf Empfehlung und Ermutigung) hochmoderne MS-Änderungen übernehme, nur um weiterhin auf solche Probleme zu stoßen.
Frank

Antworten:

13

Das unmittelbare Problem - wie in der ursprünglichen Frage angegeben - hat damit zu tun, dass zwei Stellen <TargetFramework>festgelegt sind:

  1. Die Projektdatei (zB csproj)
  2. Das Veröffentlichungsprofil (dh pubxml)

Das <TargetFramework>muss in aktualisiert werden beiden Standorten werden und genau übereinstimmen . Andernfalls kann die Veröffentlichung ihre Ziele nicht in der project.assets.jsonDatei finden, die auf der <TargetFramework>in der csjprojDatei enthaltenen basiert .

Hinweis: Es ist durchaus zu erwarten, dass sich die pubxmlDatei auf den <TargetFramework>Satz in der csprojDatei verschiebt, dies ist jedoch nicht der Fall.

Texteditor

Um diese Änderung über einen Texteditor vorzunehmen,

  1. Öffne das ~/Properties/PublishProfiles Ordner.
  2. Öffne das *.pubxml Sie Sie bearbeiten möchten.
  3. Ändern Sie den Wert von <TargetFramework>bisnetcoreapp3.1 :
<TargetFramework>netcoreapp3.1</TargetFramework>

Visual Studio 2019

Um diese Änderung über das vorzunehmen Visual Studio 2019- IDE ,

  1. Klicken Sie auf das Zahnradsymbol auf der Web Klicken Sie auf Veröffentlichen Symbolleiste " (rechts neben dem Veröffentlichungssymbol).
  2. Angenommen, das Ziel-Framework ist dies nicht eingestellt netcoreapp3.1, klicken Sie auf das Bearbeitungssymbol daneben.
  3. Stellen Sie sicher, dass das Ziel-Framework eingestellt ist netcoreapp3.1.
  4. Klicken Sie auf Speichern .

Warnung: Bei Verwendung der IDE kann hier ein Problem auftreten. Beim Bearbeiten des Profils wird wahrscheinlich der neue Wert aus Ihrernetcoreapp3.1bereits ausgewähltenProjektdatei (dh) angezeigt. Wenn Sie jedoch auf Speichern klicken, wird der ursprüngliche Wert wiederhergestellt (z. B.netcoreapp3.0in meinem Fall). Dies liegt daran, dass Sieden Wert in der Benutzeroberflächenicht geändert haben. Visual Studio verwechselt dies damit, dass die zugrunde liegenden Wertenicht geändert wurden. Wenn Sie vorübergehend einen anderen Wert umschalten (z. B. Konfiguration ), erkennt Visual Studio, dass eine Änderung aufgetreten ist, und beide Werte werden in der*.pubxmlDateiaktualisiert.

Nochmals vielen Dank an @PanagiotisKanavos, der mich in die richtige Richtung gelenkt hat (siehe Kommentare zum Original-Thread).

Jeremy Caney
quelle
Vielen Dank für die Veröffentlichung einer Lösung! Ich hatte damit zu kämpfen, als ich letzte Nacht versuchte zu veröffentlichen, und es ergab einfach keinen Sinn. Im Veröffentlichungsassistenten wurde immer 3.1 als Ziel ausgewählt, sodass ich dachte, dass es in Ordnung ist, aber als ich die pubxDatei öffnete , wie Sie erklärt haben, war sie immer noch auf 3.0. Sehr frustrierend. Ehrlich gesagt hatte ich seit der Veröffentlichung von VS 16.3 und .NET Core 3.0 nichts anderes als seltsame, dunkle und vollständig aufhörbare Fehler und Probleme. Danke noch einmal!
Gup3rSuR4c
Idk, wenn Sie dies auch bekommen, aber es ist sehr schön, wie es beschließt, das gesamte Framework zusammen mit dem Framework zu veröffentlichen, wenn Sie es als Framework-abhängig veröffentlichen. Eine Veröffentlichung, die ungefähr 1 Minute dauern sollte, ist jetzt 15+ Minuten ...
Gup3rSuR4c
Zu Ihrer Information: Seit ich dies ursprünglich veröffentlicht habe, hat Microsoft die Azure App Services aktualisiert , um native Unterstützung für .NET Core 3.1 bereitzustellen . Aus diesem Grund habe ich die Warnung bezüglich der HTTP Error 500.30 - ANCM In-Process Start FailureNachricht aus meiner ursprünglichen Nachricht entfernt. Zuvor war es daher erforderlich, eine vollständig eigenständige Verteilung Ihrer Anwendung zu veröffentlichen. (Allerdings gibt es normalerweise eine Verzögerung von 2-3 Tagen zwischen dem Löschen einer neuen Version von .NET Core und der Integration in die Azure App Service- Umgebung. Dies ist daher hilfreich, um dies bei zukünftigen Updates zu berücksichtigen.)
Jeremy Caney
1
Schön, dass ich nur die Framework-Version in den Projekteigenschaften aktualisiert hatte und mir nicht einmal Gedanken über die .pubxml-Datei gemacht habe. Dies führte dazu, dass meine Veröffentlichung hängen blieb, nachdem die .pubxml auf "netcoreapp3.1" aktualisiert wurde, funktionierte sie einwandfrei. Danke
Demoncodemonkey
2

Projektordner öffnen;

  • Navigieren Sie zu Ordner Eigenschaften >> PublishProfiles
  • Öffnen Sie die Datei FolderProfile.pubxml und ändern Sie Version 3.0 in 3.1

    netcoreapp3.1

  • Erstellen Sie abschließend Ihre Anwendung neu, bevor Sie sie veröffentlichen

Kenneth Korir
quelle
Guter Aufruf zur Bereitstellung expliziter Anweisungen zum pubxmlmanuellen Ändern der Datei, insbesondere angesichts der Dummheit, diese Werte über die Visual Studio 2019- GUI zu ändern . Ich habe diese Details in meine ursprüngliche Antwort aufgenommen, sodass diese Option explizit erläutert wird. Vielen Dank!
Jeremy Caney
0

Veränderung

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

funktioniert bei mir.

Libertad
quelle
1
Für ASP.NET Core 3.1 sollten alle Microsoft.AspNetCoreBibliotheken 3.1.0gemäß den Versionshinweisen zu Microsoft v3.1 aktualisiert werden . Ihr Ansatz ist möglicherweise eine gültige Lösung für ähnliche Probleme in ASP.NET Core 2.2 , vorausgesetzt, der Fehler wurde nicht wie in meinem Fall durch eine Nichtübereinstimmung zwischen Ihnen csprojund den pubxDateien verursacht .
Jeremy Caney
Die Version von zwei oben genannten Paketen ist derzeit in 2.2.0 und als neueste Version gekennzeichnet.
Libertad
1
@ Libertad, müssen Sie Ihre Visual Studio-Installation auf Version 16.4.0 aktualisieren, um die neueste Version von Dot Net Core 3.1
Navule
@navule mein VS ist aktuell. Die oben genannten Pakete sind nur Nuget-Pakete. Werfen Sie einen Blick darauf: nuget.org/packages/Microsoft.AspNetCore und sehen Sie die neueste Version
Libertad