如何从包含程序集的字节数组中获取程序集名称?

voi*_*oid 3 .net

我收到包含汇编数据的字节数组.如何在不在appdomain中加载程序集的情况下从此数据中获取程序集名称?

var assemblyName = GetAssemblyName(byte[] asmData);//doesn't load assembly to appDomain.
Run Code Online (Sandbox Code Playgroud)

akt*_*ton 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);
Run Code Online (Sandbox Code Playgroud)

根据MSDN,假设没有其他域已加载该程序集,则应在不加载到当前应用程序域的情况下卸载它.

如果您不想将其加载到任何应用程序域中,请将字节保存到文件并使用AssemblyName.GetAssemblyName方法.