Статическая ссылка COM DLL в C # (избегайте regfree) - PullRequest
1 голос
/ 24 февраля 2011

У меня, наверное, глупый вопрос:

У нас есть COM DLL VC ++ (разработанная для внутреннего использования), и мы перенесли наше основное приложение на C # и использовали COM Interop, reg-free для доступа к COM dll. Все отлично работает с внутренним встроенным манифестом.

Тем не менее, дружественный продукт-dev / marketing / sales хочет минимизировать пакет и напрямую включать COM-dll. Каким-то образом кто-то убедился, что в дистрибутив приложения должен входить только exe-файл (поскольку он неуправляемый, мы не можем просто включить ILMerge).

Поскольку у нас есть tlb / lib COM, можем ли мы каким-то образом статически связать его, не перенося весь COM на управляемую C # переработку?

Спасибо

P.S. Прошу прощения за мою формулировку: компания была сокращена, и я парень из Python, которому пришлось изучать все .NET за последнюю неделю или около того, так как теперь я делаю свою работу и работу двух бывших старших разработчиков .net

Ответы [ 2 ]

1 голос
/ 04 мая 2018

Похоже, Костура может более или менее сделать это. https://github.com/Fody/Costura

В частности, имеется поддержка объединения неуправляемых сборок (например, DLL C ++) в сборку .NET.

Примечание. Это не является истинной статической связью, но позволит достичь цели упаковки всего в один EXE-файл, подлежащий распространению.

0 голосов
/ 24 февраля 2011

Можно включить источник для COM DLL в проект для exe, или вы можете изменить проект COM DLL в статический проект lib. После этого вы должны изменить код для непосредственного создания COM-объектов. Все сказано, ни один из вариантов не особенно прост.

В качестве альтернативы вы можете посмотреть такие продукты, как Spoon Studio , которые позволят вам упаковать ваш exe и COM DLL в один exe без кода.

...