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

Ang*_*ker 52 .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.

Kre*_*epN 60

根据MSDN:

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

解决此警告

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

这意味着您必须在System.Windows.Forms.dll上更改"Embed Interop Types = true"

要么

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

  • 我同意,但是当添加对`Accessibility.dll`的引用时,'Embed interop types'被设置为**true**.当我把它改回**假**时,警告就消失了. (13认同)
  • 尽管MSDN说的是,我认为你不应该在与Windows捆绑的DLL上更改`Embed Interop Types`.该MSDN文章适用于您自己控制的程序集. (2认同)