“embedded式互操作程序集创build的参考”是什么意思?

我收到以下警告:

由于间接引用由程序集c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll创build的程序集,所以创build了embedded式互操作程序集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 。 考虑更改任一程序集上的“embedded互操作types”属性

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

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

根据MSDN:

“你已经添加了一个Assembly(Assembly1)的引用,它的Embed Interop Types属性被设置为True,它指示编译器从该程序集中embeddedinteroptypes信息,但是编译器不能从该程序集中embeddedinteroptypes信息,您引用(assembly2)的程序集也引用该程序集(assembly1)并将Embed Interop Types属性设置为False。

解决这个警告

要为两个程序集embeddedinteroptypes信息,请将所有对assembly1的引用的Embed Interop Types属性设置为True。

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

要么

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