Что означает "ссылка на встроенную сборку interop"?

Я получаю следующее предупреждение:

Была создана ссылка на встроенную сборку interop 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. Почему я получаю это предупреждение?

Btw, Accessibility.dll имеет "Embed Interop Types = true", в то время как System.Windows.Forms.dll имеет значение false.

Ответ 1

В MSDN:

"Вы добавили ссылку на сборку (assembly1), у которой свойство Embed Interop Types установлено в True. Это дает команду компилятору вставлять информацию типа interop из этой сборки. Однако компилятор не может вставлять информацию типа interop из этого поскольку другая сборка, на которую вы ссылались (сборка2), также ссылается на эту сборку (assembly1) и имеет свойство Embed Interop Types, установленное на False."

Чтобы устранить это предупреждение

Чтобы вставлять информацию типа interop для обеих сборок, установите свойство Embed Interop Types во всех ссылках на assembly1 на True.

Это означает, что вы должны изменить 'Embed Interop Types = true' в System.Windows.Forms.dll

или

Чтобы удалить предупреждение, вы можете установить свойство Embed Interop Types для сборки1 в False. В этом случае информация типа interop предоставляется первичной сборкой (PIA).