1
我在項目設置中引用了外部程序集DLL(表示它安裝在c:\ ABC)。當我從該程序集中調用導出的方法時,出現運行時錯誤。因爲它正在查找文件c:\ ABC \ abc.ini,而.exe工作目錄位於其他位置。更改特定靜態綁定程序集的工作目錄
如何'愚弄'只有該組件當前工作目錄是在C:\ ABC?
我在項目設置中引用了外部程序集DLL(表示它安裝在c:\ ABC)。當我從該程序集中調用導出的方法時,出現運行時錯誤。因爲它正在查找文件c:\ ABC \ abc.ini,而.exe工作目錄位於其他位置。更改特定靜態綁定程序集的工作目錄
如何'愚弄'只有該組件當前工作目錄是在C:\ ABC?
假設你沒有對外部組件控制(即你不能修改其代碼),你能做的就是用包裝到組裝的所有調用的唯一的事情:
var currentDir = Environment.CurrentDirectory;
Environment.CurrentDirectory = @"c:\ABC";
try
{
// call that external assembly
}
finally
{
Environment.CurrentDirectory = currentDir;
}
謝謝但它不起作用。 Directory.SetCurrentDirectory – 2014-12-19 06:55:33
也沒有哦,我認爲程序集不使用當前目錄來查找abc.ini。它使用Assembly.GetExecutingAssembly()。CodeBase或Assembly.GetExecutingAssembly()。位置。那麼有可能愚弄它呢? – 2014-12-19 07:02:07
我發佈了另一個問題http://stackoverflow.com/questions/27561242/net-assembly-override-the-assembly-getexecutingassembly-codebase-location-of裝配地點。這個可能會被關閉。謝謝。 – 2014-12-19 09:31:43