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