Тип или имя пространства имен не существует [закрыто]

318

У меня есть проект службы данных WCF, построенный с Visual Studio 2010, который работал нормально. Внезапно он больше не компилировался. Это давало мне сообщения вроде:

Ошибка 7 Тип или имя пространства имен «Services» не существует в пространстве имен «System.Data» (отсутствует ссылка на сборку?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. CS ...

Ошибка 8 Тип или имя пространства имен 'Linq' не существует в пространстве имен 'Система' (отсутствует ссылка на сборку?) DependencyResolver.cs 3 14

Ошибка 10 Тип или имя пространства имен «Web» не существует в пространстве имен «System.ServiceModel» (отсутствует ссылка на сборку?)

Ошибка 12 Не удалось найти тип или имя пространства имен «DataService» (отсутствует директива using или ссылка на сборку?)

Как я могу это исправить?

Attilah
источник
4
даже после их добавления сообщения об ошибках остаются
Attilah
18
Это было полезно для меня. Я не знаю, почему это было закрыто.
пользователь
2
Думаю, это потому, что, хотя ответы были полезны, оригинальный вопрос очень открытый и вряд ли относится к кому-либо еще, даже если ответы
таковы
48
Эй смотри! Полезный вопрос по ТАК. Ой, подождите, это не по теме. Но у него огромное количество голосов и ответ с еще большим количеством голосов. Что-то здесь, конечно, "выключено", но это не тот вопрос.
Jagd
3
Как парни, которые проголосовали за это, пропустили очень конкретную ошибку в вопросе («Имя типа или пространства имен не существует в пространстве имен»)? У меня была похожая проблема, и я погуглил это сообщение об ошибке, и этот вопрос стал лучшим результатом. Так что вопрос совсем не расплывчатый.
Саймон Тьюси

Ответы:

619

У меня была та же проблема, и я должен был установить «Целевую платформу» всех проектов, чтобы они были одинаковыми. Тогда это построено хорошо. В меню «Проект» выберите «Свойства ProjectName». Нажмите на вкладку компиляции. Нажмите Дополнительные параметры компиляции. В Target Framework выберите желаемую платформу.

Натан Куп
источник
13
Я установил «Целевую платформу», щелкнув правой кнопкой мыши проект в обозревателе решений и выбрав свойства. Целевая платформа должна быть видна на вкладке Приложения по умолчанию.
Cookie
4
@jaminator В некоторых случаях это решение. По крайней мере, в моем. По какой-то причине мой проект отказался принять пространство имен, существовавшее из того же решения. Проблема заключалась в том, что консольное приложение предназначалось для профиля клиента.
Amadiere
3
У меня тоже работает. Происходит, когда я добавлял проект WPF (.NET 4 Client Profile) и ссылку на проект библиотеки классов (.NET 4). Огромное спасибо !!
Тамас Ионут
58
+1 к этому. Ужасно вводящее в заблуждение сообщение об ошибке. Вероятно, сэкономил мне много часов, пытаясь понять это. Эй, Microsoft, как насчет «неспособности импортировать пространство имен BLAH, потому что BLAH - несовместимая версия», но тогда, я думаю, это лишило бы Натана 184 голосов.
Джеральд Дэвис
3
Есть ли обходной путь для случаев, когда мы не можем изменить целевые рамки проектов?
Raj123
43

У меня была проблема с System.Linq, которая не была распознана. usingЗаявление было красное волнистой и т.д. То , как я решил , что должен был изменить свой сайт , чтобы целевой DotNet 3.5, а затем вернуться к исходной целевой структуры (4.0 в моем случае).

Джон Уэст
источник
2
У меня тоже сработало! Но я должен был сделать это дважды ... пойди разберись!
Николь
После ручного объединения нескольких файлов web.config из разных целевых структур для одного и того же приложения файл web.config перестал работать, и я получил 500 Internal Server Error. После сброса, как описано, некоторые старые настройки были удалены Visual Studio 2012 автоматически из web.config, а затем приложение снова заработало.
humbads
Если бы подобный вопрос, я думаю , что некоторые рамочные версии просто не признают в System.Linqкачестве действительной библиотеки
Callat
3
Спасибо. Смешно, что эта тема была закрыта, так как это помогло мне, потратив час, пытаясь понять, почему мои функции и ссылки перестали работать внезапно. Ссылка, которая не удалась для меня, была system.management.automation.dll
Bbb
Это было действительно волшебство. Так же, как и мой новый Mobile Honor 8X, в котором иногда изменение настроек вступает в силу не сразу. Для того, чтобы он работал правильно, я должен переключаться назад и вперед несколько раз.
Хариш Нинге Говда
28

Я обнаружил, что это вызвано тем, что у меня такое же имя пространства имен, как и у класса ( MyWorld.MyWorld = Namespace.ClassName).

Измените ваше пространство имен на имя, которое не совпадает с именем вашего класса, и оно будет скомпилировано.

Источник

KiwiNige
источник
6
Чтобы решить эту проблему, просто Windows.Whateverglobal::
добавьте
20

Я столкнулся с той же проблемой с сайтом ASP.NET MVC, когда пытался использовать LINQ to SQL . Я исправил проблему следующим образом:

Обозреватель решений -> Ссылки -> Щелкните правой кнопкой мыши System.Data.Linq -> Копировать локальный (True).

ModChowdhury
источник
17

Убедитесь, что ваша целевая платформа имеет те же версии .NET. У меня была та же проблема, и мой класс .NET был 3,5, а веб-решение было 4,5. Я их синхронизировал, а потом все заработало :)

