Nazwa typu lub przestrzeni nazw nie istnieje [zamknięte]

318

Mam projekt usługi danych WCF zbudowany przy użyciu programu Visual Studio 2010, który działał dobrze. Nagle przestało się kompilować. Dał mi takie wiadomości jak:

Błąd 7 Typ lub nazwa przestrzeni nazw „Usługi” nie istnieje w przestrzeni nazw „System.Data” (brakuje odniesienia do zestawu?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. cs ...

Błąd 8 Typ lub nazwa przestrzeni nazw „Linq” nie istnieje w przestrzeni nazw „System” (brakuje odniesienia do zestawu?) DependencyResolver.cs 3 14

Błąd 10 Typ lub nazwa przestrzeni nazw „Web” nie istnieje w przestrzeni nazw „System.ServiceModel” (brakuje odniesienia do zestawu?)

Błąd 12 Nie można znaleźć nazwy typu lub przestrzeni nazw „DataService” (brakuje dyrektywy używającej lub odwołania do zestawu?)

Jak mogę to naprawić?

Attilah
źródło
4
nawet po ich dodaniu komunikaty o błędach nadal pozostają
Attilah,
17
To mi się przydało. Nie wiem, dlaczego został zamknięty.
użytkownik
2
Pomyśl, że to dlatego, że chociaż odpowiedzi były przydatne, pierwotne pytanie jest bardzo otwarte i mało prawdopodobne, aby
odnosiło się
48
Hej, patrz! Przydatne pytanie dotyczące SO. Och, czekaj, to nie na temat. Ale ma ogromną liczbę głosów pozytywnych i odpowiedź z jeszcze większą liczbą głosów pozytywnych. Coś tu jest z pewnością „wyłączone”, ale to nie jest to pytanie.
Jagd
3
W jaki sposób faceci, którzy głosowali za zamknięciem tego, przegapili bardzo konkretny błąd w pytaniu („Typ lub nazwa przestrzeni nazw nie istnieje w przestrzeni nazw”)? Miałem podobny problem i przejrzałem ten komunikat o błędzie i to pytanie było najwyższym rezultatem. Więc pytanie wcale nie jest niejasne.
Simon Tewsi,

Odpowiedzi:

619

Miałem ten sam problem i musiałem ustawić „docelowe ramy” wszystkich projektów, aby były takie same. Potem wszystko poszło dobrze. W menu Project kliknij polecenie ProjectName Properties. Kliknij kartę kompilacji. Kliknij Zaawansowane opcje kompilacji. W strukturze docelowej wybierz żądaną strukturę.

Nathan Koop
źródło
13
„Target Framework” ustawiam, klikając prawym przyciskiem myszy projekt w eksploratorze rozwiązań i wybierając właściwości. Struktura docelowa powinna być widoczna na domyślnej karcie Aplikacja.
Cookie
4
@jaminator W niektórych przypadkach jest to rozwiązanie. Przynajmniej w moim. Z jakiegoś powodu mój projekt odmówił przyjęcia przestrzeni nazw istniejącej z tego samego rozwiązania. Problem polegał na tym, że aplikacja konsoli celowała w profil klienta.
Amadiere
3
Dla mnie też działa. Wystąpiło, gdy dodawałem projekt WPF (profil klienta .NET 4) i odwołanie do projektu biblioteki klas (.NET 4). Wielkie dzięki !!
Tamas Ionut
58
+1 do tego. Strasznie wprowadzający w błąd komunikat o błędzie. Prawdopodobnie zaoszczędził mi godziny próbowania tego. Hej Microsoft, a może „nie można zaimportować przestrzeni nazw BLAH, ponieważ BLAH jest wersją niezgodną”, ale sądzę, że pozbawiłoby to Nathana 184 głosów pozytywnych.
Gerald Davis
3
Czy istnieje obejście dla przypadków, w których nie możemy zmienić ram docelowych projektów?
Raj123
43

Miałem problem z nierozpoznaniem System.Linq . usingOświadczenie miał czerwony falowane, itd. Sposób Rozwiązałem to było zmienić moją stronę do docelowej dotnet 3.5, a następnie powrócić do pierwotnego ukierunkowanego ram (4,0 w moim przypadku).

John West
źródło
2
Pracowałem też dla mnie! Ale musiałem to zrobić dwa razy ... idź do przodu!
nicholeous
Po ręcznym scaleniu niektórych plików web.config z różnych platform docelowych dla tej samej aplikacji, web.config przestał działać i dostałem 500 wewnętrzny błąd serwera. Po zresetowaniu zgodnie z opisem niektóre stare ustawienia zostały automatycznie usunięte przez program Visual Studio 2012 z pliku web.config, a następnie aplikacja działała ponownie.
humbads
Miałem podobny problem, myślę, że niektóre wersje frameworku po prostu nie uznają System.Linqza prawidłową bibliotekę
Callat
3
Dziękuję Ci. To niedorzeczne, że ten temat został zamknięty, ponieważ pomogło mi to również po marnowaniu godziny na zastanowienie się, dlaczego moja funkcja i referencje nagle przestały działać. Odwołanie, które nie powiodło się dla mnie, to system.management.automation.dll
Bbb
To była naprawdę magia. Podobnie jak mój nowy Mobile Honor 8X, w którym czasami zmiana ustawień nie działa natychmiast. Aby działało poprawnie, muszę kilkakrotnie przełączać się w tę iz powrotem.
Harish NInge Gowda
28

Odkryłem, że jest to spowodowane tym, że mam taką samą nazwę przestrzeni nazw jak nazwa klasy ( MyWorld.MyWorld = Namespace.ClassName).

Zmień przestrzeń nazw na inną niż nazwa twojej klasy, a to się skompiluje.

Źródło

KiwiNige
źródło
6
Aby rozwiązać to tylko prefiks Windows.Whateverzglobal::
joshcomley
20

Ten sam problem z witryną ASP.NET MVC napotkałem, gdy próbowałem użyć LINQ do SQL . Rozwiązałem problem przez:

Solution Explorer -> References -> Kliknij prawym przyciskiem myszy System.Data.Linq -> Kopiuj lokalnie (True)

ModChowdhury
źródło
17

Sprawdź, czy docelowa struktura ma te same wersje .NET. Miałem ten sam problem, a moja klasa .NET miała 3.5, a rozwiązanie internetowe 4.5. Zsynchronizowałem je, a potem zadziałało :)

