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.

0voto

Beaucoup de ces réponses ressemblent à des essais et des erreurs. Dans mon cas, c'était simple : la dll référencée n'était pas trouvée à cet endroit précis.

Si vous voyez les erreurs de construction, typiquement dans ce cas, la construction se plaint de plusieurs dlls. La clé est de trouver la bonne dll qui manque. Dans mon cas, un des projets de ma solution avait une référence directe de dll au lieu d'une référence de projet. J'ai donc dû construire le projet qui produit cette dll avant de construire la solution défaillante pour m'assurer que la solution défaillante trouve la dll manquante à cet endroit précis.

Wow c'était simple, mais assez difficile à mettre en mots.

0voto

Alex Valchuk Points 472

Ce problème peut survenir parce que vous utilisez des fonctionnalités qui ne sont pas prises en charge par la version de l'application .net sélectionnés pour le projet.

Dans mon cas, la raison est que j'ai utilisé ? ? pour vérifier s'il est nul et lever l'exception.

Il est assez étrange que VS n'informe pas sur la raison réelle du problème dans la liste des erreurs de construction.

Mais vous pouvez trouver ces informations dans le Sortie journaux de la construction.

0voto

npineda Points 16

La suppression des dossiers bin/obj puis la reconstruction du projet ont fonctionné pour moi.

Dans mon cas, je pense qu'une erreur d'exécution s'est produite la première fois que j'ai construit le projet et que mon fichier dll n'a pas été généré.

Cela s'est produit lors du référencement d'un projet à partir d'un autre. Le projet auquel je faisais référence était celui qui présentait le problème.

0voto

J'ai eu ce problème après avoir mis à jour les dlls/nuget.

J'ai pu résoudre ce problème manuellement en corrigeant le fichier .csproj. La plupart du temps, la version n'était pas mise à jour dans le fichier. Par exemple :

<Analyzer> Include="..\packages\Microsoft.CodeAnalysis.**VersionCheckAnalyzer.2.9.1**\analyzers\dotnet\Microsoft.CodeAnalysis.VersionCheckAnalyzer.dll"/>

<Analyzer> Include="..\packages\Microsoft.CodeAnalysis.**VersionCheckAnalyzer.2.9.7**\analyzers\dotnet\Microsoft.CodeAnalysis.VersionCheckAnalyzer.dll"/>

0voto

yoc Points 16

J'ai eu cette erreur lorsque j'ai essayé de publier mon projet,

Toutes les réponses ci-dessus, ne m'ont pas aidé...

Je change juste mon déploiement et le publier réussi !

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