Bonjour,
Je travaille actuellement sur un plugin outlook qui utilise le .net remoting et pour résumer voilà à quoi ressemble la partie qui pose problème :
Interfaces :
Code serveur :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 namespace Remoting.Interfaces { public interface IFactory { IHello GetHello(); string SayProut(); } public interface IHello { string SayHello(); } }
Code client :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 namespace Remoting { class Factory : MarshalByRefObject, IFactory { IHello GetHello() { return new Hello() as IHello; } string SayProut() { return "prout"; } } public interface IHello : MarshalByRefObject, IHello { string SayHello() { return "Hello!!"; } } }
Alors ça fonctionne très bien à partir du moment ou l'assembly Remoting.Interfaces.dll se situe dans le répertoire de démarrage de l'application (celui retourné par Application.StartupPath) mais Outlook démarre depuis "Program Files/Office..." et là ça pose problème car mon plugin ne se situe pas dans le répertoire Outlook. Petite précision, seuls les objets activés cotés client posent problème, ceux activés cotés serveur fonctionnent parfaitement.Code:
1
2
3
4 IFactory f = Activator.GetObject(typeof(IFactory), "tcp://localhost:6432/Factory"); string s = f.SayProut(); // <- Ok IHello h = f.GetHello(); // <- InvalidCastException: "Return argument has an invalid type" return h.Hello();
J'ai trouvé pas mal de cas similaires sur le net mais tous se sont résignés à modifier leur archi de déploiement... et perso j'aimerais bien éviter ça :aie:
Donc ma question, est il possible de modifier les chemins de recherche d'assembly lors du démarrage de l'appli ? j'ai pas mal cherché et là je commence à désespérer donc si quelqu'un à une suggestion je suis preneur...
Alors j'ai vu qu'on pouvait ajouter des sous répertoires via le fichier app.config, mais que des SOUS repertoires :( moi je voudrais pouvoir ajouter des chemin absolus...