4

При попытке запустить свой код, я получаю следующее сообщение об ошибке:тип или пространство имен имя «OracleClient» не существует в пространстве имен «System.Data»

CS0234: The type or namespace name 'OracleClient' does not exist in the namespace 'System.Data' (are you missing an assembly reference?)

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

Эта ошибка вызвана линией using System.Data.OracleClient в моей декларации пространства имен.

+0

Хорошо. Теперь мой ответ не соответствует тому, что вы редактировали, и просто рассказывал вам то, что вы уже знаете.Сначала я рассмотрю свойства ссылок и удостоверяюсь, что они указали на правильный файл и на соответствующую версию .NET, если в системе более одного времени выполнения. –

ответ

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.

+0

Я уже добавил ссылку на System.Data.OracleClient.dll, и он отображается в моей папке с репликами (я использую Visual Studio 2010). Ошибка все еще происходит. – jaredk

+0

Означает ли этот знак, что мой комментарий помог вам найти проблему? (Если ничего другого, мне нравится знать, что люди еще не застряли на чем-то, а добавление немного больше ответа может помочь следующему человеку). –

+0

Это разрешило ошибку, которую я получал с помощью 'using System.Data.OracleClient'. – jaredk

-2

Вы добавляете ссылку на System.Data.OracleClient.dll.

0

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

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

0

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


<!--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> 
0

Следующие работал для меня:

Visual Studio -> ИНТЕРНЕТ -> Добавить ссылку ... -> Рамки ->System.Data.OracleClient [проверка этот вариант]