Je développe un petit programme (une DLL) dans Visual Studio 2010/.NET 4 qui s'intègre à une application externe (nous l'appellerons ExApp) via COM interop. Je génère les assemblages interop moi-même en utilisant TlbImp.exe
, car aucun n'est fourni par l'application externe. ExApp est disponible en trois versions populaires, chacune avec une API identique, mais ayant chacune une DLL d'interopérabilité différente (et incompatible). À l'heure actuelle, cela signifie que j'ai trois installateurs distincts:Le programme d'installation Windows peut-il déployer un assembly basé sur la version d'une application externe?
- Installer w/
my.dll
construit/Linked contreInterop.ExApp.dll
v1 - Installer w/
my.dll
construit/lié avecInterop.ExApp.dll
v2 - Installer w/
my.dll
construit/lié àInterop.ExApp.dll
v3
Il doit y avoir une meilleure solution que celle-ci.
Comment configurer Visual Studio/Windows Installer de sorte que je n'ai besoin que d'une installation .exe? Cela signifie que le programme d'installation détecte la version de ExApp et installe les versions correspondantes de my.dll
et Interop.ExApp.dll
.
Et une question bonus: Depuis l'API ExApp n'a pas changé de manière significative, comment puis-je compiler une version de my.dll
pour fonctionner avec n'importe quelle version installée d'ExApp?
La liaison tardive avec le mot-clé C# * dynamic * ou vb.net est une option dans COM. À défaut, le programme d'installation doit rechercher dans le registre la clé CLSID. C'est coutume. –