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


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.