Подтвердить что ты не робот

Загрузка DLL файлов подключаемых модулей: "Вызываемый элемент не поддерживается в динамической сборке".

У нас есть пользовательская DLL, которая не входит в наш начальный файл установки. Они загружаются во время выполнения. Этот процесс отлично работал при использовании .NET 2.0, но теперь мы получаем сообщение об ошибке "Вызываемый элемент не поддерживается в динамической сборке", когда мы используем .NET 4.0.

try
{
    assem = Assembly.LoadFrom(fi.FullName); //fi is FileSystemInfo
}
catch (FileLoadException) {}
catch (BadImageFormatException) {}
catch (System.Security.SecurityException) {}
catch (ArgumentException) {}
catch (PathTooLongException) {}
4b9b3361

Ответ 1

Для меня эта проблема не была внедрена в лицензию для aspose dll: http://www.aspose.com/community/forums/thread/423874/initializing-the-license-file.aspx

Их код вводит динамические сборки, когда лицензия не обнаружена, что приводит к сбою их DLL, а также кучу другого кода, который несовместим с динамическими сборками.

Не уверен, что это обычный способ лицензирования/активации для обеспечения зарегистрированного использования с DLL сторонних разработчиков, поэтому я отправлю его здесь для Google, если он есть.

Ответ 2

Эта ошибка возникает, поскольку Assembly.Load не может быть вызвана динамическими сборками. Вы должны отфильтровать динамические сборки перед их использованием.

var assemblies AppDomain.CurrentDomain.GetAssemblies().Where(p => !p.IsDynamic);

Ответ 3

Это в файле app.config разрешает "подключаемую" DLL из удаленных источников.

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

http://msdn.microsoft.com/en-us/library/dd409252.aspx