[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题

你可能读取Excel功能的程序在某些计算机上第一次执行就报错了,但是之前在别的地方是好的。

[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第1张图片
oledb报错
大多数网上文章的建议解决办法

建议去微软官网装AccessDatabaseEngine。

AccessDatabaseEngine2016
https://www.microsoft.com/en-us/download/details.aspx?id=54920

AccessDatabaseEngine2010
https://www.microsoft.com/en-us/download/details.aspx?id=13255

AccessDatabaseEngine2007
https://www.microsoft.com/en-us/download/details.aspx?id=23734

打开这些下载页又迷茫了,该下载X86还是X64的版本?

更坏的情况,无论下载哪个版本,都无法安装,就这样搞笑的报错。

==>装64位的,说你装了32位版不能装
==>装32位的,说你装了64位版不能装

M$很幽默,可我真抓狂。


[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第2张图片
image.png
[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第3张图片
image.png

有大神说了用一个安装版修改器来屏蔽M$的幽默。具体是这样做,测试可行。图是我补的。原文丢图了。

原文地址https://blog.csdn.net/u010032207/article/details/52171972

[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第4张图片
orca

为了避免找不到这个软件的下载或者捆绑。这里直接提供一个网盘地址。
链接: https://pan.baidu.com/s/1xAIqgCmNMT5LdLtjJkgvdw
提取码:860t

针对AccessDatabaseEngine的X64版本

先用WinRar把AccessDatabaseEngine_X64.exe解压缩,里面会有一个AceRedist.msi安装文件,然后用Orca打开。

找到LaunchCondition里面的BLOCKINSTALLATION,删掉,保存。

[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第5张图片
删除条件
[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第6张图片
删除提示

现在运行AceRedist.msi一路默认安装。结束。

谈下原因,当然就对症下药了

安装完了,我估计还是有部分同学问题没有得到解决。问题的关键是开发人员本地如果装的是x86的office,并且工程又用的默认编译参数,你可以继续往下看。

这是因为oledb有x86和x64版本之分。可能你应该考虑提供两套编译版本x86和x64的给不同的用户使用

在编译发布时需要针对目标计算机(也就是部署给谁用?服务器还是某个用户的客户端)的架构决定设置编译参数。


[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第7张图片
编译选项

如果没有X64的话,可以在Build菜单-->Configuration Manager打开的对话框中建立一个x64的选项。

[.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题_第8张图片
增加x64
你只需要确认用户机或者服务器是装了x86还是x64的office(前提肯定要office2007以上),就提供你对应的编译条件的软件,问题解决。

所以,其实也没有必要逼迫用户装AccessDatabaseEngine。不过注意一点,除了office,你的工程是否还有别的组件受编译的platform的影响,可能会最终决定你怎么面对这个问题。

你可能感兴趣的:([.Net]明明白白的解决'未在本地计算机上注册Microsoft.ACE.OLEDB.12.0'问题)