Загрузка 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) {}
Ответы
Ответ 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