我正在用C#在.NET 4.0框架(beta2)上建立一个Web应用程序。 git
当我尝试使用名为“ ActiveHomeScriptLib”的程序集时,出现如下错误: 浏览器
没法嵌入互操做类型“ ActiveHomeScriptLib.ActiveHomeClass”。 请改用适用的界面。 app
当我将框架更改成版本3.5时,我没有任何错误。 框架
什么是互操做类型?为何仅在使用4.0框架时才会发生这种状况? spa
http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307 code
发生此错误的缘由是,新项目中引用的TestStand API Interop程序集的Embed Interop Types属性的默认值为true。 若要解决此错误,请按照下列步骤操做,将Embed Interop Types属性的值更改成False:在解决方案资源管理器中,在项目的引用部分中选择TestStand Interop程序集引用。 在属性浏览器中找到“嵌入互操做类型”属性,并将其值更改成False。 对象
.NET 4.0容许将主互操做程序集(或更确切地说,您须要的互操做程序集)嵌入到程序集中,所以您无需将它们与应用程序一块儿部署。 blog
不管出于何种缘由,都没法嵌入该程序集-可是听起来这对您来讲不是问题。 只需在Visual Studio 2010中打开程序集的“属性”选项卡,而后将“嵌入互操做类型”设置为“ False”。 ip
编辑:另请参阅Michael Gustus的答案 ,从您使用的类型中删除Class
后缀。 资源
扩展乔恩的正确答案。
这里的问题是您正在将新的“嵌入互操做类型”(或NoPIA)功能与类类型结合使用。 “嵌入互操做类型”功能经过将全部类型从PIA(主互操做程序集)静态连接到引用程序集而工做,从而消除了部署它的开销。
此功能对PIA中的大多数类型都适用,但确实有一些限制。 其中之一是您不能嵌入类(这是一个服务问题)。 Misha有一篇详细的博客文章,介绍了为何不容许这样作
我在Office 2007的VB.NET 2013中遇到了相同的问题,此问题得以解决:
VS 2013 VB.NET项目>道具>参考> Microsoft Word 12.0对象库>嵌入互操做类型:将True更改成False
像Jan同样,我花了一段时间才获得它。.= S因此对于那些对挫折视而不见的人来讲。