Visual studio-erreur de saisie "fichier de métadonnées 'XYZ' introuvable" après édition continue

j'ai trébuché sur un problème qui est vraiment ennuyeux.

Quand je débogue mon logiciel, tout fonctionne bien, mais si je touche un point de rupture et que je modifie le code, quand j'essaie de continuer à tourner, j'obtiens une erreur:

Metadata file 'XYZ' could not be found

après avoir regardé autour pendant un certain temps, j'ai trouvé quelques problèmes similaires , mais ils étaient tous concernant un échec de construction, ce qui n'est pas mon cas (cela se produit seulement après l'édition-continuer).

ce que j'ai essayé jusqu'à présent:

  • mon code est compilé et exécuté.
  • j'ai nettoyé la solution et redémarré VS.
  • j'ai fait en sorte que le projet du fichier manquant soit construit pour la configuration que j'exécute (dans le gestionnaire de configuration).
  • j'ai construit manuellement le projet du fichier manquant.

Quelques informations supplémentaires :

  • peu importe ce que je change, j'obtiens toujours la même erreur (le changement n'est pas lié au fichier manquant).
  • Cela arrive aussi quand j'ai une pause et de continuer (et pas seulement des points d'arrêt)
  • j'exécute le projet en utilisant une configuration personnalisée (gestionnaire de configuration...). Quand je l'exécute en utilisant la configuration par défaut Debug l'erreur ne se produit pas.

des idées?

66
demandé sur Community 2013-12-10 13:41:00

22 réponses

ce qui a finalement résolu le problème était:

  1. nettoyer chaque projet individuellement ( clic droit > nettoyer ).
  2. Reconstruire chaque projet individuellement ( clic Droit > Reconstruire ).
  3. reconstruire le projet de démarrage.

je suppose que pour une raison quelconque, juste le nettoyage de la solution avait un différent effet que le nettoyage spécifique de chaque projet individuellement.

Edit:

Selon le commentaire de @maplemale, il semble qu'il faille parfois supprimer et ajouter de nouveau chaque référence.

96
répondu Avi Turner 2015-02-01 06:59:36

pour autant que je sache, cela se produit lorsque les dépendances du projet sont perturbées pour quelque raison que ce soit (alors que toutes les références entre les projets sont encore intactes). Dans de nombreux cas, il ne s'agit pas d'une question de code. Et pour ceux qui ont plus de quelques projets, passer par eux un à la fois n'est pas acceptable.

il est facile de réinitialiser les dépendances de projet -

  1. sélectionner tous les projets et clic droit décharger
  2. sélectionner tous les projets et clic droit recharger
  3. solution de reconstruction

pour ceux qui ont un problème dans leur code ou un autre problème qui cause ce problème, vous aurez évidemment à résoudre ce problème en premier.

40
répondu Ben Wilde 2016-01-04 16:56:07

