当尝试运行我的代码时,我收到以下错误:
CS0234:命名空间"System.Data"中不存在类型或命名空间名称"OracleClient"(是否缺少程序集引用?)
我已经包含了对System.Data.dll
和System.Data.OracleClient.dll
的引用,但我仍然会收到这个错误。
该错误是由我的命名空间声明中的using System.Data.OracleClient
行引起的。
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%的情况下仍然可以)。
除非你正在编写一个绝对庞大的库,其中有数千个类覆盖了重叠的用例,否则你自己的程序集应该在每个DLL中使用一个名称空间,或者最多使用一个带有其他名称空间的名称空间,比如JaredksGreatCode
中有JaredksGreatCode.UserInterface
。
以下对我有效:
Visual Studio-->网站-->添加引用…-->框架-->System.Data.OracleClient[选中此选项]
我必须添加对Oracle.DataAccess.dll
的引用,然后我必须手动将所有对OracleClient.blahblah
的引用与Oracle.DataAccess.Client.blahblah
。
希望这能帮助其他人。
在您的web配置文件中添加一个引用,如下所示。这对我有用。
<!--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>
您在System.Data.OracleClient.dll
上添加引用。