927 votes

Le fichier de métadonnées '.dll' est introuvable.

Je travaille sur un projet WPF, C# 3.0, et j'obtiens cette erreur :

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

C'est ainsi que je référence mes contrôles d'utilisateur :

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>

Cela se produit après chaque échec de la compilation. La seule façon d'obtenir la compilation de la solution est de commenter tous mes contrôles utilisateur et de recompiler le projet, puis de décommenter les contrôles utilisateur et tout va bien.

J'ai vérifié les ordres de construction et les configurations des dépendances.

Comme vous pouvez le voir, il semble avoir tronqué le chemin absolu du fichier DLL... J'ai lu qu'il y avait un bug avec la longueur. Est-ce un problème possible ?

C'est très ennuyeux et le fait de devoir commenter, construire et décommenter la construction devient extrêmement fatigant.

12 votes

J'ai eu un problème similaire (obtenir la même erreur que celle indiquée dans le titre) et je l'ai résolu en nettoyant et en reconstruisant le projet. Pour référencer correctement d'autres projets, je n'ai aucune idée

7 votes

J'ai marqué la réponse de Matt car elle semble avoir fonctionné pour la plupart des gens, mais elle n'a pas résolu mon problème initial. Je pense toujours que le problème est lié à la limite maximale de chemins d'accès de Windows. Voir ma réponse ci-dessous.

4voto

Antonin GAVREL Points 559

J'avais une classe en 4.6.1 qui faisait référence à une interface qui était en 4.6.2... la mise à jour de la classe en 462 a réglé le problème.

3voto

CoderRoller Points 473

J'ai reçu cette erreur après avoir ouvert un projet dans lequel Entity Framework était référencé, j'ai donc supprimé ces références et réinstallé Entity Framework version 6.0.0.0 via le gestionnaire d'acces de cette manière :

install-package entityframework -version 6.0.0.0

L'erreur s'affichant toujours, j'ai pensé que ces références étaient là parce qu'il y avait une ancienne version d'Entity Framework censée être "préinstallée" sur le projet, mais qu'elle ne fonctionnait pas vraiment.

Donc je suis allé jusqu'au dossier packages.config et j'ai remarqué qu'il y avait une autre référence :

<packages>
  **<package id="EntityFramework" version="5.0.0" targetFramework="net45" />**
  <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
</packages>

J'ai ensuite supprimé la ligne, nettoyé et reconstruit le projet et la solution conteneur, et cela a finalement fonctionné.

3voto

Jack Fairfield Points 696

J'ai eu le même problème. Dans mon cas, le projet se construisait toujours en mode release et c'est seulement lorsque j'ai essayé de le construire en mode debug qu'il a échoué.

Ce que j'ai fini par faire pour résoudre le problème a été de simplement copier toutes les dlls (et autres fichiers de mon dossier release) dans mon dossier debug. Après avoir fait cela pour chaque projet, les erreurs ont disparu.

3voto

drfaka Points 31

J'ai eu un problème similaire lorsque j'ai décompilé une très vieille bibliothèque, qui a été déployée dans un environnement de production, mais le code source a été perdu.

J'ai pris le .dll, décompilé et généré les projets et la solution. Je n'ai pas pu construire la solution à cause de plusieurs erreurs de ce type.

Les conseils donnés dans les réponses précédentes n'ont pas aidé, mais après un certain temps, j'ai remarqué que des références manquaient dans certains projets à plusieurs assemblages comme System.dll.

Supposons qu'un projet A dépende d'un projet B. Il n'y a pas de référence à System.dll dans le projet B, mais l'erreur après la construction est du type "Metadata file 'B.dll' could not be found".

Il n'y a pas eu d'erreur concernant l'absence de System.dll dans le projet B.

L'ajout de référence sur des bibliothèques comme System.dll dans le projet B a résolu le problème. (System.Data, System.DirectoryServices, etc.)

3voto

Nick Points 1210

Dans mon cas, ces erreurs ont été causées par une corruption dans le gestionnaire de paquets NuGet. Les sous-projets de la solution n'étaient pas construits, mais aucune erreur n'apparaissait à cause des erreurs de métadonnées.

Une fois que tous les paquets NuGet ont été corrigés, le projet a pu à nouveau se construire correctement.

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