296 votes

Impossible de charger le fichier ou l'assemblage ou l'une de ses dépendances

J'ai un autre de ces problèmes "Impossible de charger le fichier ou l'assemblage ou l'une de ses dépendances".

Informations supplémentaires : Impossible de charger fichier ou assemblage Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutre, PublicKeyToken=31bf3856ad364e35' or l'une de ses dépendances. La définition du manifeste de l'assemblage de l'assemblage localisé ne ne correspond pas à la référence de l'assemblage. (Exception de HRESULT : 0x80131040)

Je n'ai aucune idée de la cause de ce problème ou de la façon dont je pourrais le déboguer pour en trouver la cause.

J'ai effectué une recherche dans les fichiers .csproj de mon catalogue de solutions, et partout où j'ai l'unité, je l'ai :

Référence Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutre, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"

Je ne trouve nulle part de référence allant à l'encontre de la version 1.2.0.0 dans aucun de mes projets.

Avez-vous une idée de la façon dont je peux résoudre ce problème ?

J'apprécierais également des conseils sur la manière de déboguer des problèmes de ce type en général.

1 votes

Est-ce que l'un de vos assemblages référencés pourrait utiliser des éléments dans de vieilles Unity bibliothèque ?

3 votes

Probablement... mais comment trouver quels assemblages ? J'ai beaucoup de projets dans ma solution et beaucoup de suspects potentiels... les essais et erreurs de force brute semblent un peu désespérés...

0 votes

Il suffit de regarder les assemblages référencés dans le projet pour lequel vous obtenez cette erreur.

125voto

Nour Sabouny Points 1608
  1. Vérifiez si vous faites référence à une assemblée qui, à son tour, fait référence à une ancienne version de unity. Par exemple, disons que vous avez un assemblage appelé ServiceLocator.dll qui a besoin d'une ancienne version de l'assemblage Unity, maintenant lorsque vous faites référence à l'assemblage ServiceLocator vous devez le fournir avec l'ancienne version de Unity, et c'est ce qui pose problème.

  2. Il se peut que le dossier de sortie où tous les projets construisent leurs assemblages ait une ancienne version de unity.

Vous pouvez utiliser FusLogVw pour savoir qui charge les anciens assemblages, il suffit de définir un chemin pour le journal, et d'exécuter votre solution, puis de vérifier (dans FusLogvw) la première ligne où l'assemblage Unity est chargé, double-cliquez dessus et voyez l'assemblage appelant, et voilà.

8 votes

Où se trouve le fichier journal de FuseLogVw ?

1 votes

Pour éviter de devoir trouver le fichier journal, vous pouvez spécifier un chemin d'accès personnalisé : Paramètres, cochez la case Activer le chemin de journal personnalisé, saisissez un chemin de journal personnalisé, actualisez.

88voto

kranthi Points 111

Ouvrir IIS Manager

Sélectionner les pools d'applications

puis sélectionnez le pool que vous utilisez

allez dans les paramètres avancés (sur le côté droit)

Changez le drapeau de l'application 32 bits false en true.

0 votes

IIS -> sélectionnez chaque ApplicationPool -> Paramètres de base -> vérifiez si la dernière version du framework est sélectionnée dans la liste déroulante ".NET Framework version".

0 votes

Vous pouvez également cliquer avec le bouton droit de la souris sur votre projet dans VS . et enlever la coche "prefer 32 bit".

0 votes

Merci. Ça a marché. Eh bien, c'était déjà Vrai dans mon cas, juste pour essayer. Je l'ai fait False et ça a marché.

82voto

Robotnik Points 907

Pour moi, aucune des autres solutions n'a fonctionné (y compris la stratégie de nettoyage/reconstruction). J'ai trouvé une autre solution de contournement qui consiste à fermer et rouvrir Visual Studio .

Je suppose que cela oblige Visual Studio à recharger la solution et tous les projets, en revérifiant les dépendances dans le processus.

42 votes

Si vous ne croyez pas que ça va marcher, essayez au moins. Je ne pouvais pas y croire moi-même jusqu'à ce que je le fasse.

4 votes

Cela a fonctionné pour moi

0 votes

Visual Studio 2019 et c'est toujours la solution pour moi.

54voto

Alexey Anufriyev Points 1810

Essayez de nettoyer les dossiers Debug et Release dans votre solution. Puis supprimez et ajoutez à nouveau l'unité.

4 votes

Ce problème peut être causé par beaucoup de choses ... votre solution a résolu mes problèmes, et pourrait en résoudre d'autres aussi.

1 votes

@ScottRippey Cela a également fonctionné pour moi. J'ai d'abord supprimé tous les fichiers .pdb, puis j'ai rechargé mon projet et l'ai reconstruit.

0 votes

Ça a marché pour moi, j'ai juste supprimé le bin/ et construit à nouveau la solution.

17voto

Riddhi M. Points 40

Ce qui suit a fonctionné pour moi.

  • Supprimer les fichiers temporaires C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary Fichiers ASP.NET
  • Fermer VSTS et le rouvrir
  • Suppression et ajout des mêmes DLL (Note : vous ajoutez les mêmes versions correspondantes)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X