2014-12-19 64 views
1

我在項目設置中引用了外部程序集DLL(表示它安裝在c:\ ABC)。當我從該程序集中調用導出的方法時,出現運行時錯誤。因爲它正在查找文件c:\ ABC \ abc.ini,而.exe工作目錄位於其他位置。更改特定靜態綁定程序集的工作目錄

如何'愚弄'只有該組件當前工作目錄是在C:\ ABC?

回答

1

假設你沒有對外部組件控制(即你不能修改其代碼),你能做的就是用包裝到組裝的所有調用的唯一的事情:

var currentDir = Environment.CurrentDirectory; 
Environment.CurrentDirectory = @"c:\ABC"; 
try 
{ 
    // call that external assembly 
} 
finally 
{ 
    Environment.CurrentDirectory = currentDir; 
} 
+0

謝謝但它不起作用。 Directory.SetCurrentDirectory – 2014-12-19 06:55:33

+0

也沒有哦,我認爲程序集不使用當前目錄來查找abc.ini。它使用Assembly.GetExecutingAssembly()。CodeBase或Assembly.GetExecutingAssembly()。位置。那麼有可能愚弄它呢? – 2014-12-19 07:02:07

+0

我發佈了另一個問題http://stackoverflow.com/questions/27561242/net-assembly-override-the-assembly-getexecutingassembly-codebase-location-of裝配地點。這個可能會被關閉。謝謝。 – 2014-12-19 09:31:43