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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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...
Partager