尝试运行我的代码时,我收到以下错误:
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
行引起的。
最佳答案
using System.Data.OracleClient
指令意味着在尝试确定非全名的含义时应考虑该 namespace 。
添加引用意味着您添加对给定程序集的引用,在本例中为 System.Data.OracleClient.dll。在 VisualStudio、SharpDevelop 或 MonoDevelop 中,您将在项目资源管理器 View 中看到一个引用文件夹。右键单击“添加引用”(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。
关于c# - 命名空间 'OracleClient' 中不存在类型或命名空间名称 'System.Data',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218027/