Plik metadanych… nie można znaleźć błędu podczas tworzenia projektów

98

Za każdym razem, gdy uruchamiam Visual Studio 2008, przy pierwszej próbie uruchomienia projektu pojawia się błąd CS0006. Nie można znaleźć pliku metadanych ... Jeśli odbuduję kompletne rozwiązanie, to działa.

Kilka informacji o rozwiązaniu:

  • Buduję w trybie debugowania, a program Visual Studio narzeka, że ​​nie znajduje dll: sw folderze wydania.

  • Projekty, na które skarży się Visual Studio, są wykorzystywane przez wiele innych projektów w rozwiązaniu.

  • Zmieniłem domyślną ścieżkę wyjściową wszystkich projektów na odpowiednio ...... \ build \ debug \ ProjectName i ...... \ build \ release \ ProjectName. (Tylko po to, aby pobrać wszystkie pliki kompilacji w jednym katalogu)

  • Mam ten sam problem z innym rozwiązaniem.

  • Rozwiązanie zostało stworzone od podstaw.

  • W rozwiązaniu jest 9 projektów. Jedna biblioteka klas WPF i 8 korzystająca z dotnet 3.5.

Jakieś pomysły na temat tego, co powoduje ten problem?

Robert Höglund
źródło

Odpowiedzi:

133

Miałem podobny problem, gdzie „nie można znaleźć metadanych”. we właściwości rozwiązania upewnij się, że pole wyboru „kompilacja” jest zaznaczone w programie Build / Configuration Manager dla każdego projektu.

Uprock7
źródło
16
Dla każdego, kto nie może go znaleźć, Build / Configuration Manager odwołuje się do menu Build -> Configuration Manager.
John Kurlak
4
Właśnie natknąłem się na ten problem, przyczyną był inny błąd powodujący, że projekt, do którego się odwołujesz, nie został pomyślnie zbudowany. To było na czystym etapie pobierania, więc nie istniały żadne pliki dll z poprzednich udanych kompilacji. Napraw błędy i upewnij się, że projekt, do którego istnieje odwołanie, jest poprawnie kompilowany.
Moulde
9
Czasami nawet to nie pomoże, jak zauważył Nick powyżej. W takim przypadku zamykanie i ponowne uruchamianie VS zawsze działało dla mnie. YMMV.
philofinfinitejest
3
Nie rozwiązało problemu. Zrestartowałem VS i to nie rozwiązało problemu.
Shimmy Weitzhandler,
26

Jest to zwykle spowodowane przez projekt, do którego odwołuje się inne rozwiązanie niż ten, który generuje błąd. Jeśli wyczyścisz inne rozwiązanie lub rozgałęzisz kod, najprawdopodobniej zobaczysz ten błąd. Rozwiązaniem jest przewinięcie listy błędów „nie znaleziono metadanych” i przejrzenie odniesień do projektów. 9/10 razy zobaczysz zepsute odniesienie do projektu, którego nie ma w tym rozwiązaniu. Dodaj projekty, aby naprawić błędy odniesienia, i przebuduj. To powinno to naprawić.

(Właśnie wpadłem na to dzisiaj i miałem w przeszłości, i ZAWSZE działało)

Chris T.
źródło
Narzekają tylko projekty, które są w moim rozwiązaniu.
The Muffin Man
7

Miałem ten problem, nie jestem pewien, czy to pomoże, ale mój był spowodowany posiadaniem dwóch różnych wersji tego samego projektu, do których odwoływały się dwa różne rozwiązania. Kiedy zbudowałem rozwiązanie z odniesieniem do poprawnego projektu, drugie rozwiązanie byłoby dobrze zbudowane, jednak jeśli wyczyściłem pierwsze rozwiązanie i spróbowałem zbudować drugie rozwiązanie, zakończy się niepowodzeniem z tymi komunikatami o błędach odniesienia dll.

Rozwiązaniem dla mnie było zorientowanie się, że mam dwa projekty o tej samej nazwie, które zostały przypadkowo zduplikowane i usunięcie odniesienia do starego niepoprawnego projektu i dodanie odniesienia do nowego.

W każdym razie wygląda na to, że te wiadomości są trochę czerwonawe, sprawdzę wyniki kompilacji i znajdę pierwszy projekt, którego nie można zbudować, i bardzo dokładnie sprawdzę odniesienia w tym projekcie.


