2
我有一個應用程序,用戶可以在其中爲我的應用程序創建插件並將它們的dll放在/ plugins文件夾中。相對於程序集DLL而不是EXE的C#路徑
插件開發者有時必須引用應該存儲在各自/ plugins/plugin_app /文件夾中的文件(xml配置文件等)。
但是,似乎他們啓動我的應用程序時,相對路徑始終設置爲啓動EXE的文件夾(我的應用程序)。我該如何解決這個問題?
我有一個應用程序,用戶可以在其中爲我的應用程序創建插件並將它們的dll放在/ plugins文件夾中。相對於程序集DLL而不是EXE的C#路徑
插件開發者有時必須引用應該存儲在各自/ plugins/plugin_app /文件夾中的文件(xml配置文件等)。
但是,似乎他們啓動我的應用程序時,相對路徑始終設置爲啓動EXE的文件夾(我的應用程序)。我該如何解決這個問題?
當他們引用他們可以追加路徑組件後引用該文件:
FileStream f = new FileStream(Path.Combine(mainAppDir,"plugins\\plugin_app\\filename.xml"),FileMode.Open);
您需要手動添加DLL的路徑以形成絕對路徑。
例如:
string somePath = Path.Combine(typeof(PluginType).Assembly.Location, "Config.xml");
我知道這是舊的,但上面的例子是不正確。 typeof(PluginType).Assembly.Location返回程序集的路徑而不是目錄。應該是Path.Combine(Path.GetDirectoryName(typeof(PluginType).Assembly.Location),「Config.xml」) – 2017-05-18 12:46:04