Impossibile trovare il file dei metadati durante la creazione dei progetti


98

Ogni volta che avvio Visual Studio 2008, la prima volta che provo a eseguire il progetto ottengo l'errore CS0006 Il file dei metadati ... non è stato trovato. Se faccio una ricostruzione della soluzione completa, funziona.

Alcune informazioni sulla soluzione:

  • Sto compilando in modalità debug e Visual Studio si lamenta di non trovare dll: s nella cartella di rilascio.

  • I progetti di cui si lamenta Visual Studio vengono utilizzati da molti altri progetti nella soluzione.

  • Ho modificato il percorso di output predefinito di tutti i progetti in ...... \ build \ debug \ ProjectName e ...... \ build \ release \ ProjectName rispettivamente. (Solo per ottenere tutti i file di build in una directory)

  • Ho lo stesso problema con un'altra soluzione.

  • La soluzione è stata creata da zero.

  • Ci sono 9 progetti nella soluzione. Un WPF e 8 librerie di classi che utilizzano dotnet 3.5.

Qualche idea su cosa sta causando questo problema?


Risposte:


133

ho avuto il problema simile in cui "non è stato possibile trovare i metadati". sulla proprietà della soluzione, assicurati che la casella di controllo "build" sia contrassegnata in Build / Configuration Manager per ogni progetto.


16
Per chiunque non riesca a trovarlo, Build / Configuration Manager fa riferimento al menu Build -> voce di menu Configuration Manager.
John Kurlak

4
Ho appena riscontrato questo problema, il motivo era un altro errore che causava la mancata compilazione del progetto a cui si fa riferimento. Questo era un checkout pulito, quindi non esistevano file dll da build precedenti di successo. Correggi gli errori e assicurati che un progetto di riferimento venga compilato correttamente.
Moulde

9
Occasionalmente anche questo non aiuta, come notato da Nick sopra. In quel caso, chiudere e riavviare VS ha sempre funzionato per me. YMMV.
philofinfinitejest

3
Non ha risolto il problema. Ho riavviato VS e non ha risolto il problema.
Shimmy Weitzhandler

26

Ciò è in genere causato da un progetto a cui si fa riferimento in una soluzione diversa da quella che genera l'errore. Se pulisci l'altra soluzione o ramifichi il codice, molto probabilmente vedrai questo errore. La soluzione è scorrere l'elenco degli errori "metadati non trovati" e guardare i riferimenti ai progetti. 9/10 volte, vedrai un riferimento interrotto a un progetto che non è in questa soluzione. Aggiungere i progetti per correggere gli errori di riferimento e ricostruire. Questo dovrebbe risolverlo.

(Mi sono imbattuto in questo oggi e in passato, e ha SEMPRE funzionato)


Solo i progetti che sono nella mia soluzione si lamentano.
The Muffin Man

7

Ho avuto questo problema, non sono sicuro che possa aiutare, ma il mio è stato causato dall'avere due diverse versioni dello stesso progetto a cui fanno riferimento due diverse soluzioni. Quando ho creato la soluzione con il riferimento al progetto corretto prima, la seconda soluzione sarebbe stata costruita bene, tuttavia, se pulissi la prima soluzione e provassi a costruire la seconda soluzione, fallirebbe con questi messaggi di errore di riferimento dll.

La soluzione per me è stata capire che avevo due progetti con lo stesso nome che erano stati accidentalmente duplicati e rimuovere il riferimento al vecchio progetto errato e aggiungere un riferimento a quello nuovo.

In ogni caso sembra che questi messaggi siano un po 'una falsa pista, controllerei il tuo output di build e troverei il primo progetto che non riesce a costruire e controllerei molto attentamente i riferimenti su quel progetto.


1
+1 per la nota riguardante l'inesattezza di questi messaggi. Questo è saltato fuori per me perché i percorsi degli assembly a cui si fa riferimento in una soluzione erano interrotti. La lettura e la ricompilazione hanno risolto il problema.
E. Rodriguez

6

Un'altra cosa da verificareèla lunghezza del percorso ... che causa anche errori di compilazione e file di metadati non trovati ... ho semplicemente rinominato le mie cartelle in percorsi più brevi e voilá, classi che non erano riconosciute e rimasero nere, diventarono blu solo rinominando la cartella.


5

Per me avevo un progetto referenziato in un altro progetto. Non ha mostrato che era rotto nell'elenco dei riferimenti nella finestra di Esplora soluzioni, ma l'ho rimosso e reinserito comunque. Ora funziona perfettamente!


È infatti, ho rimosso tutti i riferimenti e li ho aggiunti di nuovo.

3

Ho seguito tutti questi passaggi in VS2012, ma ho continuato a riscontrare questo problema durante la creazione della soluzione nel suo insieme (i singoli progetti sono stati creati correttamente senza errori).

Ho scoperto che se fai clic con il pulsante destro del mouse sulla tua soluzione in Esplora soluzioni e selezioni "Ordine di compilazione", puoi vedere l'ordine che VS utilizza per ricostruire la tua soluzione. Probabilmente è fuori di testa.

