自动生成的dataset.designer.cs中OleDB命名空间报错求助
自动生成的dataset.designer.cs中OleDB命名空间类型找不到的问题
在使用Visual Studio读写accdb文件时,创建数据集文件并将accdb数据连接中的表拖到数据集视图后,后台代码可正常查看所有记录和字段,但嵌套在DataSetx.xsd文件下的dataset.designer.cs生成类部分出现250条相同类型的错误,所有OleDb相关类型(如OleDbDataAdapter、OleDbConnection、OleDbTransaction等)均被提示找不到。
生成代码示例
[global::System.ComponentModel.DesignerCategoryAttribute("code")] [global::System.ComponentModel.ToolboxItem(true)] [global::System.ComponentModel.DataObjectAttribute(true)] [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] public partial class MyTableAdapter : global::System.ComponentModel.Component { System.Data.OleDb.OleDbDataAdapter _adapter; private global::System.Data.OleDb.OleDbConnection _connection; private global::System.Data.OleDb.OleDbTransaction _transaction; private global::System.Data.OleDb.OleDbCommand[] _commandCollection; }
错误信息示例
每个OleDb相关类型都会触发如下类似错误:
Severity Code Description Project File Line Suppression State
Error CS1069 The type name 'OleDbDataAdapter' could not be found in the namespace 'System.Data.OleDb'. This type has been forwarded to assembly 'System.Data.OleDb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' Consider adding a reference to that assembly.
错误原因
- 在.NET Core/.NET 5及以上版本中,
System.Data.OleDb不再包含在默认的框架引用内,而是作为独立的NuGet包发布。自动生成的代码仍沿用.NET Framework下的引用逻辑,导致找不到对应类型。 - Visual Studio的数据集设计器可能未正确识别当前项目的目标框架版本,生成了不符合当前框架的代码引用。
解决方法
- 安装对应的NuGet包:右键项目 → 管理NuGet程序包,搜索并安装
System.Data.OleDb包。 - 重新生成数据集代码:右键DataSetx.xsd文件 → 选择「运行自定义工具」,让设计器重新生成适配当前框架的代码;或者直接删除dataset.designer.cs文件后重新生成项目。
- 检查项目目标框架:确认项目目标框架为支持的版本(如.NET Core 3.1+、.NET 5+),避免使用过于老旧的框架版本导致兼容性问题。
内容的提问来源于stack exchange,提问作者isplayDayameNay
相关产品推荐
相关产品推荐

