Не удается отключить встроенные предупреждения взаимодействия

Во-первых, у меня есть сторонний элемент управления ActiveX, который мне нужно использовать.

Затем я должен использовать библиотеку stdole, чтобы передать этому стороннему элементу управления некоторые изображения. Когда я компилирую с настройками по умолчанию, я получаю предупреждения:

warning CS1762: A reference was created to embedded interop assembly 'c:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll' because of an indirect reference to that assembly created by assembly 'XXX\obj\x86\Release\Interop.ThirdPartyControl.dll'. Consider changing the 'Embed Interop Types' property on either assembly.
warning CS1762: A reference was created to embedded interop assembly 'c:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll' because of an indirect reference to that assembly created by assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll'. Consider changing the 'Embed Interop Types' property on either assembly.

Достаточно просто, я последую этому совету и установлю для Embed Interop Types значение false для ссылки на stdole. Все выглядит хорошо, пока я сейчас не подхожу к клиентской машине, как вдруг приложение выдает это:

Could not load file or assembly 'stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Итак, я думаю, что этого не произойдет (, хотя я не уверен, ПОЧЕМУ удаление встроенного взаимодействия на stdole приводит к тому, что библиотека вообще становится недоступной ).

Что ж, пойдем другим путем и отметим все с Embed Interop true. Ой! Ошибка компиляции:

Error   2   Cannot embed interop types from assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll' because it is missing either the 'ImportedFromTypeLibAttribute' attribute or the 'PrimaryInteropAssemblyAttribute' attribute XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll XXX
Error   1   Cannot embed interop types from assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll' because it is missing the 'GuidAttribute' attribute  XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll XXX

Итак, какие-нибудь советы о том, как избавиться от предупреждений и создать что-то, что можно собрать и запустить?

ОБНОВЛЕНИЕ

Ханс Пассант опубликовал в качестве комментария ответ, который действительно решает проблему. Если он опубликует это как ответ, я приму это.К сожалению, у меня также есть стандартная проблема, когда DLL, для которой установлено значение «Копировать локально», аккуратно копируется в папку выпуска своего проекта, но затем не перемещается в папку окончательного выпуска для решения (отдельный исполняемый файл ). На данный момент я решил это, добавив ссылку на stdole в свой исполняемый файл. Я полагаю, что это, вероятно, достаточно хорошо.

6
задан user12861 19 June 2012 в 18:15
поделиться