为嵌入式互操作程序集创建了什么"引用?意思?

时间:2011-11-16 18:06:41

标签: .net .net-4.0

我收到以下警告:

  

为嵌入式互操作程序集创建了一个引用   c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Accessibility.dll   因为间接引用由程序集创建的程序集   c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll。   考虑更改任何一个程序集上的“嵌入互操作类型”属性。

我的程序集包含对Accessibility.dll和System.Windows.Forms.dll的引用。为什么我会收到此警告?

顺便说一句,Accessibility.dll有'嵌入Interop Types = true'而System.Windows.Forms.dll设置为false。

1 个答案:

答案 0 :(得分:58)

根据MSDN:

“您已经添加了对Embed Interop Types属性设置为True的程序集(assembly1)的引用。这指示编译器嵌入来自该程序集的interop类型信息。但是,编译器无法嵌入来自该程序集的interop类型信息程序集,因为您引用的另一个程序集(assembly2)也引用该程序集(assembly1)并将Embed Interop Types属性设置为False。“

解决此警告

要嵌入两个程序集的互操作类型信息,请将对assembly1的所有引用上的Embed Interop Types属性设置为True。

这意味着您必须在System.Windows.Forms.dll上更改“嵌入互操作类型= true”

要删除警告,可以将assembly1的Embed Interop Types属性设置为False。在这种情况下,互操作类型信息由主互操作程序集(PIA)提供。