Тип или имя пространства имен OracleClient не существует в пространстве имен System.Data.

При попытке запустить свой код я получаю следующую ошибку:

CS0234: Тип или имя пространства имен OracleClient не существует в пространстве имен System.Data (вам не хватает ссылки на сборку?)

Я включил ссылки на System.Data.dll и System.Data.OracleClient.dll, но я все еще получаю эту ошибку.

Ошибка вызвана строкой using System.Data.OracleClient в моем объявлении пространства имен.


person jaredk    schedule 31.08.2012    source источник
comment
Хорошо. Мой ответ не совпадает сейчас, когда вы редактировали и просто рассказываете вам то, что вы уже знаете. Сначала я бы посмотрел на свойства ссылок и убедился, что они указывают на правильный файл и на соответствующую версию .NET, если в системе более одной среды выполнения.   -  person Jon Hanna    schedule 31.08.2012


Ответы (5)


Директива using System.Data.OracleClient означает, что это пространство имен следует учитывать при попытке определить, что означают неполные имена.

Добавление ссылки означает, что вы добавляете ссылку на данную сборку, в данном случае System.Data.OracleClient.dll. В VisualStudio, SharpDevelop или MonoDevelop вы увидите папку ссылок в окне проводника проекта. Щелкните правой кнопкой мыши и «Добавить ссылку» (VisualStudio и SharpDevelop) или «Изменить ссылки» (MonoDevelop) и добавьте в System.Data.OracleClient.dll

Если вы используете nant, вам нужно будет отредактировать свой сценарий nant.

Сборки и пространства имен перекрываются, но не совсем одинаковы. Ссылка означает, что вы можете использовать, например, System.Data.OracleClient.OracleDataReader, потому что теперь проект знает, в какой сборке находится код для этого. Директива using означает, что вам нужен только тип OracleDataReader. Как правило, между сборками и пространствами имен наблюдается сильное совпадение, потому что это облегчает жизнь для всех, но бывают случаи, когда сборка имеет классы из более чем одного пространства имен, и когда пространство имен разделено на несколько сборок. Классическим примером является то, что mscorlib имеет множество классов из System, System.Collections, System.IO и т. Д., Без которых вы не могли бы надеяться построить проект .NET (включая те, которые .NET использует сам), в то время как System.dll имеет множество больше из тех же пространств имен, которые вы могли бы обойтись без использования (но вы все равно будете в 99% случаев).

Если вы не пишете абсолютно огромную библиотеку с тысячами классов, охватывающих перекрывающиеся варианты использования, ваши собственные сборки должны работать с одним пространством имен - или, самое большее, с одним пространством имен внутри этого одного, например JaredksGreatCode, имеющим JaredksGreatCode.UserInterface внутри это - на одну DLL.

person Jon Hanna    schedule 31.08.2012
comment
Я уже добавил ссылку на System.Data.OracleClient.dll, и она отображается в моей папке ссылок (я использую Visual Studio 2010). Ошибка все еще возникает. - person jaredk; 31.08.2012
comment
Означает ли галочка, что мой комментарий помог вам найти проблему? (Во всяком случае, мне нравится знать, что люди все еще не зацикливаются на чем-то, также добавление немного большего к ответу может помочь следующему человеку). - person Jon Hanna; 31.08.2012
comment
Это устранило ошибку, которую я получал со строкой using System.Data.OracleClient. - person jaredk; 31.08.2012
comment
Я прочитал ответ, но это не решило мою проблему. Я использую system.data.OracleClient для доступа к Oracle db. Теперь oracleclient в system.data показывает предупреждение. - person Sribin; 23.11.2017
comment
@ Срибин тогда может вопрос задать? - person Jon Hanna; 23.11.2017
comment
Произошла еще одна ошибка, которая не была связана с оракулом, который, в свою очередь, показывает всю ошибку oracleclient. Как только я разрешил другую ошибку, ошибка оракула подавилась сама собой. Думаю, пришло время использовать некоторые другие пакеты доступа к данным, которые я получать предупреждение, так как оно устарело, но я мало что знаю о других - я новичок в oracle. - person Sribin; 23.11.2017

Для меня сработало следующее:

Visual Studio -> ВЕБ-САЙТ -> Добавить ссылку ... -> Framework -> System.Data.OracleClient [отметьте этот параметр]

person caot    schedule 09.11.2017

Мне пришлось добавить ссылку на Oracle.DataAccess.dll, а затем мне пришлось вручную связать все ссылки на OracleClient.blahblah с Oracle.DataAccess.Client.blahblah.

Надеюсь, это поможет кому-то другому.

person Jamie    schedule 18.10.2012

Добавьте ссылку в свой файл веб-конфигурации, как показано ниже. У меня это работает.


<!--REFERENCES-->
<compilation debug="true" targetFramework="4.5">
  <assemblies>
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </assemblies>
</compilation>
person Swapneel Macwan    schedule 03.12.2016

Добавляешь ссылку на System.Data.OracleClient.dll.

person Aghilas Yakoub    schedule 31.08.2012