Gorglar
źródło
16
to tylko powtarza punkt podany i wyjaśniony w poprzedniej odpowiedzi, która została opublikowana kilka miesięcy przed tym
komara
12

Miałem ten sam problem i wypróbowałem wszystkie powyższe bez powodzenia, a potem dowiedziałem się, co to było:

Utworzyłem folder o nazwie „System” w jednym z moich projektów, a następnie utworzyłem w nim klasę. Problem wydaje się wynikać z posiadania przestrzeni nazw o nazwie „System” podczas tworzenia pliku .cs, nawet jeśli znajduje się ona w przestrzeni nazw „MyProject.System”.

Patrząc wstecz, rozumiem, dlaczego spowodowałoby to problemy. Naprawdę mnie zaskoczyło, ponieważ komunikaty o błędach początkowo nie wydają się odnosić do problemu.

GrandMasterFlush
źródło
1
Miałem również ten problem w celach informacyjnych. Byłoby miło, gdyby w narzędziu był bardziej objaśniający komunikat o błędzie, ale no cóż.
Nick
3
Wysłałem coś na temat MSDN, ale MS powiedziało, że to nie błąd. Nie będę się z tym kłócić, ale miałbym nadzieję, że zrozumieliby, w jaki sposób może to powodować problemy.
GrandMasterFlush
1
To
kłamstwo
12

Mam taki sam problem z System.Data.SQLite. Źródłem problemu jest to, że dll, którego użyłeś, powinien mieć tę samą wersję .NET z twoim projektem.

Na przykład, jeśli użyłeś (w moim przypadku) SQLite dla .NET 4.5, docelową platformą powinien być również .NET 4.5.

Cel platformy można znaleźć: Projekt> (nazwa projektu) Właściwości> Kompilacja.

hakanali_md
źródło
1
To rozwiązało problem, który właśnie miałem. Komunikat o błędzie nie jest zbyt pomocny poza informowaniem, która biblioteka DLL jest problemem.
PointlessSpike
7

W moim przypadku problem występował, ponieważ utworzona przeze mnie klasa miała przestrzeń nazw, która kolidowała z istniejącymi klasami. Nowa klasa A miała przestrzeń nazw zz.yy.xx (przez pomyłkę). Odwołania do obiektów w innej przestrzeni nazw yy.xx nie były kompilowane w klasie A lub innych klasach, których przestrzenią nazw był zz.

Zmieniłem przestrzeń nazw klasy A na yy.xx, która powinna być, i zaczęła działać.

zDan
źródło
5

DLA KAŻDEGO Z PODŁĄCZONYMI PLIKAMI: Miałem ten problem i korzystałem z Silverlight, a szkodliwy plik zgłaszający ten błąd był plikiem połączonym.

Błąd kompilatora powiedział mi, że wystąpił błąd w projekcie, w którym mieszkał plik. Skończyło się to tym, że błąd NIE był w tym projekcie, ale występował w projekcie, który zawierał połączony plik. W projekcie brakowało referencji.

