140 votes

Erreur "Le fichier de métadonnées '... \Release\project.dll ' n'a pas pu être trouvé dans Visual Studio"

Récemment, j'ai commencé à recevoir ce message de façon aléatoire :

Fichier de métadonnées '... \Release\project.dll n'a pas pu être trouvé dans Visual Studio

J'ai une solution qui contient plusieurs projets. Le mode de construction actuel est Debug et les configurations de tous les projets sont définies sur Debug. Mais lorsque j'essaie d'exécuter le projet principal, il me donne parfois quelques erreurs, qui sont toutes "Metadata file '... \Release\projectX.dll Impossible à trouver" - et, regardez, il est question du dossier RELEASE, alors que le mode actuel est Debug. Pourquoi ? J'ai essayé de chercher une référence à "Release \projectX.dll " dans tous les fichiers de solution, et j'en ai trouvé un dans le fichier ResolveAssemblyReference.cache.

J'ai fait une bonne recherche sur Internet et j'ai trouvé quelques personnes ayant un problème similaire, mais il n'y avait pas de solution, ou du moins pas de solution fonctionnelle.

J'ai essayé de supprimer les références à ces projets et de les lire, mais au bout d'un certain temps, je recommence à avoir ces erreurs.

Cela semble être un bug. Pourquoi cherche-t-il les projets référencés dans les dossiers Release alors que j'utilise toujours le mode Debug ?

PS. Pour ceux qui ont rencontré ce problème : je n'ai pas pu le résoudre de manière simple. Il a disparu seulement après avoir réinstallé Windows :(

0 votes

La première chose à faire pour ce genre de problème est de supprimer le fichier .suo et de le reconstruire.

0 votes

Ce problème peut se produire si une dll référencée utilise une version différente (inférieure) de .net Framework.

0 votes

J'avais ce problème de façon constante jusqu'à ce que je désactive les constructions parallèles. Je pense qu'il y a un bogue dans la vérification des dépendances des constructions parallèles, peut-être lié à la mise en cache des informations périmées. (Pour mémoire, j'utilise les constructions parallèles maintenant, et je reconstruis simplement si le problème se produit, ce qui fonctionne généralement).

140voto

beauXjames Points 1565

Tout le monde a raison... essayez tout... (dans l'ordre de peu à beaucoup de temps perdu)

  1. Avez-vous un mauvais code ? Corrigez-le d'abord.
  2. Nettoyer la solution et redémarrer Visual Studio
  3. Supprimer / Ajouter des références
  4. Vérifiez votre ordre de construction avec les grands projets et vérifiez.
  5. Reconstruction manuelle des sous-projets
  6. Copier manuellement les dll entre projets dans les dossiers bin associés
  7. Allez prendre un café, jouez au flipper et revenez demain... vous pourriez penser à autre chose entre-temps.

17 votes

Vous devez nettoyer toutes les ERREURS et rendre les solutions/projets stables.

0 votes

Cela se produit à cause de la différence de noms dans le nom du dossier et le nom de l'espace de nom. Si vous créez un espace de nom sous un certain nom, et que plus tard vous le renommez, l'espace de nom aura l'ancien nom. Et la compilation prendra l'ancien chemin pour trouver le fichier .dll y .exe fichier . Pour éviter cela, ouvrez le .csproj de chaque espace de nom avec un fichier texte, et trouvez l'ancien chemin dans le fichier. supprimez-le, nettoyez et reconstruisez la solution. Cela a fonctionné pour moi. J'ai passé une journée entière à travailler sur ce problème.

0 votes

Si vous n'avez pas de succès et que cela prend du temps, recommencez simplement à essayer certaines des choses de base d'abord. J'ai commencé à construire des sous-projets, j'ai encore eu des erreurs, mais j'ai ensuite fermé et rouvert VS, reconstruit la solution, tout a fonctionné.

22voto

dapim Points 1

J'ai eu exactement le même problème. Une grosse solution Visual Studio avec plus de 50 projets.

Toutes les références ont été ajoutées en tant que projets. L'ordre de construction des projets est correct (clic droit sur le projet et sélection de l'ordre de construction).

Cependant, lors de la construction de certains projets de niveau supérieur, le projet "Root" dont ils dépendaient n'a pas été construit.

Le problème est que ces projets n'ont pas été sélectionnés pour être construits dans la configuration actuelle (je ne sais pas comment cela s'est produit).

Pour vérifier cela, sélectionnez "Configuration Manager" (menu Build) et vérifiez si les projets problématiques sont configurés pour être construits.

0 votes

Merci ! Cela a bien fonctionné pour moi lorsque, pour une raison quelconque, ma configuration de version n'a pas construit l'un de mes projets.

0 votes

Vous m'avez sauvé la vie !

16voto

dsteinweg Points 768

Lorsque vous dites que vous avez supprimé les références à ces projets et que vous les avez ajoutées à nouveau, comment les avez-vous ajoutées à nouveau, exactement ? Avez-vous utilisé l'onglet "Browse" dans la boîte de dialogue "Add Reference" de Visual Studio ? Ou bien avez-vous utilisé l'onglet "Projects" (qui répertorie les projets voisins dans votre solution) ?

Editar : Si vous utilisez l'onglet "Browse", et ajoutez manuellement la référence à votre .dll qui se trouve dans le dossier /Release, Visual Studio cherchera toujours la .dll à cet endroit, quel que soit le mode dans lequel vous vous trouvez (Debug ou Release).

