2011-11-16 40 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 **時,警告消失。 –

相關問題