Gorglar
источник
16
это просто повторяет сказанное и объясненное в предыдущем ответе, который был опубликован за несколько месяцев до этого
комнат
12

У меня была та же проблема, и я все безуспешно пробовал все вышеперечисленное, затем я узнал, что это было:

Я создал папку с именем «Система» в одном из моих проектов, а затем создал в ней класс. Кажется, проблема связана с наличием пространства имен, называемого «System», при создании файла .cs, даже если он находится в пространстве имен «MyProject.System».

Оглядываясь назад, я понимаю, почему это может вызвать проблемы. Сначала это действительно озадачило меня, так как сообщения об ошибках изначально не имеют отношения к проблеме.

GrandMasterFlush
источник
1
У меня тоже была эта проблема, для справки. Было бы неплохо, если бы в инструменте было более понятное сообщение об ошибке, ну да ладно.
Ник
3
Я опубликовал что-то на MSDN, но MS сказал, что это не ошибка. Я не буду спорить с этим, но я бы надеялся, что они поняли бы, как это может вызвать проблемы.
GrandMasterFlush
1
Это обман ...
Jitka Darbie Hübnerová
12

Я испытал ту же проблему с System.Data.SQLite. Источником проблемы является то, что используемая вами dll должна иметь ту же версию .NET с вашим проектом.

Например, если вы использовали (в моем случае) SQLite для .NET 4.5, ваша целевая платформа также должна быть .NET 4.5.

Вы можете найти цель платформы: Project> (имя проекта) Properties> Build.

hakanali_md
источник
1
Это решило проблему, с которой я только что столкнулся. Сообщение об ошибке не очень полезно, кроме как сообщить вам, какая DLL является проблемой.
PointlessSpike
7

В моем случае проблема была в том, что созданный мной класс имел пространство имен, которое мешало существующим классам. Новый класс A имел пространство имен zz.yy.xx (по ошибке). Ссылки на объекты в другом пространстве имен yy.xx не компилировались в классе A или других классах, пространство имен которых было zz.

Я изменил пространство имен класса A на yy.xx, как и должно было быть, и оно начало работать.

Zdan
источник
5

ДЛЯ ЛЮБОГО С СВЯЗАННЫМИ ФАЙЛАМИ: у меня была эта проблема, и я использовал silverlight, и файл-нарушитель, который выдавал эту ошибку, был связанным файлом.

Ошибка от компилятора сказала мне, что ошибка произошла в проекте, в котором находился файл. В итоге ошибка НЕ ​​была в этом проекте, она произошла в проекте, который содержал связанный файл. В этом проекте отсутствовала ссылка.

