Исключение с разрешения сборок: попытка загрузить непроверяемый исполняемый файл с помощью исправлений

Я встраиваю необходимые сборки в свой проект и разрешаю их во время выполнения с событием AppDomain.CurrentDomain.AssemblyResolve.

Все работает нормально, кроме irrKlang.net4-wrapper, который генерирует исключение, если я пытаюсь это сделать;

System.IO.FileLoadException: Attempt to load an unverifiable executable with fixups (IAT with more than 2 sections or a TLS section.) (Exception from HRESULT: 0x80131019)
   at System.Reflection.RuntimeAssembly.nLoadImage(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence evidence, StackCrawlMark& stackMark, Boolean fIntrospection, SecurityContextSource securityContextSource)
   at System.Reflection.Assembly.Load(Byte[] rawAssembly)
   at xyz.Utility.Helpers.AssemblyManager.Resolver(Object sender, ResolveEventArgs args) in C:\Users\shalafi\Desktop\xyz\trunk\xyz\Utility\Helpers\AssemblyManager.cs:line 55
   at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)

В основном я подозреваю, что CLR не может загружать сборки смешанного режима с Assembly.Load(byte []), хотя я не уверен.

Мне не удалось найти ничего, связанное с сообщением об исключении,

Попытка загрузить непроверяемый исполняемый файл с помощью исправлений (IAT с более чем двумя разделами или секцией TLS.)

Помогите оценить.

Ответы

Ответ 1

Я бы сказал, что это ошибка, а также то, что тоже нельзя допускать. Вы в основном пытаетесь загрузить код, который должен управляться, но на практике он также содержит код, отличный от IL. Вы могли бы обратиться к http://connect.microsoft.com/VisualStudio/feedback/details/97801/loading-mixed-assembly-with-assembly-load-byte-throw-exception-changed-behaviour

Ответ 2

На всякий случай у кого-то еще есть моя версия этой проблемы, вот как я ее исправил:

  • Создайте новый проект с другим именем
  • Скопируйте все ваши файлы в новый проект (включая код)
  • Добавить ссылки на все файлы, необходимые для компиляции без ошибок

Я действительно должен был что-то испортить своими рекомендациями/ресурсами. Я получал эту ошибку при попытке загрузить любую внешнюю .dll из моей программы.