未找到System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) 方法错误

记录此问题实际上是由于.netFrame框架配置太高引起的,一般常见于二次开发中,因为二次开发一般都是引用的com组件,在引用过程中后台代码调用了
Method not found: System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)
这个方法,这个方法只有在.netFrame4.5以上的版本才有
所以降低一下目标框架的配置,降低到.netframe4.0才行。
这里写图片描述

Marshal.GetTypeFromCLSID Method 







Returns the type associated with the specified class identifier (CLSID). 


Namespace:  System.Runtime.InteropServices
Assemblies:   System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)
  mscorlib (in mscorlib.dll)





Syntax


--------------------------------------------------------------------------------





C#

C++

F#

JScript

VB




Copy


public static Type GetTypeFromCLSID(
    Guid clsid
)



Parameters
clsidType: System.Guid

The CLSID of the type to return. 


Return Value
Type: System.Type
System.__ComObject regardless of whether the CLSID is valid. 





Version Information


--------------------------------------------------------------------------------



.NET Framework
Supported in: 4.6, 4.5

Supported in: Windows Phone 8.1

http://bbs.csdn.net/topics/390712037
开发机器:Win7, VS2012, C#
用户机器:Win7

在开发机器上,引用ADOX2.8或6.0,都可以正确执行,创建一个Access文件。

            ADOX.Catalog cat = new ADOX.Catalog();
                 if (cat != null)
                 {
                     cat.Create(_sConnString);
                 }

但当将程序拷贝(不是安装)到用户机器上,执行时会遭遇异常:

Method not found: System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)

使用ADOX2.8或6.0都会异常。

查看了用户机器上的ADOX文件(应该是Win7自带),也没问题,注册表里ADOX.Catalog也存在。
adox.dll重新注册也没用。AccessDatabaseEngine安装包与这个问题没关系,安装了也没用。

是运行环境不一样?用户机器上还需要安装什么东东?难道要装个VS2012?
既然Win7自带了ADOX,但为什么不好用啊?

更多

0
分享到: .

相关主题推荐: 注册表 c#

相关帖子推荐: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大
使用SimpleCursorAdapter时提示我数据库或游标未关闭,我一般都是随用随关的,怎么关闭
请问如何设计论坛帖子数据在数据库中的保存格式
sql语句问题,求大神解答
在整合spring 和hibernate中,出现问题
求助
怎样用Java实现从文本文档中读取数据并存入数据库
这个SQL应该怎么写?
.

准备好了么? 跳吧 !更多职位尽在 CSDN JOB

软件研发/c#.net,C++/程序开发/软件开发

盛景时代广告装饰有限公司
|
4-8K/月

我要跳槽

.net软件工程师 C#

劲牌有限公司
|
4-8K/月

我要跳槽

.net开发

上海市乐问信息技术有限公司
|
8-15K/月

我要跳槽

.NET(C# WPF)开发工程师

上海中畅信息科技有限公司
|
10-20K/月

我要跳槽

..

对我有用[0] 丢个板砖[0] 引用 | 举报 |

管理 回复次数:4

ACMAIN_CHM

ACMAIN_CHM 版主 ACMAIN_CHM 本版等级:T12

Blank

Blank

Blank

更多勋章

1 得分:50 回复于: 2014-02-19 21:44:23

检查一下客户机器上的ADO的版本号。

对我有用[0] 丢个板砖[0] 引用 | 举报 |

管理

bebeing

bebeing 还不够格啊 本版等级:T1

2 得分:0 回复于: 2014-02-20 09:59:41

引用 1 楼 ACMAIN_CHM 的回复:

检查一下客户机器上的ADO的版本号。

刚检查了一下:
开发机:Win7 64位,ADOX 6.1.7601.17857
客户机:Win7 32位,ADOX 6.1.7600.16688

难道是这里的区别?

将开发机上的ADOX.DLL等拷贝到客户机上,注册时提示系统不兼容。

还有什么办法?

对我有用[0] 丢个板砖[0] 引用 | 举报 |

管理

wwwwb

wwwwb 版主 wwwwb 本版等级:T11

Blank

Blank

Blank

3 得分:50 回复于: 2014-02-20 10:12:59

找64位的ADOX,安装试试
OR
将客户机的系统WIN7更换为64位的

对我有用[0] 丢个板砖[0] 引用 | 举报 |

管理

bebeing

bebeing 还不够格啊 本版等级:T1

4 得分:0 回复于: 2014-02-21 09:53:22

很奇怪的啊,安装了NET4.5就好了。Win7也没升级,ADOX也没升级。原来安装的NET4.0都不行。真不知这些组件都是什么关系。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值