首页 新闻 会员 周边

无法嵌入互操作类型 原因

0
[待解决问题]

错误“无法嵌入互操作类型”-----原因

人生为卒的主页 人生为卒 | 初学一级 | 园豆:54
提问于:2015-10-13 15:32
< >
分享
所有回答(1)
0

选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。

夏一跳 | 园豆:10 (初学一级) | 2015-10-13 18:23

知道原因吗

支持(0) 反对(0) 人生为卒 | 园豆:54 (初学一级) | 2015-10-14 08:40

@人生为卒: 

1.”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。

2.“互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。

3.“嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。

而设定为false的话,实际就是需要从互操作程序集中获取 COM 类型的类型信息。

 

这些是百度到的

支持(0) 反对(0) 夏一跳 | 园豆:10 (初学一级) | 2015-10-14 10:05

@夏一跳: 其实这个我也找到的。但是我试了一下,感觉不太对。我猜测是因为某两个引用冲突了。方法或者字段名有重复。比如说 Interop.Excel.dll和Microsoft.Office.Interop.Excel.dll都引用的情况下,Microsoft.Office.Interop.Excel.ApplicationClass xlapp = new Microsoft.Office.Interop.Excel.ApplicationClass();就会报这个错。你把“嵌入互操作类型”设置为False之后,很多类型会报错,需要些详细的引用名eg:DataTable必须改为System.Data.DataTable,因为存在Microsoft.Office.Interop.Excel.DataTable和System.Data.DataTable。系统弄不清你调用的哪个DataTable

支持(0) 反对(0) 人生为卒 | 园豆:54 (初学一级) | 2015-10-14 10:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册