źródło
1
+1 za uwagę dotyczącą niedokładności tych wiadomości. Pojawiło się to dla mnie, ponieważ ścieżki do zestawów, do których odwołuje się rozwiązanie, zostały zerwane. Przeczytanie ich i ponowna kompilacja rozwiązało problem.
E. Rodriguez
6

Inną rzeczą do zweryfikowania jest długość ścieżki ... która powoduje również nie odnalezienie pliku metadanych i błędy kompilacji ... Właśnie zmieniłem nazwy moich folderów na krótsze ścieżki i voilá, klasy, które nie zostały rozpoznane i pozostały czarne, zmieniły kolor na niebieski po zmianie nazwy folder.

Paul Ehmig
źródło
5

Dla mnie miałem projekt, do którego odwołano się w innym projekcie. Nie pokazał, że jest uszkodzony na liście odniesień w oknie eksploratora rozwiązań, ale mimo to usunąłem i przeczytałem. Teraz buduje się dobrze!

Josh P
źródło
Rzeczywiście, usunąłem wszystkie odniesienia i dodałem je ponownie.
3

Wykonałem wszystkie te kroki w VS2012, ale napotykałem ten problem podczas budowania rozwiązania jako całości (poszczególne projekty zostały zbudowane dobrze, bez błędów).

Zauważyłem, że jeśli klikniesz prawym przyciskiem myszy swoje rozwiązanie w Eksploratorze rozwiązań i wybierzesz opcję „Zamów zamówienie”, zobaczysz kolejność, w której VS używa do odbudowania rozwiązania. Prawdopodobnie nie działa.

Możesz poprawić kolejność kompilacji, klikając kartę Zależności i wybierając projekty zależne od innych projektów w rozwiązaniu i sprawdzając projekty, od których zależą. Po trafieniu w porządku i odtworzeniu rozwiązania, wszystko powinno być gotowe.

Dan
źródło
2

Sposób, w jaki radziłem sobie z tym w przeszłości w VS2005, a także teraz w VS2008, polega na upewnieniu się, że wszystkie zależności są poprawne, a odniesienia wskazują na projekty, a nie biblioteki dll. Następnie przejdź i ręcznie skompiluj każdy projekt w kolejności zależności. Po zbudowaniu ostatniego można uruchomić pełną kompilację rozwiązania i wszystko jest w porządku.

Ta odpowiedź jest dla innych w przyszłości, ponieważ wiem, że pytanie ma ponad 15 miesięcy.

Twoje zdrowie

WestDiscGolf
źródło
2

Chciałbym poruszyć kilka kwestii.

Jeśli korzystasz z pliku rozwiązania jako pliku kompilacji w programie MSBuild, upewnij się, że projekty są dodawane do pliku rozwiązania w kolejności, w jakiej mają być kompilowane, tj. Na podstawie kolejności wzajemnych zależności projektów. Staje się to bardzo ważne, jeśli masz w rozwiązaniu projekty, od których zależą inne projekty, ale odniesienia zostały dodane jako „Referencje”, a nie jako „Project References”.

Powinieneś unikać tego jak zarazy, ale jeśli musisz to zrobić, przynajmniej upewnij się, że zależne projekty pojawiają się wcześniej w pliku rozwiązania.

Należy pamiętać, że sposób, w jaki program Visual Studio generuje kolejność kompilacji, nie jest dokładnie taki sam, jak robi to MSBuild. Dzieje się tak, ponieważ program MSBuild zależy przede wszystkim od pliku projektu, aby poinformować go, jakie są zależności, podczas gdy program Visual Studio może również zapisać je w pliku rozwiązania. Dlatego czasami można zobaczyć sytuacje, w których program Visual Studio doskonale buduje rozwiązanie, ale MSBuild po prostu nie może tego zrobić.

Miałem kilka przypadków, w których musiałem ręcznie dostosować kolejność, w jakiej projekty pojawiają się w pliku rozwiązania, a także kolejność, w jakiej projekty były wyświetlane w elemencie ProjectReferences w projekcie witryny sieci Web w pliku rozwiązania.

Mam nadzieję, że powyższe informacje okażą się pomocne.

Umar Farooq Khawaja
źródło
2

Jeśli na przykład używasz kontekstów danych LinqtoSQL, a brakuje pliku .designer.cs, pojawi się komunikat o błędzie nie można znaleźć pliku metadanych.

Odtworzenie pliku designer.cs jest łatwe.

Otwórz dbml za pomocą widoku xml. Dodaj pustą linię, a następnie usuń ją, a następnie zapisz. Powinno to zregenerować plik designer.cs.

