Почему я не могу зарегистрировать приложение WinForms для COM-взаимодействия? - PullRequest
0 голосов
/ 26 октября 2018

Я использую Visual Studio 2015. Я успешно создал библиотеку классов и выбрал:

Register form COM Interop
Make Assembly COM-visible

Затем мне удалось развернуть его с помощью проекта установки для других пользователей, и он отлично работает (хотя до сих пор не понимаю, почему Intellisense не работает для него)

Сейчас я пытаюсь сделать то же самое для приложения WinForms, но

Register form COM Interop

не подходит для примененияоно серое - должно быть?И если да, то почему я не могу зарегистрировать приложение для COM Interop, чтобы я мог манипулировать им в других приложениях?(например, в Excel VBA)

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Чтобы зарегистрировать сборку .NET для COM Interop, сборка должна представлять собой библиотеку классов , которая предназначена для совместного использования приложениями.

Приложение WinForms, с другой стороны, запускается как отдельная программа, не предназначенная для совместного использования другими приложениями.

В этом случае вы можете создать проект библиотеки классов и создать WinProms UserControl в проекте и предоставить UserControl другим приложениям, сделав его видимым для COM.

Вот старый пример , как ни странно, в моем поиске трудно найти более свежие примеры.

0 голосов
/ 26 октября 2018

Проблема в том, что регистрация com обычно имеет смысл только для сборок (.dll), а ваше приложение WinForm обычно является исполняемым (.exe).

Так что в этом случае вы должны создать dll и переместить всефункции и классы, которые должны быть видны в этой сборке.Чем сделать его видимым, и использовать его также из приложения exForutbale WinForms.

...