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 回答