Я разрабатываю небольшую программу (dll) в Visual Studio 2010/.NET 4, которая интегрируется с внешним приложением (мы будем называть его ExApp) через COM-взаимодействие. Я сам создаю сборку interop, используя TlbImp.exe
, так как ни один из них не предоставляется внешним приложением. ExApp поставляется в трех популярных версиях, каждый из которых имеет фактически идентичный API, но каждый из них имеет другую (и несовместимую) сгенерированную межпланетную DLL. На данный момент, это означает, что у меня есть три отдельных инсталляторов:Может ли установщик Windows развернуть сборку на основе версии внешнего приложения?
- Установщик ж/
my.dll
встроенных/связанных сInterop.ExApp.dll
v1 - Installer ж/
my.dll
постройки/слинкованыInterop.ExApp.dll
v2 - Installer ж/
my.dll
постройки/связанное сInterop.ExApp.dll
v3
Должно быть лучшее решение, чем это.
Как настроить установщик Visual Studio/Windows, так что мне нужен только один install .exe? Это означает, что установщик обнаружит версию ExApp и установит соответствующие версии my.dll
и Interop.ExApp.dll
.
И вопрос с бонусом: поскольку API ExApp не имеет значимого изменения, как я могу скомпилировать одну версию my.dll
для работы с любой установленной версией ExApp?
Позднее связывание с ключевым словом C# * dynamic * или vb.net является опцией в COM. В противном случае установщик должен вытолкнуть реестр, чтобы найти ключ CLSID. Это обычай. –