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.

8voto

David Ford Points 21

Dans mon cas, le problème était que j'avais supprimé manuellement un fichier de non-compilation qui était marqué comme "manquant". Une fois que j'ai supprimé la référence au fichier manquant et recompilé, tout s'est bien passé.

8voto

Eric Points 11

Dans mon cas, le problème a été causé par un projet commun qui contenait un nom de classe en double (sous un nom de fichier différent). Il est étrange que Visual Studio n'ait pas pu le détecter et qu'il ait fait échouer le processus de construction.

8voto

Dangph Points 5561

J'ai eu ce problème dans Visual Studio 2012 dans une solution qui avait de nombreux projets. La reconstruction manuelle de chaque projet de la solution dans le même ordre que l'ordre de construction du projet (clic droit et reconstruction dans l'explorateur de solutions) a permis de résoudre le problème.

Finalement, j'en ai trouvé un qui m'a donné une erreur de compilation. J'ai corrigé l'erreur, et la solution s'est construite correctement après cela.

6voto

Arun Prasad Points 89

Moi aussi j'ai eu la même erreur. Il se cache comme dans le chemin ci-dessous. Le chemin auquel je me suis référé pour le fichier DLL est comme " D:\Assemblies Dossier \Assembly1.dll ".

Mais le chemin original dans lequel l'assemblée s'est référée était " D:\Assemblies %20Folder \Assembly1.dll ".

En raison de cette variation du nom du chemin, l'assemblage n'a pas pu être récupéré à partir de son chemin d'origine, d'où l'erreur "Metadata not found".

La solution est dans la question Stack Overflow Comment remplacer tous les espaces par %20 en C# ? .

6voto

Murat Yıldız Points 1829

La plupart des méthodes expliquées ici n'ont pas résolu le problème pour moi.

Finalement, j'ai résolu le problème en appliquant les étapes suivantes :

1. Fermez Visual Studio.

2. Supprimez tout le contenu des dossiers de poubelle de chaque projet.

3. Ouvrir la solution et la reconstruire.

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