互操做类型没法嵌入

我正在用C#在.NET 4.0框架(beta2)上建立一个Web应用程序。 git

当我尝试使用名为“ ActiveHomeScriptLib”的程序集时,出现如下错误: 浏览器

没法嵌入互操做类型“ ActiveHomeScriptLib.ActiveHomeClass”。 请改用适用的界面。 app

当我将框架更改成版本3.5时,我没有任何错误。 框架

什么是互操做类型?为何仅在使用4.0框架时才会发生这种状况? spa


#1楼

http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307 code

发生此错误的缘由是,新项目中引用的TestStand API Interop程序集的Embed Interop Types属性的默认值为true。 若要解决此错误,请按照下列步骤操做,将Embed Interop Types属性的值更改成False:在解决方案资源管理器中,在项目的引用部分中选择TestStand Interop程序集引用。 在属性浏览器中找到“嵌入互操做类型”属性,并将其值更改成False。 对象


#2楼

.NET 4.0容许将主互操做程序集(或更确切地说,您须要的互操做程序集)嵌入到程序集中,所以您无需将它们与应用程序一块儿部署。 blog

不管出于何种缘由,都没法嵌入该程序集-可是听起来这对您来讲不是问题。 只需在Visual Studio 2010中打开程序集的“属性”选项卡,而后将“嵌入互操做类型”设置为“ False”。 ip

编辑:另请参阅Michael Gustus的答案 ,从您使用的类型中删除Class后缀。 资源


#3楼

扩展乔恩的正确答案。

这里的问题是您正在将新的“嵌入互操做类型”(或NoPIA)功能与类类型结合使用。 “嵌入互操做类型”功能经过将全部类型从PIA(主互操做程序集)静态连接到引用程序集而工做,从而消除了部署它的开销。

此功能对PIA中的大多数类型都适用,但确实有一些限制。 其中之一是您不能嵌入类(这是一个服务问题)。 Misha有一篇详细的博客文章,介绍了为何不容许这样作


#4楼

我在Office 2007的VB.NET 2013中遇到了相同的问题,此问题得以解决:

VS 2013 VB.NET项目>道具>参考> Microsoft Word 12.0对象库>嵌入互操做类型:将True更改成False


#5楼

像Jan同样,我花了一段时间才获得它。.= S因此对于那些对挫折视而不见的人来讲。

  • 右键单击在“项目引用”下的解决方案资源管理器中添加的有问题的程序集。 (以我为例)
  • 单击属性。
  • 并且应该有嵌入式Interop组件的选项
  • 将其设置为False
相关文章
相关标签/搜索