.NET反射程序集加载异常

6

你好,我正在以以下方式加载程序集:

Assembly testAssembly = Assembly.LoadFile("abc.dll");
Type t = testAssembly.GetType("abc.dll");

但是我遇到了一个错误:“需要绝对路径信息”,然而我的dll文件位于同一文件夹中。
3个回答

7

wal提到了GetType方法调用的一个好观点,但是为了回答这个问题:

string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "abc.dll");
Assembly testAssembly = Assembly.LoadFile(path);

如果 AppDomain.CurrentDomain 不可靠,那么可以使用稍微复杂一些的方法:
string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "abc.dll");

1
如果您的dll是一个.NET dll并且位于相同的文件夹中,那么您不需要调用Assembly.LoadFile。您可以简单地调用
Type t = Type.GetType("SomeType");

你真的想获取类型“abc.dll”吗?这应该是一个类名,而不是一个程序集名称。

0

直接从特定路径读取DLL文件会创建问题,因此您必须提供绝对路径或尝试使用LoadFrom()

Assembly assembly = Assembly.LoadFrom(@"D:/CodeDLL.dll");
Type t= assembly.GetType("YourNamespace.YourClass");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接