исключение загрузки сборки отражения .net - PullRequest
5 голосов
/ 25 октября 2011

Привет, я загружаю сборку как

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

, но получаю сообщение об ошибке "Требуется абсолютная информация о пути", однако моя DLL находится в той же папке

Ответы [ 3 ]

7 голосов
/ 25 октября 2011
У

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");
2 голосов
/ 25 октября 2011

Вам не нужно звонить на Assembly.LoadFile, если ваша dll является .NET dll и находится в той же папке. Вы можете просто позвонить

Type t = Type.GetType("SomeType");

Вы действительно пытаетесь получить тип 'abc.dll'? Это должно быть имя класса, а не имя сборки.

0 голосов
/ 04 августа 2018

Чтение DLL-файла по указанному пути напрямую создает проблемы, поэтому либо вы должны указать абсолютный путь, либо вы можете просто попробовать LoadFrom()

Assembly assembly = Assembly.LoadFrom(@"D:/CodeDLL.dll");
Type t= assembly.GetType("YourNamespace.YourClass");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...