4

アセンブリ データを含むバイト配列を受け取りました。appdomain にアセンブリをロードせずに、このデータからアセンブリ名を取得するにはどうすればよいですか?

var assemblyName = GetAssemblyName(byte[] asmData);//doesn't load assembly to appDomain.
4

1 に答える 1

6

現在のアプリ ドメインに読み込まずにアセンブリ名を取得するには、新しい AppDomain を作成し、AppDomain.Load を使用てから FullName プロパティを呼び出します。例えば:

byte[] asmData;  // Contains the assembly data

AppDomain appDomain = AppDomain.CreateDomain("MyDomain");
Assembly assembly = appDomain.Load(asmData);
string name = assembly.FullName;
AppDomain.Unload(appDomain);

MSDNによると、他のドメインがそのアセンブリをロードしていないと仮定すると、現在のアプリ ドメインにロードせずにアンロードする必要があります。

アプリ ドメインにロードしたくない場合は、バイトをファイルに保存し、AssemblyName.GetAssemblyNameメソッドを使用します。

于 2012-09-20T10:38:07.563 に答える