アセンブリ データを含むバイト配列を受け取りました。appdomain にアセンブリをロードせずに、このデータからアセンブリ名を取得するにはどうすればよいですか?
var assemblyName = GetAssemblyName(byte[] asmData);//doesn't load assembly to appDomain.
アセンブリ データを含むバイト配列を受け取りました。appdomain にアセンブリをロードせずに、このデータからアセンブリ名を取得するにはどうすればよいですか?
var assemblyName = GetAssemblyName(byte[] asmData);//doesn't load assembly to appDomain.
現在のアプリ ドメインに読み込まずにアセンブリ名を取得するには、新しい 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メソッドを使用します。