Interop类型不能嵌入
我正在C#中的.NET 4.0框架(beta2)上创建一个Web应用程序。
当我尝试使用名为“ActiveHomeScriptLib”的程序集时,出现以下错误:
互操作类型'ActiveHomeScriptLib.ActiveHomeClass'不能嵌入。 改为使用适用的界面。
当我将框架更改为3.5版时,我没有任何错误。
什么是Interop类型?为什么只有在使用4.0框架时才会发生?
.NET 4.0允许将主要的互操作程序集(或者说需要的部分)嵌入到程序集中,这样就不需要将它们部署到应用程序中。
无论出于何种原因,这个程序集都不能嵌入 - 但听起来这对你来说不是问题。 只需打开Visual Studio 2010中程序集的“属性”选项卡,并将“嵌入Interop类型”设置为“False”。
编辑:另请参见迈克尔古斯塔斯的答案,从您正在使用的类型中删除Class
后缀。
在大多数情况下,此错误是尝试实例化COM对象的代码的结果。 例如,以下是启动Excel的一段代码:
Excel.ApplicationClass xlapp = new Excel.ApplicationClass();
通常,在.NET 4中,您只需删除'Class'后缀并编译代码:
Excel.Application xlapp = new Excel.Application();
MSDN的解释在这里。
像Jan一样,我花了一段时间才得到它。= S因此对于那些对挫折感到失望的人来说。