Das angegebene Framework 'Microsoft.AspNetCore.App', Version '3.1.0' wurde für eine Linux Azure WebApp nicht gefunden

9

Problem

Nach dem Upgrade einer .Net Core 2.2 Linux-Webanwendung auf .Net Core 3.1 in Azure ist die Anwendung Specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not foundfehlerhaft. Ich bin sogar so weit gegangen, eine neue Linux-Webanwendung mit .Net Core 3.1 zu erstellen, und nach der bash-Eingabeaufforderung wird immer noch dotnet --list-runtimesals ausgegeben 2.2.7.

Einzelheiten

Website ausgefallen

Anwendungsfehler

Logstream

Die Berichtsanwendung ist ausgefallen, da .net Core 3.1 nicht gefunden werden kann.

Logstream

Neue .net Core Web App erstellt

3.1 Linux Webapp in North Central, gleiches Problem

Neue Web-App erstellt

Sichergestellt, dass es in Nord-Zentral-USA lief

Laut https://aspnetcoreon.azurewebsites.net/ sollte .netCore 3.1 vollständig unterstützt werden

Noch .net Core 2.2.7 cmd prompt 2.2.7

opt/dotnet/runtimes listet 3, 3.0 und 3.0.0 auf, aber keine 3.1` Geben Sie hier die Bildbeschreibung ein

Umgebungsvariablen

Meine Umgebungsvariablen in der Azure-Liste FRAMEWORK_VERSION = ltsanstelle von 3.1

Veröffentlichen

Dies wurde aus einer Azure Devops CI-Pipeline mithilfe einer Azure AppService Deploy-Aufgabe veröffentlicht. 3.1 war hier nicht verfügbar, also habe ich gewähltLTS

Devops veröffentlichen Pipeline

Update 1

Es scheint, dass der Schuldige 3.1 im Framework-Stack in Azure Devops Web App / Web Service-Aufgaben fehlt.

Jedes Mal, wenn ich über CI veröffentliche, wird das Web-App-Framework auf die in dieser Dropdown-Liste ausgewählten Elemente aktualisiert. Wenn ich das Framework in der Azure-Webanwendung manuell auf 3.1 ändere, wird die Site aufgerufen. Bei der nächsten Veröffentlichung wird es jedoch wieder heruntergefahren, da das Framework auf die Einstellungen im ci zurückgesetzt wird.

Neue Frage

Wie kann ich die Azure Devops Release-Pipeline dazu bringen, eine .net Core 3.1-Aufgabe zu veröffentlichen?

Update 2

Verwandte Azure Devops Forum Beitrag

Wird derzeit am 23.02.2020 untersucht

.Net Core 3.1-Bereitstellungspipeline für den Linux App Service

Vorgeschlagene Problemumgehungen

  1. Verwenden Sie YML für die Release-Pipeline und ändern Sie die Version manuell von 3.0auf 3.1, notiert durch Antwort und diesen Thread
  2. Upgrade von einer framework dependentVersion auf eine self contained. Referenz
  3. Downgrade auf .NetCore 3.0
w00ngy
quelle
Anstatt LTS zu verwenden, versuchen Sie es bitte mit dem neuesten (es wird nicht empfohlen, aber versuchen Sie es trotzdem, sehen Sie, ob es funktioniert oder nicht)
Manish
Ich habe es getan und es hat nicht funktioniert. Aber CI scheint das Problem zu sein. Jedes Mal, wenn ich mit CI veröffentliche, ändert sich das Framework in der Web-App in das, was in CI ausgewählt ist. Wenn ich nach einer CI-Veröffentlichung zum App-Dienst gehe und den Laufzeitstapel manuell auf 3.1 ändere, wird die Site bis zur nächsten Veröffentlichung aufgerufen.
22.
Veröffentlichen Sie KEINE Bilder von Code, Daten, Fehlermeldungen usw. - kopieren Sie den Text oder geben Sie ihn in die Frage ein. Wie man fragt
Rob

Antworten:

2

Ich bin auf die gleiche Situation gestoßen, da ich anhand der von Ihnen angegebenen Informationen das Problem beheben konnte, indem ich den Wert manuell in der .yml-Datei von Devops Pipelines Build festgelegt habe. Es scheint, als ob ihnen nur der Wert aus der Dropdown-Liste "RunTime Stack" fehlt. Wenn Sie die .yml-Datei des Erstellungsprozesses wie folgt manuell aktualisieren:

Geben Sie hier die Bildbeschreibung ein

Dadurch wird die richtige Framework-Version ausgewählt. Hoffentlich wird dadurch Ihr Problem mit der Bereitstellung der Azure Devops CI-Pipeline behoben.

Taran Beekhuis
quelle
Ich fragte mich, ob dies das Problem lösen würde. Ich werde versuchen, es zu versuchen. Es könnte ein bisschen Arbeit für mich sein, meine gesamte Version in yml umzuwandeln, also hatte ich es noch nicht ausprobiert. Ich werde Sie über die Ergebnisse informieren! Schätzen Sie die Antwort!
w00ngy
2
Es scheint möglich zu sein, die Zeichenfolge DOTNETCORE | 3.1 direkt in das Feld Runtime Stack einzugeben (und das Problem wird behoben). Sie müssen also die Release-Pipeline nicht in yaml konvertieren!
Rdavisau
Ich wollte nur das Gleiche sagen wie @rdavisau - die einfachste Lösung besteht darin, die 3.1-Version in die Runtime Stack-Box zu überschreiben, und sie scheint den Wert zu übernehmen.
Will Appleby
Veröffentlichen Sie KEINE Bilder von Code, Daten, Fehlermeldungen usw. - kopieren Sie den Text oder geben Sie ihn in die Frage ein. Wie man fragt
Rob
rdavisau - das hätte mir viel zeit gespart! lol.
w00ngy
1

Eine einfachere Lösung besteht darin, DOTNETCORE|3.1das Dropdown-Menü Runtime Stack in devops einzugeben. (Danke rdavisau!)

Geben Sie hier die Bildbeschreibung ein

w00ngy
quelle