web-dev-qa-db-ja.com

プラグインのロードDLLファイル、 "呼び出されたメンバーはダイナミックアセンブリではサポートされていません。"

初期設定ファイルに含まれていないカスタムDLLがあります。それらは実行時にロードされます。このプロセスは.NET2.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) {}
20
Trevorm

私にとって、この問題はAspose dllのライセンスを埋め込んでいませんでした: http://www.aspose.com/community/forums/thread/423874/initializing-the-license-file.aspx

それらのコードは、ライセンスが検出されないときに動的アセンブリを挿入し、DLLの障害を引き起こします。また、動的アセンブリと互換性のない他のコードも多数挿入します。

これがサードパーティのdllでの登録使用を保証するための一般的なライセンス/アクティベーション方法であるかどうかわからないので、そうであれば、ここにGoogleに投稿します。

16
user326608

このエラーは、動的アセンブリで_Assembly.Load_を呼び出すことができないために発生しています。動的アセンブリを使用する前に、それらを除外する必要があります。

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

15
Gusdor

App.configファイルのこれにより、リモートソースからの「プラグイン」dllが可能になります。

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

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

4
Trevorm