È possibile correggere l'ordine di compilazione facendo clic sulla scheda Dipendenze e selezionando i progetti che dipendono da altri progetti nella soluzione e controllando i progetti da cui dipendono. Una volta che hai premuto ok e hai ricostruito la soluzione, dovresti essere a posto.


2

Il modo in cui ho aggirato questo problema in passato in VS2005 e ora in VS2008 è assicurarmi che tutte le dipendenze siano corrette e che i riferimenti puntino ai progetti e non alle DLL. Quindi esaminare e creare manualmente ogni progetto in ordine di dipendenza. Una volta compilato l'ultimo, puoi eseguire una build completa della soluzione e va bene.

Questa risposta è per riferimento futuro per gli altri poiché so che la domanda ha più di 15 mesi.

Saluti


2

Vorrei sottolineare un paio di punti.

Se ti affidi al file della soluzione come file di compilazione in MSBuild, assicurati di aggiungere progetti al file della soluzione nell'ordine in cui desideri che vengano compilati, ovvero in base all'ordine di reciproca dipendenza dei progetti. Ciò diventa molto importante se nella soluzione sono presenti progetti da cui dipendono altri progetti, ma i riferimenti sono stati aggiunti come "Riferimenti" anziché come "Riferimenti al progetto".

Dovresti evitarlo come la peste, ma nel caso in cui sia necessario farlo, assicurati almeno che i progetti dipendenti compaiano prima nel file della soluzione.

Tieni presente che il modo in cui Visual Studio genera l'ordine di compilazione non è esattamente lo stesso del modo in cui lo fa MSBuild. Questo perché MSBuild dipende principalmente dal file di progetto per dirgli quali sono le dipendenze, mentre Visual Studio può anche salvarle nel file soltuion. Pertanto, a volte puoi vedere situazioni in cui Visual Studio crea la soluzione perfettamente, ma MSBuild non può farlo.

Ho avuto un paio di casi in cui ho dovuto modificare manualmente l'ordine in cui i progetti vengono visualizzati nel file della soluzione, nonché l'ordine in cui i progetti sono stati elencati nell'elemento ProjectReferences in un progetto di sito Web nel file della soluzione.

Spero che le informazioni di cui sopra siano utili.


2

Se si utilizzano contesti dati LinqtoSQL, ad esempio, e il file .designer.cs è mancante, verrà visualizzato l'errore Impossibile trovare il file metadati.

Ricreare il file designer.cs è facile.

Apri il dbml usando la visualizzazione xml. Aggiungi una riga vuota, quindi rimuovila e salva. Questo dovrebbe rigenerare il tuo file designer.cs.

In alcune circostanze, se si dispone di codice all'interno del code-behind del contesto dati, questa soluzione non funzionerà. In questo caso, estrai il codice dal codice sottostante e inseriscilo nel blocco note o qualcosa del genere. Fai il trucco di aggiungere e poi rimuovere una linea dal controller di dominio e salva. Ora rimetti il ​​codice e salva.


2

Ho un problema simile ogni volta che aggiorno il progetto da SVN.
Un'altra soluzione per ASP.NET:

  1. Chiudi l'IDE.
  2. Elimina i file in formato C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.

1

Ho anche riscontrato questo errore e la causa era che il progetto fa riferimento a se stesso. Non ho idea di come sia successo ma ho solo rimosso il riferimento e voilà


1

Innanzitutto assicurati che la casella di controllo "build" sia contrassegnata in Build -> Configuration Manager per ogni progetto.

Nel caso in cui, se hai già tutti i progetti selezionati nel menu Build -> Configuration Manager e il riavvio di VS trick non funziona per te, devi trovare il riferimento dei file (potrebbe essere dll o cs) in il tuo progetto ed elimina quei riferimenti manualmente. Questi file / riferimenti dovrebbero essere visualizzati con un'icona gialla. L'errore ti guida sicuramente su quale progetto di soluzione dovresti esaminare.

Il motivo di questo errore è perché hai eliminato i file manualmente in Windows Explorer e VS non ha aggiornato il riferimento e ha cercato di individuare il file che non esiste più!


1

Nel mio caso, ho scoperto che una delle mie soluzioni faceva riferimento a qualcosa che non era presente sul computer (VBIDE). Una volta rimosso il riferimento offensivo, il resto dei progetti è stato creato correttamente. Spero che aiuti qualcuno.

E in un'altra situazione, ho spostato del codice da un progetto a un altro e quel pezzo di codice faceva riferimento a Json.net. Ho aggiunto manualmente un riferimento a Json.net ma questo ha causato il problema. L'ho risolto installando Json.net tramite NuGet e questo ha risolto il problema. Spero che aiuti qualcuno.


0

La stessa cosa è successa. Ho diverse soluzioni che fanno riferimento agli stessi progetti di libreria (.net 3.5). Ho notato che quando uno è stato creato in debug / normal config e un altro utilizzando qualche altra direttiva del compilatore (modalità sqlite / local), questo sarebbe accaduto. Semplicemente fai costruire entrambi i progetti con le stesse direttive e dovresti stare bene.


0

Se hai aggiunto un nuovo progetto alla soluzione, controlla che sia nell'elenco di build (vedi Configuration Manager)


