J'ai une application ASP.NET Core 3. préexistante qui est déployée avec succès sur un Azure App Service (en utilisant le AspNetCoreModuleV2
module). Après la mise à niveau de l'application vers (version actuelle de) ASP.NET Core 3.1, l'application se construit et s'exécute correctement sur ma version locale de IIS Express. Lorsque j'essaie de publier sur Azure App Service en utilisant (la version d'aujourd'hui de) Visual Studio 16.4, cependant, je reçois l'erreur suivante:
Le fichier d'actifs 'C:\Project\obj\project.assets.json' n'a pas de cible pour '.NETCoreApp, Version = v3.0'. Assurez-vous que la restauration a été exécutée et que vous avez inclus "netcoreapp3.0" dans TargetFrameworks pour votre projet.
<PackageReference>
à Microsoft.AspNetCore
, Microsoft.EntityFrameworkCore
, et Microsoft.Extensions
a été mis à jour vers 3.1.0
obj
pour m'assurer qu'il n'y a pas de références persistantes.3.1.100
version de Microsoft.PackageDependencyResolution.targets
.J'obtiens que quelque chose est toujours accroché aux dépendances . NET Core 3.. Mais on ne sait pas pourquoi cela ne cause que des problèmes lors du déploiement. Azure App Service n'est-il pas encore prêt pour . NET Core 3.1? Ou est-ce un problème avec les cibles de résolution des dépendances?
Le problème immédiat, tel qu'il a été identifié dans la question initiale, est lié à l'existence de deux endroits où <TargetFramework>
est défini:
csproj
)pubxml
)Le <TargetFramework>
doit être mis à jour dans les deux emplacements , et doit correspondre exactement . Sinon, la publication ne pourra pas trouver ses cibles dans le project.assets.json
fichier, qui est construit sur la base du <TargetFramework>
dans le fichier csjproj
.
Remarque: Vous pouvez vous attendre à ce que le fichier
pubxml
s'en remette au<TargetFramework>
défini dans le fichiercsproj
, mais ce n'est pas le cas .
Pour effectuer cette modification via un éditeur de texte,
~/Properties/PublishProfiles
dossier.*.pubxml
que vous souhaitez modifier.<TargetFramework>
à netcoreapp3.1
:<TargetFramework>netcoreapp3.1</TargetFramework>
Pour effectuer cette modification via Visual Studio 2019 IDE,
netcoreapp3.1
, cliquez sur l'icône de modification à côté.netcoreapp3.1
.Avertissement: Lorsque vous utilisez l'EDI, vous pouvez rencontrer un problème ici. Lors de la modification du profil, vous verrez probablement la nouvelle valeur de votre fichier de projet (c'est-à-dire
netcoreapp3.1
) déjà sélectionné. Lorsque vous cliquez sur Enregistrer , cependant, il reviendra à l'original valeur (par exemple,netcoreapp3.0
dans mon cas). C'est parce que vous n'avez pas réellement modifié la valeur dans l'interface, ce que Visual Studio erreur car il n'y a pas de modification de valeurs sous-jacentes . Si vous basculez temporairement une autre valeur (par exemple, Configuration ), Visual Studio reconnaîtra qu'une modification s'est produite et les deux valeurs seront mises à jour dans le*.pubxml
fichier.
Merci encore à @PanagiotisKanavos de m'avoir pointé dans la bonne direction (voir commentaires sur le fil d'origine).
Ouvrez le dossier du projet;
Ouvrez le fichier FolderProfile.pubxml puis changez la version . en .1
netcoreapp3.1
Enfin, reconstruisez votre application avant de la publier
changement
<PackageReferenceInclude="Microsoft.AspNetCore"Version="2.2.0" />
to
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
travaille pour moi.