une des raisons possibles pourrait être que vous avez mis à jour certains de vos projets (dans la solution) à une version plus élevée, par exemple de .net 4.0 à 4.5 cela s'est produit dans mon cas lorsque j'ai ouvert la solution dans VS 2013 (Créé à l'origine en utilisant VS 2010 et .NET 4.0). Quand J'ai ouvert dans VS 2013 mon projet C++ a été mis à jour à .net 4.5 et j'ai commencé à voir le problème.

13
répondu JSK 2014-06-12 12:14:13

généralement ce genre d'erreur vient avec des erreurs humaines comme si nous changions l'espace de noms d'une manière incorrecte, ou en changeant les noms de dossiers de l'explorateur pour le projet courant etc, où le compilateur est incapable de détecter parfois.

je suis tombé sur la même erreur, pour résoudre que j'ai essayé quelques étapes. Veuillez suivre toutes les étapes :

  1. Propre Solution ensemble
  2. clic droit sur chaque projet de votre solution, allez à Propriétés et faire de votre namespace par défaut ainsi que du nom de l'assemblée par défaut le même que dans votre code (I. e namespace before class name)
  3. vérifiez les noms de dossiers pour chaque projet en passant par l'Explorateur(où se trouve votre solution de projet). Si le nom de votre projet ne correspond pas, faites-le similaire (comme étape 2 ) à eux.
  4. supprimez toutes vos références de chaque projet concernant une autre solution, et ajoutez-la à nouveau.
  5. dans votre dossier de Solution de projet, vous trouverez le fichier Visual c# Project. Faites un clic droit et ouvrez avec bloc-notes. Dans vos lignes initiales, vous trouverez pour les lignes pour chaque projet comme ci-dessous:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "**Client**", "**Client** \ **Client**.csproj", "{4503E259-0E3B-414A-9074-F251684322A5}" EndProject

vérifiez à nouveau les noms de fichier (j'ai mis en évidence en gras) et faites-le similaire à ce que vous avez fait dans étape 2 .

  1. nettoyer à nouveau L'ensemble de la solution

  2. construisez la Solution (si ne fonctionne pas essayez de construire l'individu après le nettoyage à nouveau)

10
répondu Pratik Shah 2015-08-07 13:54:32

assurez-vous que tous vos projets dépendants utilisent la même version .net Framework. J'ai eu le même problème causé par un projet dépendant utilisant 4.5.1, alors que tous les autres utilisaient 4.5. Changer le projet de 4.5.1 à 4.5 et reconstruire ma solution a réglé ce problème pour moi.

7
répondu Mark Stratman 2015-12-17 17:14:23

XYZ ne pouvait pas être trouvé parce qu'il n'est pas encore construit....

clic droit sur la solution et vérifier les dépendances du projet, l'ordre de construction du projet doit également changer en fonction des dépendances qui ont été définies.

4
répondu batman 2014-11-30 19:57:54

la seule chose qui a fonctionné pour moi était de supprimer les Options de L'utilisateur Solution ( .suo ) fichier . Remarque, c'est un fichier caché.

pour localiser ce fichier, fermez votre studio virtuel et cherchez .suo de l'Explorateur de fichiers de votre projet.

Delete the .suo file

PS: une nouvelle .le fichier suo sera créé de nouveau lorsque vous reconstruirez votre projet et j'espère que ce nouveau créé un ne vous donnera pas des problèmes.

j'espère que cela aide quelqu'un à se débarrasser de cette erreur anoying :).

3
répondu Tshilidzi Mudau 2017-09-16 16:01:29

j'ai eu ce problème pendant des jours! J'ai essayé tous les trucs ci-dessus, mais le problème revenait. Lorsque ce message est affiché, il peut avoir la signification de "un ou plusieurs projets dans votre solution n'a pas compilé proprement" ainsi les métadonnées pour le fichier n'a jamais été écrit. Mais dans mon cas, je n'ai pas vu les autres erreurs de compilation!!! J'ai continué à travailler à essayer de compiler chaque solution manuellement, et seulement après avoir obtenu VS2012 pour révéler réellement quelques erreurs de compilateur que je n'avais pas vu auparavant, ce problème a disparu.

j'ai joué avec les ordres de compilation, pas d'ordres de compilation, référencement des DLLs de débogage (qui ont été compilés manuellement)... Rien ne semblait fonctionner, jusqu'à ce que je trouve ces erreurs qui ne se sont pas manifestées lors de la compilation de la solution entière!!!!

parfois, il semble, lors de la compilation, que le compilateur existera sur certaines erreurs... J'ai vu cela dans le passé où après avoir corrigé les problèmes, les compilations suivantes montrent de nouvelles erreurs. Je ne sais pas pourquoi il il arrive et c'est assez rare pour moi d'avoir ces problèmes. Cependant, quand vous les avez comme ça, c'est une vraie douleur d'essayer de savoir ce qui se passe. Bonne Chance!

2
répondu John Peters 2014-08-24 04:38:28

eh Bien, ma réponse n'est pas seulement le résumé de toutes les solutions, mais il offre plus que cela.

de la Section (1):

en solutions générales:

j'ai eu 4 erreurs de ce genre (‘le fichier de métadonnées ne pouvait pas être trouvé’) ainsi qu'une erreur disant 'le fichier Source ne pouvait pas être ouvert (‘erreur non spécifiée ‘)'.

j'ai essayé de se débarrasser de métadonnées de fichier n'a pas pu être trouvé d'erreur". Pour cela, j'ai lu de nombreux messages, les blogs et trouvé que ces solutions peuvent être efficaces (en les résumant ici):

redémarrez VS et essayez de construire à nouveau.

aller à'Solution Explorer'. Clic droit sur Solution. Allez aux propriétés. Allez à "Gestionnaire de Configuration". Vérifiez si les cases à cocher sous 'Build' sont cochées ou non. Si l'un d'entre eux ou la totalité d'entre eux ne sont pas contrôlés, alors vérifiez-les et essayez de construire à nouveau.

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

Ordre de construction et les Dépendances d'un Projet:

aller à'Solution Explorer'. Clic droit sur Solution. Aller à ' dépendances de projet...'. Vous verrez 2 onglets: 'Dependencies' et'Build Order'. Cet ordre de construction est celui dans lequel la solution s'appuie. Vérifiez les dépendances de projet et l'ordre de construction pour vérifier si certains projet (dites 'project1') qui dépend de l'autre (par exemple 'project2') tente de construire avant celui-ci (project2). Cela peut être la cause de l'erreur.

vérifiez le chemin des disparus .dll:

vérifiez le chemin des disparus .DLL. Si le chemin contient de l'espace ou tout autre caractère de chemin invalide, supprimez-le et essayez de reconstruire à nouveau.

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

2
répondu NGANGA NICHOLAS aka 2016-03-30 14:09:53

utilisez-vous un outil de génération de code de base de données comme SQLMETAL dans votre projet?

si c'est le cas, il se peut que vous ayez à faire face à un problème de transition pluralisé ou non.

dans mon cas, j'ai noté que certains anciens noms de table pluralisés ( * ) (sur lesquels SQLMETAL ajoute, par défaut, une lettre " s " à la fin) renvoient à des classes générées par SQLMETAL.

depuis, j'ai récemment désactivé Pluralisation des noms , après avoir regéré certaines classes relatives aux bases de données, certains d'entre eux ont perdu leur préfixe s ". Par conséquent, toutes les références aux classes de tableaux touchées sont devenues invalides. Pour cette raison, j'ai plusieurs erreurs de compilation comme:

'xxxx' ne contient pas de définition pour 'TableNames' et aucune méthode d'extension' TableNames 'acceptant un premier argument de type' yyyy ' n'a pu être trouvée (est-ce que vous manquez un utiliser une directive ou une référence d'assemblage?)

comme vous le savez, Je ne prends que les erreurs pour empêcher une assemblée de compiler. Et c'est l'assemply manquant est liable aux assemblages dépendants, provoquant le "fichier de métadonnées 'XYZ' original n'a pas pu être trouvé"

après avoir corrigé manuellement les références des tables de classe affectées à leurs noms courants (non-implémentés), j'ai finalement pu redonner vie à mon projet!

( * ) si option Visual Studio > Tools menu > Options > Database Tools > O/R Designer > Pluralization of names is enabled, some SQLMETALl code generator will add an s letter at the end of certaines classes de table générées, bien que la table N'ait pas de suffixe" s " sur la base de données cible. Pour de plus amples informations, veuillez vous référer à http://msdn.microsoft.com/en-us/library/bb386987 (v=V110).aspx

Espère que cela aide!

1
répondu Julio Nobre 2014-05-14 17:30:24

mes 5 cents.

ce problème a commencé après une solution large propre.

j'ai réussi à faire disparaître le problème en définissant la configuration de la Solution Active dans: Build -> Configuration manager to release. Puis construisez - le et remettez-le au débogage. La construction a réussi après cela.

1
répondu Yeronimo 2014-12-08 11:02:42

Fermer VS, localiser et supprimer le dossier 'packages' à l'extérieur de visual studio. Redémarrer VS et construire - > toutes les dépendances sont réinstallées

1
répondu tfa 2016-07-12 10:02:05

pour une nouvelle construction, il se peut que certaines dépendances ne soient pas installées. Pour moi, C'était Crystal Reports.

0
répondu Roberto 2014-09-26 10:03:41

cela se produit en raison de la différence de noms dans le nom du dossier et le nom de l'espace de noms. Si u crée un namespace dans un certain nom , et plus tard vous le renommez le namespace aura l'ancien nom lui-même. Et la compilation prendra l'ancien chemin pour trouver les fichiers .dll et .exe . Pour éviter cela, ouvrez le fichier .csproj de chaque espace de noms avec un fichier texte , et trouvez l'ancien chemin dans le fichier.

enlever, nettoyer et reconstruire la solution. Ce a travaillé pour moi. J'ai passé une journée entière à travailler sur ce problème.

0
répondu Sooraj Chandran 2014-09-29 14:08:43

j'ai eu cette erreur. J'ai suivi toutes les solutions ici, mais rien n'a fonctionné. J'utilisais Visual Studio 2013 Professional. Je n'ai pas pu faire fonctionner le projet de reconstruction individuelle et j'ai finalement compris qu'il y avait un dépendance circulaire dans mes références. Visual Studio fait un assez bon travail normalement de vous avertir si vous ajoutez une référence à quelque chose qui renvoie en arrière, mais pour une raison quelconque, il ne l'a pas fait dans ce cas. J'ai ajouté une référence à un projet qui faisait référence au projet sur lequel je travaillais - et il l'a acceptée. VS bug peut-être?

0
répondu csharpforevermore 2014-11-20 16:34:31

il se produit quand un dll projet échoue et qui est référencé par nombre de projets. Donc d'abord réparer et ensuite construire des individus.

0
répondu Muzammil Tamboli 2014-11-27 09:27:25

j'ai eu ce problème et il a commencé après l'importation de notre solution à TFS comme un nouveau projet.Je suis tombé sur ce sujet et j'ai trouvé une solution rapide en m'inspirant de vos réponses.

Tout ce que j'ai eu à faire est de reconstruire le projet thats supposément perdu son fichier de métadonnées et voilà , Problème résolu.

0
répondu Enver A 2014-12-11 12:26:25

il y a aussi une autre raison idiote que vous devriez vérifier avec patience... comme il m'est venu à l'esprit après avoir gaspillé 4heures à chercher des réponses:

l'histoire pour moi était que j'ai accidentellement changé une petite ligne de code parmi des milliers de fichiers c# class et ensuite essayer de reconstruire la solution. Comme vous pouvez l'imaginer, j'ai fini avec 40 + méta-données fichier erreurs manquantes et avec une erreur de compilation parmi eux -- que je n'ai pas vérifié attentivement, purement penser tout des erreurs ont été les mêmes!

après 4 heures de recherche et après avoir accidentellement revérifié ma liste d'erreurs, j'ai trouvé cette erreur de code stupide, corrigé, compilé, et puis l'erreur a disparu.

pas une bonne réponse à votre problème, mais j'espère que mon cas n'était pas le même que le vôtre.

0
répondu Lida Weng 2015-02-23 10:49:09

j'ai eu le même problème. Dans mon cas j'ai eu par erreur j'avais mis tous les projets à part du projet avec la méthode principale comme application de console.

À résoudre, je suis allé à chaque projet autre que celui avec la fonction principale et clic droit> properites > type de sortie > bibliothèque de classes

0
répondu diva 2015-11-06 05:29:00

il m'est arrivé parce que j'ai un étrange conflit dans les espaces de noms: J'ai eu AssemblyA avec l'espace de noms AssemblyA.Parennamespace la sorcière définit ClassA et dans la même assemblée un autre namespace avec nom AssemblyA.ParentNamespace.ChildNamespace witch définit une classe différente (mais avec le même nom)

j'avais alors dans AssemblyA.ParentNamespace IInterfaceB witch avait une méthode qui au début rend IEnumerable et une classeb Witch met en œuvre IInterfaceB

j'avais plus tard modifié la méthode dans Classeb pour retourner IEnumerable mais j'ai oublié de mettre à jour la définition IInterfaceB, donc la méthode il y avait encore IEnumerable le fait amusant était que la solution encore complexe si je faisais une reconstruction tout, mais les tests witch se réfère AssemblyA didsn't travailler et renvoie le "fichier de métadonnées ne pouvait pas être trouvé"erreur.

mise à jour de InterfaceB à renvoyer correctement IEnumerable de son réalisateur ClassB n'a résolu le problème, malheureusement le message d'erreur était vague et aussi le fait que la compilation a fonctionné me fait supposer que peut-être Il ya quelque chose à corriger dans le compilateur

0
répondu Mosè Bottacini 2016-09-05 12:58:35

j'ai eu ceci et j'ai réussi à le corriger en utilisant cette réponse ainsi: fichier de méta-données '.dll" ne peut pas être trouvé

j'ai dû décocher toutes les boîtes, cliquer appliquer, reenable toutes les cases à cocher et puis cliquer appliquer à nouveau, mais il a corrigé le problème.

0
répondu Karl Gjertsen 2017-05-23 11:54:46

je viens de tomber dans ce numéro et après une heure de vissage réalisé que j'avais ajouté un aspx fichier à mon produit qui avait le même nom que l'un de mes Linq-To-Sql classes.

Classe et Page où "file".

A changé la page en QueueMgr.aspx et tout construit très bien.

0
répondu Ted Krapf 2017-08-15 20:37:28