msadox28.tlb 在注册时不是有效的 .Net 程序集文件

Posted

技术标签:

【中文标题】msadox28.tlb 在注册时不是有效的 .Net 程序集文件【英文标题】:msadox28.tlb is not a valid .Net assembly file while registering it 【发布时间】:2021-11-08 14:35:42 【问题描述】:

我正在使用 vb.net (2015) 和 MS Access 数据库开发应用程序。我可以在现有数据库中正常工作。我现在有需要以编程方式创建数据库以进行计费的情况。这是每个文件夹将包含用于公司/公司选择的数据库的情况。

在互联网/*** 上搜索后,我了解了 ADOX。甚至得到了它的现成代码。我在我的编码中应用了它。

    添加对 Microsoft ADO 扩展 2.8 和 6.0 的引用 创建变量 Adx 作为新的 Adox.catalog 然后最后写了 Adx.create(olejet provider conn string with data source)

在这一步我得到一个错误

COM 类未注册

所以我尝试用regsvr32regasm 注册msadox.dllmsadox28.tlb 但当时我又遇到了另一个错误:

msadox.dll 注册成功,但 msadox28.tlb 出现错误 无法加载 -file- 因为它不是有效的 .net 程序集文件

现在我被困在这一点上。

我的系统是 Windows 10 64 位。我试图以 cpu x86 和任何 cpu 为目标,但它不起作用。我在这里有很多问题和答案,但不明白。

编辑:

我尝试了以下连接字符串并且它有效,但它创建了旧的 2000-2003 mdb 文件。我想使用新的访问文件 .accdb

字符串是:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VBProj\Testing\test.mdb;Jet OLEDB:Engine Type=5

编辑:2021 年 9 月 20 日 - 星期一

首先非常感谢@Jimi,您对使用 ACE.16 和清洁液的建议奏效了。非常感谢

我使用以下步骤在 VB.NET 中使用 ADOX 创建 MS Access 数据库:

    项目菜单 > 添加引用 > COM 部分 > 选择 Microsoft ADO Ext. 6.0 用于 DLL 和安全性

    在程序入口点写入连接字符串(form load/sub main)-> Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:\VBProj\Testing\test.accdb,赋值给变量connString

    Public gAdxCat As New ADOX.Catalog一样全局声明adox目录

    使用它的方法gAdxCat.create(connString)

    这就是全部 - 完成

再次感谢@jimi

【问题讨论】:

您是否在项目中向Microsoft ADO Ext. 6.0 for DDL and Security 添加了引用?这将在\[Project]\Obj\Debug 中创建互操作程序集。 -- Embed Interop Types 通常默认设置为true 是的参考已添加 是的@jmcilhinney,当我发布这个问题时,我也很惊讶。我只是想加粗一行消息,但整个消息都变粗了。但现在我可以在我的系统中以普通/常规字体看到它。 删除对版本2.8的引用。顺便说一句,您不需要旧的 Jet Engine,也可以使用新的 Providers,例如 ACE.12ACE.16,使用 ADOX 构建数据库。使用 Jet,您的应用程序需要以 x86 为目标。 谢谢@Jimi - 您对使用 ACE.16 的建议奏效了,非常感谢您的宝贵帮助。 【参考方案1】:

这是我的问题的答案(@jimi 帮助)

以下是在 VB.NET 中使用 ADOX 创建 msaccess 数据库的步骤,并在原始问题中提及错误。

1-项目菜单 > 添加参考 > COM 部分 > 选择 Microsoft ADO Ext. 6.0 用于 DLL 和安全性(删除 2.8 的参考)

2-在程序入口点写入连接字符串(表单加载/子主)->“Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:\VBProj\Testing\test.accdb”将其分配给变量连接字符串

3-在全局范围内声明 adox 目录,例如 Public gAdxCat As New ADOX.Catalog

4-用户其方法gAdxCat.create(connString)

5-到此为止

再次感谢@jimi

【讨论】:

以上是关于msadox28.tlb 在注册时不是有效的 .Net 程序集文件的主要内容,如果未能解决你的问题,请参考以下文章

注册令牌不是有效的 FCM 注册令牌

电算化软件SQL Server的超级用户口令修改过,用友网络财务软件不能连接到SQL Server,请输入其超级用户(s

如何保留两位有效数字?

应用程序是不是应该每 7 天调用一次 gcm.register() 以确保注册 ID 有效?

PWA:为啥导航到 URI 仅在 URI 在 PWA 的清单中注册时才有效

如何检查字符串是不是是android中的有效电子邮件? [复制]