错误“无法嵌入互操作类型”-----原因
选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。
知道原因吗
@人生为卒:
1.”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。
2.“互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。
3.“嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。
而设定为false的话,实际就是需要从互操作程序集中获取 COM 类型的类型信息。
这些是百度到的
@夏一跳: 其实这个我也找到的。但是我试了一下,感觉不太对。我猜测是因为某两个引用冲突了。方法或者字段名有重复。比如说 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