记录此问题实际上是由于.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都不行。真不知这些组件都是什么关系。