2010-11-04 6 views
2

J'ai une application où les utilisateurs peuvent créer des plugins pour mon application et déposer leur DLL dans un dossier/plugins.C# chemin par rapport à DLL d'assemblage et non EXE

Les développeurs de plugins devront parfois référencer des fichiers (fichiers de configuration xml, etc.) qui devraient être stockés dans leur dossier/plugins/plugin_app/respectif.

Cependant, il semble que quand ils lancent mon application, le chemin relatif est toujours défini dans le dossier où l'EXE est lancé (mon application). Comment puis-je résoudre ce problème?

Répondre

1

Quand ils font référence au fichier, ils peuvent référencer les composants après annexant de chemin:

FileStream f = new FileStream(Path.Combine(mainAppDir,"plugins\\plugin_app\\filename.xml"),FileMode.Open); 
2

Vous devez ajouter manuellement le chemin de la DLL pour former un chemin absolu.

Par exemple:

string somePath = Path.Combine(typeof(PluginType).Assembly.Location, "Config.xml"); 
+0

Je sais que c'est vieux, mais l'exemple ci-dessus est incorrect. typeof (PluginType) .Assembly.Location renvoie le chemin de l'assembly et non le répertoire. Devrait être Path.Combine (Path.GetDirectoryName (typeof (PluginType) .Assembly.Location), "Config.xml") –

Questions connexes