我收到以下警告:
为嵌入式互操作程序集创建了一个引用
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。
答案 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)提供。