What does "reference was created to embedded interop assembly" mean?

.Net.Net 4.0

.Net Problem Overview


I am getting the following warning:

> A reference was created to embedded interop assembly > c:\Program Files (x86)\Reference > Assemblies\Microsoft\Framework\.NETFramework\v4.0\Accessibility.dll > because of an indirect reference to that assembly created by assembly > c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll. > Consider changing the 'Embed Interop Types' property on either assembly.`

My assembly contains a reference to both Accessibility.dll and System.Windows.Forms.dll. Why am I getting this warning?

Btw, the Accessibility.dll has 'Embed Interop Types=true' while System.Windows.Forms.dll has it set to false.

.Net Solutions


Solution 1 - .Net

Per the MSDN:

"You have added a reference to an assembly (assembly1) that has the Embed Interop Types property set to True. This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced (assembly2) also references that assembly (assembly1) and has the Embed Interop Types property set to False."

To address this warning

To embed interop type information for both assemblies, set the Embed Interop Types property on all references to assembly1 to True.

This means you must change 'Embed Interop Types=true' on System.Windows.Forms.dll

or

To remove the warning, you can set the Embed Interop Types property of assembly1 to False. In this case, interop type information is provided by a primary interop assembly (PIA).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAngryHackerView Question on Stackoverflow
Solution 1 - .NetKreepNView Answer on Stackoverflow