Mario
źródło
Miałem ten problem z projektem .NET 4 przy użyciu System.Management.Automation podczas testowania projektu w Visual Studio 2013 na Windows 10. Uaktualnienie projektu do .NET 4.5.1 naprawiono problem.
Malcolm McCaffery
2

Napotkałem ten problem podczas korzystania z Git Visual Studio integracji do zarządzania projektem. Z jakiegoś powodu projekt Windows Phone 8 kompilowałby się dobrze podczas celowania na x86, ale kiedy ustawię go na ARM, kompilacja nie powiedzie się z błędem wskazującym, że „Reklama” nie istniała w przestrzeni nazw Microsoft.

Rozwiązaniem problemu było usunięcie odwołania Microsoft.Advertising. *. Dll i dodanie go ponownie.

Tom Stu
źródło
1

W moim przypadku projekty nie uległy zmianie, po prostu przestało się kompilować i „typ lub nazwa przestrzeni nazw XXX nie istnieje”, aw samej klasie narzekającej inteligencja dla tej przestrzeni nazw / klasy XXX działa dobrze. Problem był rzeczywiście w referencjach!

Kroki ku reprodukcji:

  1. Rozwiązanie ma ProjectA, ProjectB. ProjectA odwołuje się do log4net strony trzeciej i jest oznaczonyCopy local: true . ProjectB odwołuje się do ProjectA i nie ma odniesienia do log4net. Rozwiązanie dobrze się kompiluje.

  2. Zmiana w ProjectA: właściwość referencyjna dla log4net na Copy local: false.

  3. Wyczyść foldery bin i obj.
  4. Podczas kompilacji ProjectA kompiluje się, ale ProjectB narzeka na brak znalezienia przestrzeni nazw ProjectA.

This is because ProjectB W folderze bin brakuje biblioteki innej firmy (log4net in my case)!

W takim przypadku rozwiązaniem byłoby -

  1. upewnij się, że odniesienia do bibliotek stron trzecich są ustawione na Copy local: true lub
  2. dodaj ścieżkę do takich bibliotek we właściwościach projektu w ścieżce referencyjnej.
Sasha Bond
źródło
1

Odnoszę się do Microsoft.CommerceServer.Runtime.Orders i wystąpił ten błąd. Ten projekt jest stary i ma platformę docelową .NET 2.0. W wyniku miałem ten błąd:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Po prostu zmieniłem docelowy framework na .NET 4 i teraz on się buduje.

Skychan
źródło
1

A jeśli wszystko inne zawiedzie, na przykład upewnienie się, że docelowe ramy są takie same, a masz do czynienia z biblioteką klas WPF w VS2010, po prostu uruchom ponownie program Visual Studio. To mi zrobiło.

Klaus Nji
źródło
w moim przypadku vs2010, referencja dll ma błąd, przeczytałem referencję dll i wydaje się świetna, ale po kompilacji się type namespace errorzdarza. I ponownie uruchamiam Visual Studio, po ponownym uruchomieniu oryginalny błąd dll pokazuje się ponownie, czytałem go ponownie i budowałem ponownie, sukces.
yu yang Jian
0

Wystąpiły te same błędy. Po tym, jak odkryłem, że mój projekt ma niewłaściwą nazwę zestawu (skopiowałem pliki z innego projektu, a przestrzenie nazw były trochę zdezorientowane) i zmieniłem go z powrotem, projekt ładnie się skompilował.

Fred
źródło
Mimo to, był to mój problem! Dzięki.
SteveCav,
0

Otrzymałem bardzo podobny komunikat o błędzie, który został spowodowany przez nieumyślne wykonanie duplikatu klasy w innym projekcie mojego rozwiązania. Usunięcie duplikatu rozwiązało problem

Chris Halcrow
źródło
0

Niedawno potrzebowałem Przywrócić system i spowodowało to zmianę / zniknięcie niektórych moich plików, nad którymi pracowałem od czasu przywracania. Niektóre z nich to pliki DLL. Użyłem Kontroli Źródła, aby pobrać cały projekt, ale nadal miałem podobny problem jak powyżej. Znalazłem tę odpowiedź która opisuje, że być może trzeba usunąć bibliotekę DLL i przeczytać ją, aby naprawić błędy. Tak było w moim scenariuszu.

Usunięcie WebMatrix.WebDatai odczytanie go, a także dodanie poprawiło WebMatrix.Datamój błąd The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

JabberwockyDecompiler
źródło
-3

Usuń plik .refresh.dll, jeśli masz kontrolę źródła. Następnie odbuduj. To powinno działać. To zadziałało dla mnie

sajad
źródło