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因此对于那些对挫折感到失望的人来说。

  • 右键单击您在项目引用下的解决方案资源管理器中添加的违规组件。 (在我的情况下WIA)
  • 点击属性。
  • 嵌入互操作程序集应该有选项
  • 将其设置为False
  • 链接地址: http://www.djcxy.com/p/3579.html

    上一篇: Interop type cannot be embedded

    下一篇: byte + byte = int... why?