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ć?


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ę.


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).


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


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)


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 :)


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.


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.


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ć.


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.


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.


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.

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.


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.


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ł.


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


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' ....


-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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.