C# 从程序集清单文件读取程序集GUID的最快方法

C# 从程序集清单文件读取程序集GUID的最快方法,c#,.net,reflection,guid,C#,.net,Reflection,Guid,我尝试从许多程序集获取GUID 我选择了与Reflector读取GUID相同的方法-但到目前为止,这是一个极其缓慢的过程。此外,当某些(连接的)dll文件丢失时,我会收到许多异常 Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) { string missedAssemblyFullName = args.Name; Assembly assembly = Asse

我尝试从许多程序集获取GUID

我选择了与Reflector读取GUID相同的方法-但到目前为止,这是一个极其缓慢的过程。此外,当某些(连接的)dll文件丢失时,我会收到许多异常

Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
string missedAssemblyFullName = args.Name;
Assembly assembly = Assembly.ReflectionOnlyLoad(missedAssemblyFullName);
return assembly;
}

//... and code
string exe = "test.exe";
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve +=CurrentDomain_ReflectionOnlyAssemblyResolve;
Assembly assembly = null;
if (assembly != null)
{
assembly = Assembly.ReflectionOnlyLoadFrom(exe);
if (assembly != null)
{
var test = CustomAttributeData.GetCustomAttributes(assembly);
foreach (var elem in test)
{
if (elem.AttributeType.Name == "GuidAttribute")
assemblyGuid = (string)elem.ConstructorArguments[0].Value;
}
}
}
如何使GUID读取过程更快? 还有别的办法吗?我只想打开清单文件并读取AssemblyInfo.cs文件[assembly:GUID(“98c11478-7295-4c10-a97f-4b6805df6191”)中可用的相同GUID


我需要ReflectionOnlyLoad方法吗?

您可以查看Vijay Mukhi的代码(包括源代码)。它解析程序集清单的方式与Microsoft的ILDASM差不多。然后您可以将代码精简到您需要的功能