Исключение указывает, что имя запрашиваемой сборки каким-то образом не может быть проанализировано и найдено.Если имя сборки было допустимым, но оно просто не было найдено, вы получите другую ошибку.
Обычно сообщение об исключении включает сборку, которую не удалось разрешить.Например, этот код выдает точное исключение:
var asm = Assembly.Load("test,,;''");
Это явно недопустимое имя сборки, поэтому вы получаете:
System.IO.FileLoadException: 'Не удалось загрузить файл илисборка "test \, \ ,;" "или одна из ее зависимостей.Указанное имя сборки или кодовая база недопустимы.(Исключение из HRESULT: 0x80131047) '
Я бы отладил код и посмотрел, можно ли получить сообщение об исключении.Одна вещь, которую я бы попробовал, это зайти в Сервис -> Параметры -> Отладка -> Включить только мой код и снять галочку.Это должно позволить вам увидеть развернутое исключение, которое выдается, когда Unity пытается разрешить зависимость.
Еще один быстрый способ - обработать событие AssemblyResolve.Всякий раз, когда сборка, которую искали по имени, не может быть разрешена по любой причине, по которой вызывается событие.Параметр args содержит имя сборки, которую пытались разрешить.
Поместите это как первую строку в вашей программе:
AppDomain.CurrentDomain.AssemblyResolve += Resolver;
, а затем поместите этот метод в тот же класс:
private static Assembly Resolver(object sender, ResolveEventArgs args)
{
string assemblyName = args.Name;
throw new Exception(args.Name);
}
Теперь вы можете установить точку останова и проверить имя сборки, которая пыталась получить разрешение.