Марио
источник
У меня была эта проблема с проектом .NET 4 с использованием System.Management.Automation при тестировании проекта с Visual Studio 2013 в Windows 10. При обновлении проекта до .NET 4.5.1 исправлена ​​проблема.
Малкольм Маккафери
2

Я столкнулся с этой проблемой при использовании интеграции Git в Visual Studio для управления проектом. По какой-то причине проект Windows Phone 8 скомпилировался бы отлично при нацеливании на x86, но когда я настроил его на ARM, он не скомпилировался бы с ошибкой, указывающей на то, что в пространстве имен Microsoft не было «Advertising».

Я решил проблему, удалив ссылку Microsoft.Advertising. *. Dll и добавив ее снова.

Том Стю
источник
1

В моем случае не было никаких изменений в проектах, он просто перестал компилироваться и с «типом или именем пространства имен XXX не существует», а в самом жалобном классе intellisense для этого пространства имен / класса XXX работает нормально. Проблема была в ссылках действительно!

Действия по воспроизведению:

  1. Решение имеет ProjectA, ProjectB. ProjectA ссылается на сторонний log4net и помечается Copy local: true. ProjectB ссылается на ProjectA и не имеет ссылки на log4net. Решение компилируется нормально.

  2. Изменение в ProjectA: ссылочное свойство для log4net Copy local: false.

  3. Очистите папки bin и obj.
  4. Когда вы компилируете, ProjectA компилирует, но ProjectB жалуется, что не может найти пространство имен ProjectA.

This is because ProjectB в папке bin отсутствует сторонняя библиотека (log4net in my case)!

В этом случае решение будет -

  1. убедитесь, что ссылки на сторонние библиотеки установлены на Copy local: true или
  2. добавить путь к таким библиотекам в свойствах проекта под ссылочным путем.
Саша бонд
источник
1

Я ссылаюсь на Microsoft.CommerceServer.Runtime.Orders и столкнулся с этой ошибкой. Этот проект старый и имеет целевую платформу .NET 2.0. В выводе у меня была эта ошибка:

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"

Я просто изменил целевой фреймворк на .NET 4, и теперь он собирается.

Skychan
источник
1

И если ничего не помогает, например, убедитесь, что целевые платформы совпадают, и вы имеете дело с библиотекой классов WPF в VS2010, просто перезапустите Visual Studio. Это сделало это для меня.

Клаус Нджи
источник
в моем случае vs2010, ссылка на dll имеет ошибку, я прочитал ссылку на dll, и она кажется отличной, но после сборки type namespace errorпроисходит. И я перезапускаю Visual Studio, после перезапуска снова показывается исходная ошибка DLL, и я снова ее читаю, и снова строю, успех.
Ю Ян Цянь
0

Я испытал те же ошибки. После того, как я обнаружил, что мой проект имел неправильное имя сборки (я скопировал файлы из другого проекта, и пространства имен немного запутались), и изменил его обратно, проект скомпилирован хорошо.

Фред
источник
Хотя это и было понижено, это была моя проблема! Спасибо.
SteveCav
0

Я получил очень похожее сообщение об ошибке, которое было вызвано непреднамеренным созданием дубликата класса в другом проекте моего решения. Удаление дубликата устранило проблему

Крис Хэлкроу
источник
0

Недавно мне нужно было выполнить восстановление системы, и это привело к изменению / исчезновению нескольких моих файлов, над которыми я работал с момента восстановления. Некоторые из них были DLL-файлами. Я использовал Source Control для получения всего проекта, но у меня все еще была проблема, аналогичная описанной выше. Я нашел ответ, в котором описано, что вам может понадобиться удалить DLL и прочитать ее, чтобы исправить ошибки. Это был случай в моем сценарии.

Удаление WebMatrix.WebDataи чтение, а также WebMatrix.Dataисправление ошибки The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

JabberwockyDecompiler
источник
-3

Удалите файл .refresh.dll, если вы находитесь под контролем исходного кода. Затем восстановите. Он должен работать. Это сработало для меня

Саяд
источник