Тип или имя пространства имен не существует

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

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

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

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

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

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

17 ответов

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

У меня была проблема с System.Linq, которая не была распознана. using оператор имел красный волнистый характер и т. д. Я решил, что изменил свой веб-сайт на целевой dotnet 3.5, а затем переключился обратно на исходную целевую платформу (4.0 в моем случае).

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

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В моем случае не было никаких изменений в проектах, он просто перестал компилироваться и с "типом или именем пространства имен 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. добавить путь к таким библиотекам в свойствах проекта под ссылочным путем.

Я ссылаюсь на 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, и теперь он собирается.

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

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

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

Другие вопросы по тегам