“DataSetExtensions”类型或命名空间在“System.Data”命名空间中不存在(是否缺少程序集引用?)

7
我知道这是一个常见的错误,但我已经正确地将对System.Data.DataSetExtensions.dll的引用添加到了项目中,我的项目是为.net 4.5构建的SQL CLR项目,并且我在以下行出现错误:
using System.Data.DataSetExtensions;

我也检查了该dll的属性,它引用了4.5 dll的正确版本,那么还有什么可能会导致这个问题呢?这是SQL CLR项目的问题吗?

问题在于没有名为System.Data.DataSetExtensions的命名空间,DataSetExtensions位于System.Data命名空间中,在System.Data.DataSetExtensions.dll程序集中。 - Preston Guillot
将以下代码添加到文件顶部的 using 中: using System.Data; - MethodMan
好的,现在我感到有点傻。请回答这个问题,我会将其标记为正确的答案。 - DarthVegan
1个回答

14

System.Data.DataSetExtensions 是一个程序集,不是一个命名空间。你只需要添加对 System.Data.DataSetExtensions.dll 的引用(正如你说你已经拥有),然后使用 System.Data 命名空间的 using 指令即可:

using System.Data;

这将导入该命名空间中所有类中的扩展方法,例如DataRowExtensions

在查看文档时,始终要注意命名空间和程序集名称之间的区别 - 它们通常相同,但它们在逻辑上是独立的。


1
有时可以将 System.Data.DataSetExtensions 用作命名空间。请参见 https://dotnetfiddle.net/OOvlLj - 您知道为什么会起作用吗? - Shaun Luttin
1
@ShaunLuttin:奇怪。我怀疑有一个叫做那个的命名空间,但我找不到任何相关文档。 - Jon Skeet
1
这个扩展 DLL 还有其他需要注意的地方吗?我遵循了这些说明,但仍然无法访问 IEnumerable<T> 对象上的 ToDataTable<T>() 方法。 - RLH
1
该命名空间存在于程序集中,但仅包含两个内部类,因此未记录并且可以忽略。 - python_kaa
@RLH:ToDataTable不是来自于DataSetExtensions dll的方法。它可能是你在互联网上找到的一个方法(例如这里),但它绝对不是.NET框架的一部分。 - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接