2011-11-16 44 views
48

我收到以下警告:“嵌入式互操作程序集创建参考”是什么意思?

的引用是为了嵌入的互操作装配 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创建的组件。 考虑在任assembly.`

我的组件包括既Accessibility.dll和System.Windows.Forms.dll的参考改变“嵌入互操作类型”属性。为什么我得到这个警告?

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

回答

55

%的MSDN:。

“您已经添加了具有嵌入互操作类型属性设置为True一个参考的组件(assembly1)这指示编译器嵌入从组件的互操作类型的信息。然而,编译器不能从该程序集中嵌入interop类型信息,因为您引用的另一个程序集(assembly2)也引用该程序集(assembly1),并将Embed Interop Types属性设置为False。“

为了解决这一警告

要嵌入的两个组件进行互操作类型的信息,设置所有引用的嵌入互操作类型属性assembly1为True。

这意味着你必须在System.Windows.Forms.dll中

改变“嵌入互操作类型=真正的”要删除的警告,你可以设置的嵌入互操作类型属性assembly1为False。在这种情况下,互操作类型信息由主互操作程序集(PIA)提供。

+2

尽管MSDN说什么,我不认为你应该改变与Windows捆绑DLL的'Embed Interop Types'。 MSDN文章面向您自己控制的程序集。 –

+13

我同意,但是当添加对'Accessibility.dll'的引用时,'嵌入互操作类型'被设置为** true **。当我将它改回** false **时,警告消失。 –