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

Проект, над которым я работал долгое время без каких-либо проблем, внезапно начал выдавать такие ошибки, как

The type or namespace name 'xxx' does not exist in the namespace 'yyy' (are you missing an assembly reference)?

В этом случае пространства имен были всеми основными библиотеками.Net, такими как System.Data, Linq, а также IO что я использую без проблем.

Я рассмотрел все вопросы в этом вопросе, такие как проверка того, что все проекты в рабочей области используют одну и ту же версию.Net для настройки Target Framework.

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

5 ответов

Решение

После отката моей работы с TFS мне удалось выяснить, что я сделал, что создало эту ошибку: я добавил папку с именем "Система" в свой проект и поместил в нее файл класса.

Эту проблему легко воспроизвести: создайте проект, добавьте в него папку с именем system (она все еще будет компилироваться на этом этапе), а затем создайте в ней файл.cs, и тогда произойдут все забавные ошибки.

Проблема связана с именем папки "System", которая приводит к тому, что все созданные в ней файлы находятся в пространстве имен ".System".

Я могу понять, почему наличие папки / пространства имен с именем "System" сейчас вызывает проблемы, но я думаю, что было бы полезно, если бы Visual Studio предупреждала при создании папки / пространства имен с таким именем, чтобы эта проблема вообще не возникала. Я зарегистрировал ошибку с MS, по крайней мере, эта регистрация может помочь любым другим людям, которые совершили ту же ошибку, что и я!

Я переименовал пространство имен файла, на который ссылался, с myproject.shared.constants на myproject.SOMETHING.shared.constants

После этого он предложил "использовать myproject.SOMETHING.shared.constants" в качестве предложения. Я переименовал его обратно в myproject.shared.constants, и тогда он сработал.

В моем случае я просто установил псевдоним в операторе using.

Так:

      using aliasName = yyy.xxx;

Тогда просто используйтеaliasName.somethingи это сработало!

У меня есть несколько вложенных папок, поэтому, возможно, компилятор запутался.

Попробуйте очистить, а затем перестроить файл dll. У меня возникла та же проблема, я пробовал разные предложения из Интернета, но ни один из них не работает. Но это будет. Если вы не знаете, как выполнить следующие действия:

  1. откройте файл проекта dll. 2. нажмите на обозреватель решений. Щелкните правой кнопкой мыши на имени вашего проекта Dll, вы найдете параметр «Очистить и перестроить».

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

У меня было два проекта в моем обозревателе решений. Чтобы решить эту проблему, я щелкнул правой кнопкой мыши проект, который был связан с сообщением об ошибке, и выбрал "Построить".

После этого проблема была решена.

Просто добавлю, что проблема была окончательно решена после того, как я добавил ссылку на "проект" из другого "проекта".

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