2011-11-16 8 views
48

otrzymuję następujące ostrzeżenie:Co oznacza "odniesienie zostało utworzone dla zespołu osadzonych współdziałania"?

Odniesienie został stworzony do wbudowanego zestawu międzyoperacyjnego c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Accessibility.dll powodu pośredniego odniesienia do tego zespołu stworzonego przez zespół c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll. Rozważ zmianę własności „Osadzanie” na współdziałanie typów albo assembly.`

Mój zespół zawiera odniesienie do obu Accessibility.dll i System.Windows.Forms.dll. Dlaczego otrzymuję to ostrzeżenie?

Przy okazji Accessibility.dll ma "Embed Interop Types = true", podczas gdy System.Windows.Forms.dll ma ustawioną wartość false.

Odpowiedz

55

Per MSDN:..

„Dodałeś odwołanie do montażu (assembly1), które ma rodzaje nieruchomości HTML Interop ustawioną na True To instruuje kompilator, aby umieścić informacje typu współdziałanie z tego zespołu, jednak kompilator nie może wstawić informacji typu interop z tego zestawu, ponieważ inny zestaw, do którego się odwołaliśmy (assembly2), również odwołuje się do tego zestawu (assembly1) i ma właściwość Embed Interop Types ustawioną na False. "

Aby rozwiązać to ostrzeżenie

Aby umieścić informacje typu współdziałanie zarówno dla zespołów, ustaw rodzaje nieruchomości HTML Interop na wszelkich odniesień do assembly1 True.

Oznacza to trzeba zmienić 'Rodzaje HTML Interop = true' na System.Windows.Forms.dll

lub

Aby usunąć to ostrzeżenie, można ustawić HTML Interop rodzaje nieruchomości w assembly1 to False. W takim przypadku informacje o typie współzależności są dostarczane przez podstawowy zespół współdziałania (PIA).

+2

Pomimo tego, co mówi MSDN, nie sądzę, że powinieneś zmieniać 'Wstawianie typów interopii' w bibliotekach DLL dołączonych do systemu Windows. Ten artykuł MSDN jest skierowany na zespoły, które są pod twoją kontrolą. –

+13

Zgadzam się, ale gdy dodano odniesienie do "Accessibility.dll", "Osadzanie typów interopii" zostało ustawione na ** true **. Kiedy zmieniłem go z powrotem na ** false **, ostrzeżenie zniknęło. –

Powiązane problemy