Ім'я типу або простору імен не існує [закрито]


318

У мене є проект WCF Data Service, побудований за допомогою 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" (ви не використовуєте директиву чи посилання на збірку?)

Як я можу це виправити?


4
навіть після їх додавання повідомлення про помилки все ще залишаються
— Attilah

18
Це мені було корисно. Я не знаю, чому його закрили.
— користувач gmail

2
Подумайте, тому що, хоча відповіді були корисними, оригінальне запитання є дуже відкритим і навряд чи стосується когось іншого, хоча відповіді
— WongKongPhooey

48
Гей, дивись! Корисне питання про СО. О, зачекайте, це поза темою. Але в ньому є величезна кількість відгуків і відповідь з ще більшою кількістю поданих заявок. Щось тут, безумовно, "відключено", але це не це питання.
— Джагд

3
Як хлопці, які проголосували за те, щоб пропустити цю програму, пропустили дуже специфічну помилку у запитанні ("Тип імені простору імен не існує в просторі імен")? У мене була аналогічна проблема, і Google Google повідомив про помилку, і це питання було найкращим результатом. Тож питання зовсім не розпливчасте.
— Саймон Тевсі

Відповіді:


619

У мене була така ж проблема, і я повинен був встановити "Цільову рамку" для всіх проектів, щоб вони були однаковими. Тоді воно будувало чудово. У меню "Проект" натисніть "Властивості проекту". Перейдіть на вкладку компіляції. Клацніть Розширені параметри компіляції. У цільовій структурі виберіть бажаний фреймворк.


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 внутрішніх серверів. Після скидання, як описано, Visual Studio 2012 деякі старі налаштування автоматично видалили з web.config, після чого додаток знову працював.
— хабади

У мене була подібна проблема, я думаю, що деякі рамкові версії просто не визнаються System.Linqдійсною бібліотекою
— Callat

3
Дякую. Це смішно, ця тема була закрита, оскільки це допомогло мені також, витративши годину, намагаючись зрозуміти, чому моя функція та довідка раптом перестали працювати. Посилання, яке не вдалося для мене, було system.management.automation.dll
— Bbb

Це було справді магією. Так само, як і в моєму новому мобільному Honor 8X, у якому іноді зміна налаштувань набирає чинності негайно. Для того, щоб вона працювала належним чином, мені потрібно перемикатися вперед і назад кілька разів.
— Harish NInge Gowda

28

Я виявив, що це викликано тим, що я маю те саме ім'я простору імен, що і ім'я класу ( MyWorld.MyWorld = Namespace.ClassName).

Змініть простір імен на ім’я, яке не є іменем вашого класу, і це буде компілюватися.

Джерело


6
Щоб вирішити це тільки префіксом Windows.Whateverзglobal::
— joshcomley

20

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

Провідник рішень -> Список літератури -> Клацніть правою кнопкою миші на System.Data.Linq -> Копіювати локальний (True)


17

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


16
це просто повторює пункт, зроблений і пояснений у попередній відповіді, який був опублікований за кілька місяців до цього
— гнат

12

У мене була така ж проблема і без всякого успіху спробувала все вищесказане, тоді я дізналася, що це:

Я створив папку під назвою "Система" в одному зі своїх проектів, а потім створив у ній клас. Здається, проблема виникає в тому, що при створенні файлу .cs створюється простір імен під назвою "Система", навіть якщо він знаходиться в просторі імен "MyProject.System".

Озираючись назад, я можу зрозуміти, чому це може спричинити проблеми. Спочатку це насправді наткнуло мене, оскільки повідомлення про помилки спочатку, здається, не стосуються проблеми.


1
У мене це питання було також для довідки. Було б добре, якби в інструменті було більше пояснювальних повідомлень про помилку, але так добре.
— Нік

3
Я щось розмістив на MSDN, але MS сказав, що це не помилка. Я не буду сперечатися з цим, але я би сподівався, що вони зрозуміють, як це може спричинити проблеми.
— GrandMasterFlush

