Pracuję nad projektem WPF, C # 3.0 i pojawia się ten błąd:
Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem
Oto jak odwołuję się do moich kontrolek użytkownika:
xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>
Dzieje się tak po każdej nieudanej kompilacji. Jedynym sposobem, w jaki mogę uzyskać rozwiązanie do kompilacji, jest skomentowanie wszystkich moich kontrolek użytkownika i przebudowanie projektu, a następnie odkomentowanie kontrolek użytkownika i wszystko jest w porządku.
Sprawdziłem konfiguracje zamówień kompilacji i zależności.
Jak widać, wydaje się, że skrócił bezwzględną ścieżkę do pliku DLL ... Przeczytałem, że jest błąd w długości. Czy to możliwy problem?
Jest to bardzo denerwujące i musi komentować, budować i niekomfortowo, kompilacja staje się niezwykle męcząca.
Odpowiedzi:
Właśnie miałem ten sam problem. Visual Studio nie buduje projektu, do którego istnieje odwołanie.
Instrukcje pisemne:
Instrukcje przechwytywania ekranu:
źródło
Może się to nadal zdarzyć w nowszych wersjach programu Visual Studio (właśnie miałem to na Visual Studio 2013):
Inną rzeczą do wypróbowania jest zamknięcie programu Visual Studio i usunięcie
.suo
pliku znajdującego się obok.sln
pliku. (Zostanie ponownie wygenerowany następnym razemSave all
(lub wyjdziesz z Visual Studio)).Miałem ten problem podczas dodawania nowych projektów do rozwiązania na innym komputerze, a następnie pobierania poprawek, ale
.suo
plik może być uszkodzony również w innych przypadkach i prowadzić do bardzo dziwnego zachowania Visual Studio, więc usunięcie go jest jednym z rzeczy, których zawsze próbuję.Pamiętaj, że usunięcie
.suo
pliku spowoduje zresetowanie projektów startowych rozwiązania.Więcej na temat
.suo
pliku jest tutaj .źródło
.suo
pliki są ukryte. Musisz więc skonfigurować eksploratora, aby wyświetlał ukryte pliki..suo
plik jest zarówno ukryty, jak i ukryty w.vs
katalogu obok.sln
. np .: jeśli plik rozwiązania jestc:\foo\mysolution.sln
następniec:\foo\mysolution\.vs\mysolution\v14\.suo
.vs
ukryty folder, który również usunął.suo
plik. Ponownie otworzyłem rozwiązanie, naprawiłem jeszcze jeden niepowiązany błąd i problem został rozwiązany.Sugerowana odpowiedź nie działała dla mnie. Błąd jest wabikiem dla innego problemu.
Dowiedziałem się, że celowałem w nieco inną wersję .NET i kompilator oznaczył to jako ostrzeżenie, ale powodowało niepowodzenie budowania. To powinno być oznaczone jako błąd, a nie ostrzeżenie.
źródło
Cóż, moja odpowiedź to nie tylko podsumowanie wszystkich rozwiązań, ale oferuje coś więcej.
Sekcja 1):
W ogólnych rozwiązaniach:
Miałem cztery tego rodzaju błędy („nie można znaleźć pliku metadanych”) oraz jeden błąd mówiący „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):
Uruchom ponownie program Visual Studio i spróbuj ponownie zbudować.
Przejdź do „Solution Explorer” . Kliknij prawym przyciskiem myszy Rozwiązanie. Idź do Właściwości . Przejdź do „Configuration Manager” . Sprawdź, czy pola wyboru w „Kompilacji” są zaznaczone, czy nie. Jeśli którykolwiek lub wszystkie z nich są odznaczone, sprawdź je i spróbuj ponownie zbudować.
Jeśli powyższe rozwiązania nie działają, postępuj zgodnie z sekwencją wymienioną w kroku 2 powyżej, a nawet jeśli wszystkie pola wyboru są zaznaczone, odznacz je, sprawdź ponownie i spróbuj zbudować ponownie.
Kolejność budowania i zależności projektu:
Przejdź do „Solution Explorer” . Kliknij prawym przyciskiem myszy Rozwiązanie. Przejdź do „Zależności projektu ...” . Zobaczysz dwie zakładki: „Zależności” i „Kolejność budowania” . Ta kolejność kompilacji jest kolejnością kompilowania rozwiązania. Sprawdź zależności projektu i kolejność kompilacji, aby sprawdzić, czy jakiś projekt (powiedz „projekt1”), który jest zależny od innego (powiedz „projekt2”), próbuje zbudować przed tym projektem (projekt2). Może to być przyczyną błędu.
Sprawdź ścieżkę brakującego pliku .dll:
Sprawdź ścieżkę brakującego pliku .dll. Jeśli ścieżka zawiera spację lub inny nieprawidłowy znak ścieżki, usuń ją i spróbuj ponownie zbudować.
Jeśli to jest przyczyną, dostosuj kolejność kompilacji.
Sekcja (2):
Mój szczególny przypadek:
Wszystkie powyższe kroki próbowałem z różnymi kombinacjami i kombinacjami z kilkakrotnym restartowaniem Visual Studio. Ale to mi nie pomogło.
Postanowiłem więc pozbyć się innego napotkanego błędu („Nie można otworzyć pliku źródłowego („ Błąd nieokreślony ”)).
Natrafiłem na post na blogu: Błąd TFS - nie można otworzyć pliku źródłowego („Błąd nieokreślony”)
Próbowałem kroków opisanych w tym wpisie na 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ę innych błędów („nie można znaleźć pliku metadanych”), ponieważ dobrze.
Sekcja 3):
Morał historii:
Wypróbuj wszystkie rozwiązania wymienione w sekcji (1) powyżej (i wszelkie inne rozwiązania), aby pozbyć się błędu. Jeśli nic nie działa, zgodnie z blogiem wspomnianym 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 .
źródło
.NET v4.5
projekt do.NET v.4
.W moim przypadku było to spowodowane niedopasowaniem wersji .NET Framework.
Jeden projekt miał 3.5, a drugi odnosi się do projektu 4.6.1.
źródło
Zamykanie i ponowne otwieranie Visual Studio 2013 działało dla mnie!
źródło
Cóż, nic z poprzednich odpowiedzi nie działało dla mnie, więc pomyślałem o tym, dlaczego klikam i mam nadzieję, że jako programiści powinniśmy naprawdę spróbować zrozumieć, co się tutaj dzieje.
Wydawało mi się oczywiste, że to niepoprawne odniesienie do pliku metadanych musi być gdzieś przechowywane.
Szybkie wyszukiwanie pliku .csproj pokazało winne linie. Miałem sekcję o nazwie <itemGroup>, która wydawała się zawieszać na starej niepoprawnej ścieżce pliku.
Tak naprawdę prosta poprawka:
Upewnij się, że wykonałeś kopię zapasową starego .csproj przed skrzypkiem .
źródło
Spotkałem również ten problem. Najpierw musisz ręcznie zbudować swój projekt DLL, klikając prawym przyciskiem myszy opcję Buduj. Wtedy to zadziała.
źródło
Metadata file ...proj1.dll could not be found
!W moim przypadku mam zainstalowany katalog w błędny sposób.
Jeśli ścieżka rozwiązania jest podobna do „Mój projekt% 2c Bardzo popularny% 2c Testowanie jednostkowe% 2c Oprogramowanie i sprzęt.zip”, nie może rozwiązać pliku metadanych, być może powinniśmy zapobiec nieprawidłowym słowom, takim jak% 2c.
Zmiana nazwy ścieżki na normalną nazwę rozwiązała mój problem.
źródło
Otrzymałem ten sam błąd „Nie można znaleźć pliku metadanych” .dll „i próbowałem kilku rzeczy opisanych powyżej, ale przyczyną tego błędu było to, że odwoływałem się do pliku DLL innej firmy, który był skierowany na wersję .NET wyższą że mój projekt jest przeznaczony do wersji .NET. Rozwiązaniem była zmiana docelowej struktury mojego projektu.
źródło
Visual Studio 2019 to działało dla mnie:
.vs
folderźródło
Dla mnie próbowałem znaleźć bibliotekę DLL na ścieżce zawierającej projekt, ale przenieśliśmy ją do nowego katalogu. Rozwiązanie miało prawidłową ścieżkę do projektu, ale Visual Studio jakoś wciąż szukało starej lokalizacji.
Rozwiązanie: Zmień nazwę każdego projektu - po prostu dodaj znak lub cokolwiek - a następnie zmień nazwę z powrotem na pierwotną nazwę.
To musi zresetować jakąś globalną pamięć podręczną jakiegoś rodzaju w Visual Studio, ponieważ to usuwa zarówno ten problem, jak i kilka podobnych, podczas gdy rzeczy takie jak Clean nie.
źródło
Dodałem nowy projekt do mojego rozwiązania i zacząłem go otrzymywać.
Powód? Projekt, który przyniosłem, był ukierunkowany na inną platformę .NET (4.6 i moje pozostałe dwa to 4.5.2).
źródło
Dla mnie miało to miejsce, gdy dołączyłem nowy projekt rozwiązania.
Visual Studio automatycznie wybiera .NET Framework 4.5.
Zmieniłem na wersję .NET 4.5.2, podobnie jak inne biblioteki, i działało.
źródło
Dla mnie zadziałały następujące kroki:
źródło
Z tym problemem również wyciągałam włosy, ale po wypróbowaniu poprzednich odpowiedzi jedyną rzeczą, która działała dla mnie, było otwarcie każdego projektu w moim rozwiązaniu 1 na 1 i zbudowanie go indywidualnie.
Następnie zamknąłem program Visual Studio 2013, ponownie otworzyłem moje rozwiązanie i zostało poprawnie skompilowane.
To dziwne, ponieważ jeśli kliknąłem każdy projekt w Eksploratorze rozwiązań i próbowałem je zbudować w ten sposób, wszystkie zawiodły. Musiałem otworzyć je same w ich własnych rozwiązaniach.
źródło
Wygląda na tego rodzaju błędy związane z faktem, że Visual Studio nie podaje poprawnych informacji o błędzie. Deweloper nie rozumie nawet przyczyny niepowodzenia kompilacji. Może to być błąd składniowy lub coś innego. Często, aby rozwiązać takie problemy, powinieneś znaleźć źródło problemu (na przykład spójrz na dziennik kompilacji).
W moim przypadku problemem było to, że
Error List
okno nie wyświetlało żadnych błędów. Ale tak naprawdę były błędy składniowe; Znalazłem te błędy wOutput
oknie, a po ich naprawieniu problem został rozwiązany.źródło
Moje wystąpienie problemu było spowodowane wspólnym projektem, który miał zduplikowaną nazwę klasy (pod inną nazwą). To dziwne, że Visual Studio nie mógł tego wykryć i zamiast tego po prostu wysadził proces kompilacji.
źródło
Mam ten problem w Visual Studio 2012 w rozwiązaniu, które miało wiele projektów. Ręczne przebudowanie każdego projektu w rozwiązaniu w tej samej kolejności, co zamówienie kompilacji projektu (kliknij prawym przyciskiem myszy i przebuduj w Solution Explorer) naprawiło to dla mnie.
W końcu doszedłem do takiego, który dał mi błąd kompilacji. Naprawiłem błąd, a po tym rozwiązanie będzie działać poprawnie.
źródło
W moim przypadku problem polegał na tym, że ręcznie usunąłem plik niekompilacyjny, który został oznaczony jako „brakujący”. Kiedyś usunąłem odniesienie do brakującego pliku i ponownie skompilowałem - wszystko poszło dobrze.
źródło
Jeśli w nazwie rozwiązania znajduje się spacja, spowoduje to również problem. Usunięcie spacji z nazwy rozwiązania, aby ścieżka nie zawierała% 20, rozwiąże ten problem.
źródło
Wracając do tego kilka lat później, ten problem jest bardziej niż prawdopodobnie związany z maksymalnym limitem ścieżki systemu Windows:
Nazewnictwo plików, ścieżek i przestrzeni nazw , ograniczenie maksymalnej długości ścieżki
źródło
W moim przypadku problem był spowodowany prostym błędem kompilacji,
z jakiegokolwiek powodu nie pojawił się w oknie błędu.
Z tego powodu system kompilacji Visual Studio wydawał się nie zauważać błędu i próbował budować projekty zależne, co z kolei zakończyło się niepowodzeniem z irytującym komunikatem o metadanych.
Zalecenie jest -głupie, jak może to zabrzmieć-:
Najpierw spójrz na okno wyjściowe !
Zajęło mi to pół godziny, zanim ten pomysł mnie uderzył ...
źródło
Ja też miałem ten sam błąd. Ukrywa się jak na poniższej ścieżce. Ścieżka, o której mówiłem dla pliku DLL, to „D: \ Assemblies Folder \ Assembly1.dll”.
Ale oryginalna ścieżka, do której odwoływał się zespół, brzmiała „D: \ Assemblies% 20Folder \ Assembly1.dll”.
Z powodu tej zmiany nazwy ścieżki zestaw nie mógł zostać pobrany z oryginalnej ścieżki i dlatego zgłasza błąd „Nie znaleziono metadanych”.
Rozwiązaniem jest pytanie Przepełnienie stosu Jak zamienić wszystkie spacje na% 20 w C #? .
źródło
Napotkałem ten sam problem. W moim przypadku odwołałem się do projektu biblioteki klas z wyższą wersją .Net niż mój projekt, a VS nie zbudował projektu i zgłosił ten sam błąd, który opublikowałeś.
Po prostu ustawiłem wersję .Net mojego projektu biblioteki klas (ten, który zepsuł kompilację) identyczną z wersją .Net projektu i rozwiązania problemu.
źródło
Wskazując rażąco oczywiste: jeśli nie masz włączonej opcji „Pokaż okno wyjściowe po rozpoczęciu kompilacji”, upewnij się, że zauważysz, że kompilacja kończy się niepowodzeniem (mały błąd „kompilacji nie powiódł się” w lewym dolnym rogu) !!!!
źródło
Wystąpił ten błąd podczas próby opublikowania aplikacji internetowej. Okazało się, że jedna z właściwości klasy została zapakowana
ale wykorzystanie nieruchomości nie było.
DEBUG
Oczywiście publikacja została wykonana w konfiguracji Release bez symbolu.źródło
Na podstawie komunikatu o błędzie nie sądzę, aby ścieżka do pliku została obcięta. Wygląda to po prostu niepoprawnie. Jeśli poprawnie czytam komunikat, wygląda na to, że szuka pliku DLL w ...
To nie jest poprawna ścieżka. Czy to możliwe, że masz definicję makra w procesie kompilacji ustawioną na niepoprawną wartość?
źródło
Miałem ten problem, ponieważ
.nuget\NuGet.exe
nie został uwzględniony w moim repozytorium. Mimo że włączyłemDownloadNuGetExe
NuGet.targets, zgłosił błąd serwera proxy podczas próby pobrania. Spowodowało to niepowodzenie pozostałych kompilacji projektu.źródło
Ten błąd może zostać wyświetlony, jeśli używasz fałszywych zestawów. Usuwanie podróbek prowadzi do pomyślnej kompilacji projektu.
źródło