2014-12-19 40 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