1
Це обман…
— Jitka Darbie Hübnerová

12

У мене виникли ті ж проблеми з System.Data.SQLite. Джерелом проблеми є те, що використаний вами dll повинен мати однакову версію .NET з вашим проектом.

Наприклад, якщо ви використовували (в моєму випадку) SQLite для .NET 4.5, ціль вашої платформи має бути також .NET 4.5.

Ви можете знайти ціль платформи за: Проект> (назва проекту) Властивості> Створити.


1
Це вирішило проблему, яку я щойно мав. Повідомлення про помилку не дуже допомагає, крім того, щоб сказати, яка проблема з DLL.
— Безглуздий

7

У моєму випадку проблема трапилась через те, що створений мною клас мав простір імен, який заважав існуючим класам. Новий клас A мав простір імен zz.yy.xx (помилково). Посилання на об'єкти в іншому просторі імен yy.xx не були компільовані в класі A чи інших класах, простір імен яких був zz.

Я змінив простір імен класу A на yy.xx, яким він мав бути, і він почав працювати.


5

ДЛЯ КОЖНОГО З ПОЗАЄМИМИ ФАЙЛОВАми: У мене виникла ця проблема, і я використовував сріблясте світло, а файл-образник, який видав цю помилку, був пов'язаним файлом.

Помилка компілятора сказала мені, що помилка трапилася в проекті, в якому жив файл. Це виявилося, що помилка НЕ ​​була в тому проекті, вона траплялася в проекті, який містив пов'язаний файл. На цей проект бракувало посилання.


У мене виникла ця проблема з проектом .NET 4 за допомогою System.Management.Automation під час тестування проекту з Visual Studio 2013 на Windows 10. Оновлення проекту до .NET 4.5.1 виправлена ​​проблема.
— Малькольм Маккаффі

2

Я зіткнувся з цією проблемою під час використання інтеграції Git Visual Studio для управління проектом. Чомусь проект Windows Phone 8 складеться чудово при націлюванні на x86, але коли я встановив його для націлювання на ARM, він не зможе скомпілювати помилку, що вказує на те, що "Реклама" не існує в просторі імен Microsoft.

Я вирішив проблему, видаливши посилання Microsoft.Advertising. *. Dll і додавши його знову.


1

У моєму випадку в проектах не було змін, воно просто перестало компілюватись і з "типом або простором імен ім'я XXX не існує", і в самому класі скаржників інтелігенція для цього простору імен / класу XXX працює чудово. Проблема була в посиланнях насправді!

Кроки до відтворення:

  1. Рішення має ProjectA, ProjectB. ProjectA посилається на сторонній log4net і він позначений Copy local: true. ProjectB посилається на ProjectA і не має посилання на log4net. Розчин складається добре.

  2. Зміна в ProjectA: посилання властивості для log4net на Copy local: false.

  3. Очистіть папки для сміття та obj.
  4. Під час компіляції ProjectA компілює, але ProjectB скаржиться на те, що не знайшов простору імен ProjectA.

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

У цьому випадку рішення було б -

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

1

Я посилаюся на Microsoft.CommerceServer.Runtime.Orders і виникла ця помилка. Цей проект давній і має Target Framework .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 і тепер він будується.


1

І якщо все інше не вдається, наприклад, щоб цільові рамки були однаковими, і ви маєте справу з бібліотекою класів WPF у VS2010, просто перезапустіть Visual Studio. Це зробило це для мене.


у моєму випадку vs2010, посилання на DLL має помилку, я прочитав посилання на dll, і це здається чудовим, але після побудови type namespace errorтрапляються. І я перезапускаю візуальну студію, після перезавантаження знову показують оригінальну помилку 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' ....


-3

Видаліть .refresh.dll файл, якщо ви знаходитесь під контролем джерела. Потім відбудуйте. Це має працювати. Це працювало для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.