Тип или имя пространства имен не существует в пространстве имен - но пространства имен существуют
Проект, над которым я работал долгое время без каких-либо проблем, внезапно начал выдавать такие ошибки, как
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. У меня возникла та же проблема, я пробовал разные предложения из Интернета, но ни один из них не работает. Но это будет. Если вы не знаете, как выполнить следующие действия:
- откройте файл проекта dll. 2. нажмите на обозреватель решений. Щелкните правой кнопкой мыши на имени вашего проекта Dll, вы найдете параметр «Очистить и перестроить».
У меня возникла та же проблема после неожиданного выключения системы, и, хотя VS попытался восстановить ее, проблема возникла.
У меня было два проекта в моем обозревателе решений. Чтобы решить эту проблему, я щелкнул правой кнопкой мыши проект, который был связан с сообщением об ошибке, и выбрал "Построить".
После этого проблема была решена.
Просто добавлю, что проблема была окончательно решена после того, как я добавил ссылку на "проект" из другого "проекта".