C# 更改特定静态绑定程序集的工作目录

C# 更改特定静态绑定程序集的工作目录,c#,.net,dll,.net-assembly,C#,.net,Dll,.net Assembly,我在项目设置中引用了一个外部程序集DLL(表示它安装在c:\ABC)。当我从该程序集调用导出的方法时,我得到运行时错误。因为它正在查找文件c:\ABC\ABC.ini,而.exe工作目录位于其他位置 如何仅“愚弄”当前工作目录位于c:\ABC的程序集?假设您无法控制该外部程序集(即,您无法修改其代码),那么您唯一能做的就是使用以下内容包装对该程序集的所有调用: var currentDir = Environment.CurrentDirectory; Environment.CurrentDi

我在项目设置中引用了一个外部程序集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.SetCurrentDirectoryOh,我认为程序集没有使用当前目录查找abc.ini。它使用Assembly.GetExecutionGassembly()代码库或Assembly.GetExecutionGassembly()位置。那么,有可能愚弄它吗?我发布了另一个关于装配位置的问题。这个可以关闭。谢谢