2011-11-16 7 views
48

Sto ottenendo il seguente avviso:Che cosa significa "riferimento creato per l'assembly di interoperabilità incorporato"?

Un riferimento è stato creato per assembly di interoperabilità incorporati c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Accessibility.dll a causa di un riferimento indiretto a quella di montaggio creato da assemblaggio c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll. Si consiglia di modificare la proprietà 'Embed Interop Tipi' su entrambi i assembly.`

mio assieme contiene un riferimento sia Accessibility.dll e System.Windows.Forms.dll. Perché ricevo questo avviso?

Btw, Accessibility.dll ha 'Incorpora tipi di intervallo = true' mentre System.Windows.Forms.dll ha impostato su false.

risposta

55

Per MSDN:..

"Hai aggiunto un riferimento a un assembly (Assembly1) che ha la tipi di proprietà Embed Interop impostata a True Questo indica al compilatore di inserire le informazioni sul tipo di interoperabilità da quell'assemblea Tuttavia, il compilatore non può incorporare le informazioni di tipo interop da quell'assembly perché un altro assembly a cui si fa riferimento (assembly2) fa riferimento anche a quell'assembly (assembly1) e ha la proprietà di tipo Interop Interop impostata su False. "

per affrontare questo avvertimento

Per incorporare le informazioni sul tipo di interoperabilità per entrambi i gruppi, impostare la proprietà Tipi Embed Interop su tutti i riferimenti a Assembly1 su True.

Questo significa che è necessario modificare 'Tipi Embed Interop = true' sul System.Windows.Forms.dll

o

Per rimuovere l'avviso, è possibile impostare la tipi di proprietà Embed interoperabilità dei assembly1 a False. In questo caso, le informazioni sul tipo di interoperabilità sono fornite da un assembly di interoperabilità primario (PIA).

+2

Nonostante ciò che MSDN dice, non penso che si suppone che si stia cambiando il 'Tipi di intervallo di incorporamento' nelle DLL in bundle con Windows. Questo articolo MSDN è orientato verso gli assembly che sono sotto il proprio controllo. –

+13

Accetto, ma quando è stato aggiunto il riferimento a 'Accessibility.dll', 'Embed interop types' è stato impostato su ** true **. Quando l'ho cambiato in ** false **, la warining è sparita. –