本文主要是介绍VS2010中出现无法嵌入互操作类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
针对word操作时,出现VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
问了度娘,解决方法如出一辙:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。问题轻松解决后,应该有很多人纠结这个“嵌入互操作类型”到底是个什么意思呢?下面让我慢慢的道来。(如果你时间不多,直接看红色字体部分)
嵌入 COM互操作类型
当 COM互操作在最初版本的 .NET Framework 中引入时,就确立了主互操作程序集 (PIA)的概念。引入此概念,是为了解决在组件之间共享 COM 对象的难题。forinstance:如果您有一些不同的互操作程序集,分别定义了一个 Excel Worksheet,则我们无法在组件之间共享这些Worksheet,因为它们具有不同的 .NET 类型。PIA 通过只存在一次而解决了这个难题:所有客户端都使用它,因此 .NET类型始终是匹配的。
对于两个结构相同且共享相同识别特征(名称、GUID等)的 COM 互操作类型,运行时能够聪明地将其看作同一个 .NET 类型。C#编译器利用这一点的方式是在编译时直接在您自己的程序集中重现互操作类型,因此不再要求在运行时存在该互操作程序集。
由于篇幅所限,我不得不省略一些详细信息,但即使不了解这些信息,您也应该能够毫无障碍的使用这个功能,就像动态功能一样。您通过将引用上的“嵌入式互操作类型”属性设置为true,告诉编译器为您将互操作类型嵌入到 Visual Studio 中。
由于 C#团队希望这种方法成为引用 COM 程序集的首选方法,因此在默认情况下,Visual Studio 会将添加到 C#项目中的任何新互操作引用的此属性设置为 True。如果您使用命令行编译器 (csc.exe) 来编译您的代码,请使用 /L开关,而不是 /R 开关,来嵌入您必须引用的互操作程序集中的互操作类型。
1.”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。
2.“互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。
3.“嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。
而设定为false的话,实际就是需要从互操作程序集中获取COM 类型的类型信息。
不知道大家明白了没有,我是有点明白了。。。
这篇关于VS2010中出现无法嵌入互操作类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!