C# Activator.CreateInstance异常

C# Activator.CreateInstance异常,c#,exception,activator,C#,Exception,Activator,在上面的代码中,我从XML配置文件中获取一个文件名,并尝试动态加载正确的.dll(这部分工作正常),然后将类实例化到对象dbHandler 调用Create实例方法后,我得到一个异常: 在之前 mscorlib.dll中出现“System.IO.FileNotFoundException”类型的第一次意外异常 mscorlib.dll中发生了类型为“System.Reflection.TargetInvocationException”的第一次意外异常 mscorlib.dll中发生了类型为“S

在上面的代码中,我从XML配置文件中获取一个文件名,并尝试动态加载正确的.dll(这部分工作正常),然后将类实例化到对象
dbHandler

调用
Create
实例方法后,我得到一个异常:

之前
mscorlib.dll中出现“System.IO.FileNotFoundException”类型的第一次意外异常
mscorlib.dll中发生了类型为“System.Reflection.TargetInvocationException”的第一次意外异常
mscorlib.dll中发生了类型为“System.Reflection.TargetInvocationException”的第一次意外异常
System.Xaml.dll中首次出现“System.Xaml.XamlObjectWriterException”类型的异常
System.Xaml.dll中首次出现类型为“System.Xaml.XamlObjectWriterException”的异常


我在某个地方读到,这可能表明调用的构造函数有问题,但我没有实现该构造函数(使用默认构造函数)。

从不使用LoadFile(),它加载程序集时没有加载上下文,因此无法找到依赖的程序集。使用LoadFrom()。使用CurrentDirectory()从根本上讲也是错误的,它太不可预测了。@HansPassant非常感谢您的快速回答,我会看看这是否解决了问题。那么,如何才能将解决方案设置为当前目录呢?您给出的输出窗口中的文本没有多大帮助。在失败行周围添加一个try-catch块,并发布异常消息和任何内部异常消息。看起来从LoadFile到LoadFrom的更改解决了我的问题,非常感谢!P.s获取我的解决方案目录的正确方法是什么?@Yogevnn您可以通过
path.GetDirectoryName(assembly.getexecutinggassembly().Location)
找到运行程序集的路径。您还可以在调试窗口中找到dbNameSpace和dbClassName吗?
DBHandler.IDB dbHandler;

fileManager fileManager = fileManager.getFileManager();
String dbNameSpace = fileManager.getDBNameSpace();
String dbClassName = fileManager.getDBClassName();

System.Reflection.Assembly.LoadFile(Directory.GetCurrentDirectory() + "\\" + dbNameSpace + ".dll");
Debug.WriteLine("BEFORE ___________________________________________________");
ObjectHandle handle = Activator.CreateInstance(dbNameSpace, dbNameSpace + "." + dbClassName);
dbHandler = (DBHandler.IDB)handle.Unwrap();