我有一个从 .NET Framework 4.8.1 升级的 .NET 8.0 项目。在我的项目中,我一直使用 Ole Db 数据提供程序作为访问数据库。但是,当我添加对 System.Data.OleDb 的引用时,在尝试从访问数据库文件填充数据适配器时出现运行时错误。错误是“此平台不支持 System.Data.OleDb。”。不过,根据 nuget 和 .NET API 文档,它说 .NET 8.0 支持它,那么我错过了什么?
System.Data.OleDb 依赖项:
我安装了 Microsoft Access Database Engine 2010,并且尝试使用 Microsoft.Windows.Compatibility 包,这也会导致相同的运行时错误。我知道 System.Data.OleDb 不是跨平台的,但是即使我的目标框架设置为 .NET 8.0,我仍然只希望我的应用程序能够在 Windows 上运行。
我解决了我的问题...
即使我的目标框架是net8.0-windows,在构建时放置在VS中“OutDir”中的System.Data.OleDb.dll最终也没有位于正确的运行时上。从“OutDir”复制 System.Data.OleDb.dll untimes\win\lib et8.0\System.Data.OleDb.dll 到我的执行目录解决了我的问题中提到的错误。现在我可以继续在 .NET 8.0 中使用我的 access 数据库。
希望这可以帮助下一个遇到此问题的人。