Тип или имя пространства имен не существует
У меня есть проект службы данных 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 работает нормально. Проблема была в ссылках действительно!
Действия по воспроизведению:
Решение имеет ProjectA, ProjectB. ProjectA ссылается на сторонний log4net и помечается
Copy local: true
, ProjectB ссылается на ProjectA и не имеет ссылки на log4net. Решение компилируется нормально.Изменение в ProjectA: ссылочное свойство для log4net
Copy local: false
,- Очистите папки bin и obj.
- Когда вы компилируете, ProjectA компилирует, но ProjectB жалуется, что не может найти пространство имен ProjectA.
This is because ProjectB
в папке bin отсутствует сторонняя библиотека (log4net in my case)!
В этом случае решение будет -
- убедитесь, что ссылки на сторонние библиотеки установлены на
Copy local: true
или же - добавить путь к таким библиотекам в свойствах проекта под ссылочным путем.
Я ссылаюсь на 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, если вы находитесь под контролем исходного кода. Затем восстановите. Он должен работать. Это сработало для меня