Si vous avez supprimé le fichier .dll du dossier Release (manuellement ou en utilisant la fonction "Clean Solution"), votre référence sera interrompue car le fichier .dll n'existe pas.

Je vous suggère de supprimer la référence à ProjectX.dll, et de l'ajouter à nouveau - mais cette fois, utilisez l'onglet "Projects" dans le dialogue "Add Reference". Lorsque vous ajoutez une référence de cette façon, Visual Studio sait où trouver la dll appropriée. Si vous êtes en mode Debug, il la récupère dans le dossier /Debug. Si vous êtes en mode Release, le dossier /Release. Votre erreur de compilation devrait disparaître et vous ne ferez plus référence (de manière inappropriée) à une dll de version en mode débogage.

0 votes

J'ai utilisé l'onglet "Browse" dans la boîte de dialogue "Add Reference".

1 votes

Pour moi, Visual Studio avait créé un fichier projectname.v11 de type "Visual Studio Solution User Options". J'ai supprimé ce fichier et redémarré et tout est rentré dans l'ordre.

16voto

Vikram Narkar Points 758

Eh bien, ma réponse n'est pas seulement le résumé de toutes les solutions, mais elle offre plus que cela.

Section (1) :

Dans les solutions générales :

J'ai eu 4 erreurs de ce type ('le fichier de métadonnées n'a pas pu être trouvé') ainsi qu'une erreur disant 'Le fichier source n'a pas pu être ouvert ('Unspecified error ')'.

J'ai essayé de me débarrasser de l'erreur 'metadata file could not be found'. Pour cela, j'ai lu de nombreux articles, blogs, etc. et j'ai trouvé que ces solutions pouvaient être efficaces (je les résume ici) :

  1. Redémarrez VS et essayez de construire à nouveau.

  2. Aller à Explorateur de solutions . Cliquez avec le bouton droit de la souris sur Solution. Allez à Propriétés . Aller à Gestionnaire de configuration . Vérifiez si les cases à cocher sous "Construire sont vérifiés ou non. Si l'un d'entre eux ou tous ne sont pas cochés, vérifiez-les et réessayez de construire.

  3. Si la ou les solutions ci-dessus ne fonctionnent pas, suivez la séquence mentionnée à l'étape 2 ci-dessus, et même si toutes les cases sont cochées, décochez-les, vérifiez à nouveau et essayez de construire à nouveau.

  4. Ordre de construction et dépendances du projet :

    Aller à Explorateur de solutions . Cliquez avec le bouton droit de la souris sur Solution. Allez à "Dépendances du projet... . Vous verrez 2 onglets : Dépendances y Ordre de construction . Cet ordre de construction est celui dans lequel la solution est construite. Vérifiez les dépendances du projet et l'ordre de construction pour vérifier si un projet (disons 'projet1') qui est dépendant d'un autre (disons 'projet2') essaie de se construire avant celui-là (projet2). Cela pourrait être la cause de l'erreur.

  5. Vérifiez le chemin du fichier .dll manquant :

    Vérifiez le chemin de la .dll manquante. Si le chemin contient un espace ou tout autre caractère non valide, supprimez-le et réessayez de le construire.

    Si c'est la cause, ajustez l'ordre de construction.


Section (2) :

Mon cas particulier :

J'ai essayé toutes les étapes ci-dessus avec diverses permutations et combinaisons, en redémarrant VS plusieurs fois. Mais, cela ne m'a pas aidé.

J'ai donc décidé de me débarrasser de l'autre erreur que je rencontrais ('Source File Could Not Be Opened ('Unspecified error ')').

Je suis tombé sur un blog : http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

J'ai essayé les étapes mentionnées dans ce blog et je me suis débarrassé de l'erreur. Le fichier source n'a pas pu être ouvert ('Unspecified error ')'. et étonnamment, je me suis débarrassé d'autres erreurs ('le fichier de métadonnées n'a pas pu être trouvé') également.


Section (3) :

Morale de l'histoire :

Essayez toutes les solutions mentionnées dans la section (1) ci-dessus (et toute autre solution) pour vous débarrasser de l'erreur. Si rien ne fonctionne, suivez le blog mentionné dans la section (2) ci-dessus, supprimez les entrées de tous les fichiers source qui ne sont plus présents dans le contrôle de la source et le système de fichiers de votre fichier .csproj. .


1 votes

J'ai voté pour cette réponse parce que nous avons rencontré ce problème avec un collègue de travail. Son système avait perdu la plupart ou la totalité de ses dépendances, de sorte que lors de la construction, il n'était pas construit dans le bon ordre, car le "fichier de métadonnées pour "whatever.dll" n'existe pas". Nous avons parcouru tous ses projets avec un autre système pour valider toutes les dépendances dont il avait besoin pour chaque projet.

0 votes

Bien... Je suis heureux que ma réponse vous ait été utile.

11voto

jasonh Points 7284

J'ai déjà eu ce problème et la seule façon que j'ai trouvée pour le résoudre est d'exécuter le nettoyage de la solution, puis de redémarrer Visual Studio.

1 votes

Cela n'aide pas dans ma situation, après peu de temps le problème réapparaît.

0 votes

C'est ce qui a réglé le problème pour moi.

3 votes

Celui-là a marché pour moi aussi. J'ai fait plusieurs nettoyages et rien ne fonctionnait. Une fois que j'ai fait un nettoyage et redémarré, ça a recommencé à fonctionner. Comme c'est ennuyeux.

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