web-dev-qa-db-fra.com

ASP .NET CORE n'a pas pu trouver le fichier ou l'assembly avec l'assembly personnalisé

J'ai rencontré un problème étrange.

J'ai essentiellement ma propre pile Web pour .NET-core que j'ai intégrée dans quelques .dll, et je veux les référencer à partir d'une autre ASP CORE-solution.

VS semble trouver les assemblys, où je peux parcourir les types, etc. Je peux également créer le projet sans aucun problème, mais lorsque IIS exécute ensuite le serveur, j'obtiens une erreur de serveur interne indiquant:

FileNotFoundException: impossible de charger le fichier ou l'assembly 'myDLL, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'. Le système ne peut pas trouver le fichier spécifié.

Les DLL référencées sont dans le dossier de débogage, et la chose vraiment étrange est que si je crée un nouveau projet ASP Core dans la même solution que la pile Web, je peux le référencer et l'utiliser) sans aucun problème.

Pourquoi cela ne se produit-il que lors de l'exécution sur un projet en dehors de la solution de la pile Web, et que puis-je faire pour la rendre exécutable partout?

21
Tokfrans

L'outil .NET Core dans VS 2017 (<aperçu 15.3)/.NET CLI <2.0 ne prend pas entièrement en charge le référencement des assemblys sur le disque. Vous devez empaqueter la bibliothèque en tant que paquet NuGet ou utiliser une référence de projet ("même solution"). La raison technique est que tous les assemblages et versions requis sont résolus lors de la compilation et écrits dans le .deps.json fichier. Lors du chargement d'assemblys arbitraires, cela peut échouer car l'assembly ou ses dépendances sont introuvables (ou en conflit les uns avec les autres).

32
Martin Ullrich

pour charger le external dll dans core projet, nécessaire pour:

  1. vs 2017 avec la version 15.3 ou supérieure.
  2. Microsoft.Extensions.DependencyModel Package NuGet installé dans votre projet.
0
A.R.F