0

Sono rimasto bloccato con il problema di salvataggio quando volevo includere un file dll generato da Matlab. E alla fine l'ho risolto copiando un file .ctf, che significa certificato suppongo, e un .netmodule, che è necessario per il corretto funzionamento del .dll, insieme al file .dll. E ha funzionato davvero! Quindi, il mio suggerimento è di controllare se il .dll necessita di altri file con cui andare d'accordo.


0

Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

Ho ricevuto lo stesso errore. E ho deciso di rimuovere e aggiungere nuovamente i riferimenti al progetto. Non sono riuscito ad aggiungerli di nuovo perché il riferimento al database in ciascuno dei progetti a cui si fa riferimento era vuoto.

Una volta ripristinato il riferimento al database sull'impostazione corretta, sono stato in grado di creare senza ulteriori problemi. Inoltre, questo è stato il mio primo tentativo di ricostruire questo progetto dopo aver ramificato il codice sorgente in VSS.

In bocca al lupo


0

Ho riscontrato questo errore causato da una delle dipendenze del mio progetto in cui il nome dell'assembly era stato modificato nel progetto, ma il riferimento non è stato aggiornato. Quindi l'aggiornamento del riferimento o la ridenominazione dell'assieme risolverà il problema.


0

EE - Nel mio caso il problema era nel progetto che ha il framework Entity, apri il diagramma trascina una qualsiasi tabella di 2 cm :) e salva, il VS aggiornerà tutti i suoi collegamenti al DB ... costruisci questo progetto e costruisci la soluzione , Buildssss.


0

L'unica cosa che mi ha risolto (perché non sto eseguendo VS2010 su un account amministratore) è stato spostare manualmente la variabile di ambiente VS120COMNTOOLS dalle variabili di sistema alle variabili utente.


0

L'eliminazione delle voci di tutti i file di origine che non sono più presenti nel controllo del codice sorgente e nel file system dal file .csproj ha funzionato per me.


Approccio dettagliato:

Bene, la mia risposta che segue non è solo il riassunto di tutte le soluzioni, ma offre molto di più.

Sezione 1):

In soluzioni generali:

Ho riscontrato 4 errori di questo tipo ("Impossibile trovare il file dei metadati") insieme a 1 errore che diceva "Impossibile aprire il file di origine (" Errore non specificato ").

Ho provato a eliminare l'errore "Impossibile trovare il file dei metadati". Per questo, ho letto molti post, blog ecc. E ho scoperto che queste soluzioni potrebbero essere efficaci (riassumendole qui):

  1. Riavvia VS e prova a costruire di nuovo.

  2. Vai a "Esplora soluzioni" . Fare clic con il tasto destro su Soluzione. Vai a Proprietà . Vai a "Gestione configurazione" . Controlla se le caselle di controllo in "Crea" sono selezionate o meno. Se alcuni o tutti sono deselezionati, selezionali e prova a costruire di nuovo.

  3. Se le soluzioni precedenti non funzionano, segui la sequenza menzionata nel passaggio 2 sopra e anche se tutte le caselle di controllo sono selezionate, deselezionale, controlla di nuovo e prova a costruire di nuovo.

  4. Ordine di compilazione e dipendenze del progetto:

    Vai a "Esplora soluzioni" . Fare clic con il tasto destro su Soluzione. Vai a "Dipendenze del progetto ..." . Vedrai 2 schede: "Dipendenze" e "Ordine di creazione" . Questo ordine di compilazione è quello in cui viene compilata la soluzione. Controllare le dipendenze del progetto e l'ordine di compilazione per verificare se qualche progetto (ad esempio "progetto1") che dipende da un altro (ad esempio "progetto2") sta tentando di compilare prima di quello (progetto2). Questa potrebbe essere la causa dell'errore.

  5. Controlla il percorso del file .dll mancante:

    Controlla il percorso del file .dll mancante. Se il percorso contiene spazio o qualsiasi altro carattere di percorso non valido, rimuoverlo e provare a costruire di nuovo.

    Se questa è la causa, regola l'ordine di costruzione.


Sezione 2):

Il mio caso particolare:

Ho provato tutti i passaggi precedenti con varie permutazioni e combinazioni con il riavvio di VS alcune volte. Ma non mi ha aiutato.

Quindi, ho deciso di sbarazzarmi di un altro errore che stavo riscontrando ("Impossibile aprire il file di origine (" Errore non specificato ")").

Mi sono imbattuto in un blog: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

Ho provato i passaggi menzionati in quel blog e mi sono sbarazzato dell'errore "Impossibile aprire il file di origine (" Errore non specificato ")" e sorprendentemente mi sono sbarazzato di altri errori ("Impossibile trovare il file dei metadati") .


Sezione (3):

Morale della storia:

Prova tutte le soluzioni come menzionato nella sezione (1) sopra (e qualsiasi altra soluzione) per eliminare l'errore. Se non funziona nulla, come nel blog menzionato nella sezione (2) sopra, elimina le voci di tutti i file di origine che non sono più presenti nel controllo del codice sorgente e nel file system dal tuo file .csproj .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.