W pewnych okolicznościach, jeśli masz kod wewnątrz kodu kontekstu danych, to obejście nie zadziała. W takim przypadku wyjmij kod z kodu znajdującego się za nim i umieść go w notatniku lub w czymś takim. Zrób sztuczkę dodawania, a następnie usuwania linii z DC i zapisz. Teraz odłóż kod i zapisz.

lit 6941
źródło
2

Mam podobny problem za każdym razem, gdy aktualizuję projekt z SVN.
Inne rozwiązanie dla ASP.NET:

  1. Zamknij IDE.
  2. Usuń pliki w formacie C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.
maksim09
źródło
1

Doświadczyłem również tego błędu, a przyczyną było to, że Projekt odwołuje się do siebie. Nie mam pojęcia, jak to się stało, ale właśnie usunąłem odniesienie i voila

JessiePilor
źródło
1

Najpierw upewnij się, że pole wyboru „kompilacja” jest zaznaczone w obszarze Kompilacja -> Menedżer konfiguracji dla każdego projektu.

W przypadku, gdy masz już wszystkie projekty wybrane w menu Build -> Configuration Manager, a ponowne uruchomienie sztuczki VS nie działa, musisz znaleźć odniesienie do pliku (plików) (może to być dll lub cs) w projekt i ręcznie usuń te odniesienia. Te pliki / odniesienia powinny być wyświetlane z żółtą ikoną. Błąd zdecydowanie wskazuje, którego projektu rozwiązania należy się przyjrzeć.

Przyczyną tego błędu jest to, że ręcznie usunąłeś plik (i) w Eksploratorze Windows, a VS nie zaktualizował odniesienia i nie próbował zlokalizować pliku, który już nie istnieje!

Haseeb Sd
źródło
1

W moim przypadku okazało się, że jedno z moich rozwiązań odnosiło się do czegoś, czego nie było na komputerze (VBIDE). Po usunięciu obraźliwego odniesienia pozostałe projekty zostały poprawnie zbudowane. Mam nadzieję, że to komuś pomoże.

W innej sytuacji przeniosłem kod z jednego projektu do drugiego i ten fragment kodu odwoływał się do Json.net. Dodałem ręcznie odniesienie do Json.net, ale to spowodowało, że problem się pojawił. Rozwiązałem to, instalując Json.net przez NuGet i to sprawiło, że problem zniknął. Mam nadzieję, że to komuś pomoże.

Eddie Edwards
źródło
0

To samo się stało. Mam kilka rozwiązań odwołujących się do tych samych projektów biblioteki (.net 3.5). Zauważyłem, że kiedy jeden został zbudowany w debug / normal config, a inny przy użyciu innej dyrektywy kompilatora (sqlite / tryb lokalny), tak się dzieje. Po prostu zbuduj oba projekty z tymi samymi dyrektywami i powinno być dobrze.

Ryan
źródło
0

Jeśli dodasz nowy projekt do rozwiązania, sprawdź, czy znajduje się on na liście kompilacji (zobacz Menedżer konfiguracji)

Richard S.
źródło
0

Utknąłem z problemem zapisywania, gdy chciałem dołączyć plik dll wygenerowany przez Matlab. I w końcu rozwiązałem to, kopiując plik .ctf, co oznacza certyfikat, jak sądzę, i .netmodule, który jest potrzebny do poprawnego działania .dll, wraz z plikiem .dll. I to faktycznie zadziałało! Więc proponuję sprawdzić, czy .dll potrzebuje innych plików, z którymi można się dogadać.

Jingyu Lei
źródło
0

Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

Otrzymałem ten sam błąd. Postanowiłem usunąć i ponownie dodać odniesienia do projektu. Nie mogłem ich ponownie dodać, ponieważ odwołanie do bazy danych w każdym z przywoływanych projektów było puste.

Po zresetowaniu odniesienia do bazy danych do prawidłowego ustawienia mogłem budować bez dalszych problemów. Dodatkowo była to moja pierwsza próba odbudowania tego projektu po rozgałęzieniu kodu źródłowego w VSS.

Powodzenia

EJ Ralston
źródło
0

Wystąpił ten błąd, który był spowodowany jedną z zależności mojego projektu, w której nazwa zestawu została zmieniona w projekcie, ale odwołanie nie zostało zaktualizowane. Dlatego zaktualizowanie odwołania lub zmiana nazwy zestawu z powrotem naprawi to.

