Le framework spécifié «Microsoft.AspNetCore.App», version «3.1.0» est introuvable pour une application Web Linux Azure

9

Problème

Après la mise à niveau d'une application Web Linux .Net Core 2.2 vers .Net Core 3.1 dans Azure, l'application est arrêtée avec une Specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not founderreur. Je suis même allé jusqu'à créer une nouvelle application Web Linux avec .Net Core 3.1, et après que l'invite de commande bash soit toujours en sortie dotnet --list-runtimessous 2.2.7.

Détails

Site Web en panne

Erreur d'application

Logstream

l'application de rapport est arrêtée car elle ne trouve pas .net core 3.1.

Logstream

Création d'une nouvelle application Web .net core

3.1 webapp linux dans North Central, même problème

Création d'une nouvelle application Web

Assuré qu'il fonctionnait dans le centre-nord des États-Unis

Selon https://aspnetcoreon.azurewebsites.net/ , devrait avoir une prise en charge complète de .netCore 3.1

Toujours .net core 2.2.7 invite cmd 2.2.7

opt/dotnet/runtimes répertorie 3, 3.0 et 3.0.0, mais aucun 3.1 » entrez la description de l'image ici

Variables d'environnement

Mes variables d'environnement dans la liste Azure FRAMEWORK_VERSION = lts , au lieu de 3.1

Édition

Cela a été publié à partir d'un pipeline ci-dessous devops azure à l'aide d'une tâche Azure AppService Deploy. 3.1 n'était pas disponible ici, j'ai donc choisiLTS

Devops release pipeline

Mise à jour 1

Il semble que le coupable soit absent de la pile du framework 3.1 dans les tâches Azure Devops Web App / Web Service.

Chaque fois que je publie à partir de CI, le cadre de l'application Web est mis à jour selon ce qui est sélectionné dans cette liste déroulante. Si je change manuellement le cadre en 3.1 sur l'Azure Web App, le site apparaît. Mais ensuite, lors de la prochaine publication, il redescend car il rétablit le cadre dans les paramètres de l'IC.

Nouvelle question

Comment obtenir le pipeline Azure Devops Release pour publier une tâche .net core 3.1?

Mise à jour 2

Article de forum Azure Devops connexe

En cours d'investigation au 23/02/2020

.Net Core 3.1 déploie un pipeline vers Linux App Service

Solutions de contournement suggérées

  1. Utilisez YML pour le pipeline de versions et modifiez manuellement la version de 3.0à 3.1, notée par la réponse et ce fil
  2. Mise à niveau d'une framework dependentversion vers une self contained. Référence
  3. Rétrograder vers .NetCore 3.0
w00ngy
la source
Au lieu d'utiliser LTS, essayez d'utiliser la dernière version (ce n'est pas recommandé mais essayez quand même, vous verrez si cela fonctionne ou non)
Manish
Je l'ai fait, et cela n'a pas fonctionné. Mais CI semble être le problème. Chaque fois que je publie avec CI, le cadre de l'application Web change en ce qui est sélectionné dans CI. Si je vais au service d'application après une publication CI et que je change manuellement la pile d'exécution en 3.1, le site s'affiche jusqu'à la prochaine publication.
w00ngy
NE PAS publier d'images de code, de données, de messages d'erreur, etc. - copiez ou saisissez le texte dans la question. Comment demander
Rob

Réponses:

2

J'ai rencontré la même situation, en utilisant les informations que vous avez fournies, j'ai pu résoudre le problème en définissant manuellement la valeur dans le fichier .yml de Devops Pipelines Build. Il semble qu'il leur manque juste la valeur du menu déroulant RunTime Stack. Si vous mettez à jour manuellement le fichier .yml des processus de génération comme indiqué ici:

entrez la description de l'image ici

Cela sélectionnera la bonne version du framework. Espérons que cela résoudra votre problème avec le déploiement du pipeline Azure Devops CI.

Taran Beekhuis
la source
Je me demandais si cela résoudrait le problème. Je vais essayer de lui donner un coup. Cela pourrait être un peu de travail pour moi de convertir toute ma version en yml donc je ne l'avais pas encore essayé. Je vous ferai part des résultats! Appréciez la réponse !!
w00ngy
2
Il semble qu'il soit possible d'entrer la chaîne DOTNETCORE | 3.1 directement dans la zone Runtime Stack (et cela résout le problème) - donc pas besoin de convertir le pipeline de versions en yaml!
rdavisau
J'allais juste dire la même chose que @rdavisau - le correctif le plus simple consiste à écraser la version 3.1 dans la boîte Runtime Stack et il semble prendre la valeur.
Will Appleby
NE PAS publier d'images de code, de données, de messages d'erreur, etc. - copiez ou saisissez le texte dans la question. Comment demander
Rob
rdavisau - cela m'aurait fait gagner beaucoup de temps! lol.
w00ngy
1

Une solution plus simple consiste à taper DOTNETCORE|3.1dans la liste déroulante Runtime Stack dans devops. (Merci rdavisau!)

entrez la description de l'image ici

w00ngy
la source