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