【问题标题】:What does "reference was created to embedded interop assembly" mean?“为嵌入式互操作程序集创建了引用”是什么意思?
【发布时间】:2016-02-24 17:24:53
【问题描述】:

我收到以下警告:

创建了对嵌入式互操作程序集的引用 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 具有“嵌入互操作类型=true”,而 System.Windows.Forms.dll 将其设置为 false。

【问题讨论】:

    标签: .net .net-4.0


    【解决方案1】:

    根据 MSDN:

    “您添加了对嵌入互操作类型属性设置为 True 的程序集 (assembly1) 的引用。这指示编译器从该程序集中嵌入互操作类型信息。但是,编译器无法从该程序集中嵌入互操作类型信息程序集,因为您引用的另一个程序集 (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) 提供。

    【讨论】:

    • 尽管 MSDN 说了什么,我认为您不应该更改与 Windows 捆绑的 DLL 上的 Embed Interop Types。该 MSDN 文章适用于您自己控制的程序集。
    • 我同意,但是当添加对 Accessibility.dll 的引用时,“嵌入互操作类型”设置为 true。当我将它改回 false 时,警告就消失了。
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多