web-dev-qa-db-fra.com

Un assembly spécifié dans le manifeste des dépendances de l'application (...) est introuvable.

J'ai mis à niveau Microsoft.AspNetCore de 2.0.3 à 2.0.5 et mon projet WebAPI, bien que s'exécutant avec succès en local, ne parvient pas à démarrer en production (IIS). Tout allait bien en production jusqu'à cette mise à niveau. Le message d'erreur généré dans le répertoire des journaux est le suivant:

Error:
  An Assembly specified in the application dependencies manifest (MyProject.WebAPI.deps.json) was not found:
    package: 'Microsoft.AspNetCore.Mvc.Abstractions', version: '2.0.2'
    path: 'lib/netstandard2.0/Microsoft.AspNetCore.Mvc.Abstractions.dll'

  This Assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
    aspnetcore-store-2.0.5.xml

Quelqu'un pourrait-il m'expliquer les détails de ce que cela signifie exactement? Je suppose que c'est une sorte de non concordance de version, mais pourquoi cela se produit-il? Je pensais que les dernières versions stables des paquets NuGet n'étaient pas supposées avoir de tels problèmes.

J'ai pu résoudre le problème en rétrogradant Microsoft.AspNetCore.All de 2.0.5 à 2.0.3, mais je souhaitais trouver une meilleure solution au problème afin que je puisse utiliser la version la plus récente de ce package.

27
KSwift87

Le SDK est généralement installé sur les machines de développement, mais uniquement en exécution.

Ajoutez ce qui suit à votre fichier .csproj et publiez à nouveau.

<PropertyGroup>               
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
45
Steve Tolba

Pour moi, la réponse marquée n'a pas résolu le problème. Mon problème était en essayant d'ajouter-migration

Add-Migration -Name initial-migration -Context Mysln.Data.MyDbContext -StartupProject Mysln -Project Mysln.Core

Et l'erreur était comme ça: enter image description here

Et je l'ai résolu en rétrogradant tous mes packages Entityframework vers la version 2.0.0 au lieu de la dernière version 2.2.0 avec prévisualisation.

3
Marzouk

Pour résoudre la première moitié du message d'erreur, An Assembly specified in the application dependencies manifest (…) was not found veillez à toujours utiliser la sortie de publication lors du déploiement sur un serveur cible.

Pour une application autonome, il peut être trouvé dans

bin\Release\netcoreapp2.0\win81-x64\publish

ou pour les déploiements dépendants de la structure dans

bin\Release\netcoreapp2.0\publish

Les résultats dans les répertoires ci-dessus sont destinés à être utilisés uniquement en développement, car ils sont spécifiques à la configuration machine et utilisateur construite avec.

Tiré d'un réponse liée.

2
Sean Saleh

J'ai eu cette erreur mais ma solution était quelque peu différente de celle affichée ci-dessus. Mon problème était que je déployais via un fichier Zip et lors de la construction du fichier Zip, je n'incluais pas les sous-répertoires, donc les fichiers requis n'étaient pas inclus.

Donc, si vous publiez via un fichier Zip, veillez à inclure tous les sous-dossiers lors de la création du fichier Zip.

0
zgirod

2 centimes: Si vous prenez simplement dans le dossier de construction, les DLL pour la dépendance ne sont pas fournies. Si vous publiez le dossier, ils le sont. C'était la solution pour moi.

0
user1883961