Darrell Cumming
źródło
0

EE - W moim przypadku problem był w projekcie, który ma frameworka Entity, otwórz diagram przeciągnij dowolną tabelę 2 cm :) i zapisz, VS zaktualizuje wszystkie swoje linki do DB ... zbuduj te projekty i zbuduj rozwiązanie , Buildssss.

Bishoy Hanna
źródło
0

Jedyną rzeczą, która mnie naprawiła (ponieważ nie używam VS2010 na koncie administratora), jest ręczne przeniesienie zmiennej środowiskowej VS120COMNTOOLS ze zmiennych systemowych do zmiennych użytkownika.

Ryan
źródło
0

Usunięcie wpisów wszystkich plików źródłowych, które nie są już obecne w kontroli źródła i systemie plików z twojego pliku .csproj, działało dla mnie.


Szczegółowe podejście:

Cóż, moja następująca odpowiedź nie jest tylko podsumowaniem wszystkich rozwiązań, ale oferuje więcej.

Sekcja 1):

W rozwiązaniach ogólnych:

Wystąpiły 4 tego rodzaju błędy („nie można znaleźć pliku metadanych”) oraz 1 błąd z informacją „Nie można otworzyć pliku źródłowego („ Nieokreślony błąd ”)”.

Próbowałem pozbyć się błędu „Nie można znaleźć pliku metadanych”. W tym celu przeczytałem wiele postów, blogów itp. I stwierdziłem, że te rozwiązania mogą być skuteczne (podsumowując je tutaj):

  1. Uruchom ponownie VS i spróbuj ponownie zbudować.

  2. Przejdź do „Eksploratora rozwiązań” . Kliknij prawym przyciskiem myszy Rozwiązanie. Przejdź do Właściwości . Przejdź do „Configuration Manager” . Sprawdź, czy pola wyboru w obszarze „Kompilacja” są zaznaczone, czy nie. Jeśli którekolwiek lub wszystkie są odznaczone, sprawdź je i spróbuj ponownie zbudować.

  3. Jeśli powyższe rozwiązania nie działają, postępuj zgodnie z sekwencją opisaną w kroku 2 powyżej, a nawet jeśli wszystkie pola wyboru są zaznaczone, odznacz je, zaznacz ponownie i spróbuj ponownie zbudować.

  4. Buduj kolejność i zależności projektu:

    Przejdź do „Eksploratora rozwiązań” . Kliknij prawym przyciskiem myszy Rozwiązanie. Przejdź do „Zależności projektu ...” . Zobaczysz 2 zakładki: „Zależności” i „Kolejność budowy” . Ta kolejność kompilacji jest tą, w której kompiluje się rozwiązanie. Sprawdź zależności projektu i kolejność kompilacji, aby zweryfikować, czy jakiś projekt (powiedzmy „projekt1”), który jest zależny od innego (powiedzmy „projekt2”), próbuje zbudować przed tym (projekt2). Może to być przyczyną błędu.

  5. Sprawdź ścieżkę do brakującego pliku dll:

    Sprawdź ścieżkę do brakującego pliku dll. Jeśli ścieżka zawiera spację lub inny nieprawidłowy znak ścieżki, usuń go i spróbuj ponownie.

    Jeśli to jest przyczyna, dostosuj kolejność budowania.


Sekcja (2):

Mój przypadek:

Wypróbowałem wszystkie powyższe kroki z różnymi permutacjami i kombinacjami z kilkakrotnym ponownym uruchomieniem VS. Ale to mi nie pomogło.

Postanowiłem więc pozbyć się innego błędu, na który się natknąłem („Nie można otworzyć pliku źródłowego („ Nieokreślony błąd ”)”).

Trafiłem na bloga: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

Wypróbowałem kroki wymienione na tym blogu i pozbyłem się błędu „Nie można otworzyć pliku źródłowego („ Błąd nieokreślony ”)” i, co zaskakujące, pozbyłem się również innych błędów („nie można znaleźć pliku metadanych”) .


Sekcja 3):

Morał historii:

Wypróbuj wszystkie rozwiązania wymienione w sekcji (1) powyżej (i inne rozwiązania), aby pozbyć się błędu. Jeśli nic nie działa, zgodnie z blogiem wymienionym w sekcji (2) powyżej, usuń wpisy wszystkich plików źródłowych, które nie są już obecne w kontroli źródła i systemie plików z pliku .csproj .


Vikram
źródło