我以前通过在包含新版本应用程序的文件夹中创建零字节application_name.exe.local文件,成功测试多个版本的代码,而不必担心dll依赖性。但是,我们必须转向C#,这种技术不再有效。是否还需要其他东西(除了.local文件)以确保C#dll首先查看当前文件夹然后在应用程序的默认位置追逐其他dll?
答案 0 :(得分:0)
您可以随时挂接到Tejs建议的AppDomain.AssemblyResolve事件:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
...
public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Assembly AlreadyLoaded=AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(x => x.FullName == args.Name);
if(AlreadyLoaded==null)
return Assembly.LoadFile(Path to corresponding DLL);
}
它并不完美(可能需要在您要搜索的任何目录中加载DLL,然后用搜索这些DLL替换Assembly.LoadFile行),但您应该能够修改它以使其工作。希望无论如何。