Abt*_*deh 96 .net c# assemblies
在.Net中,我想枚举所有AppDomains上的所有已加载程序集.为我的程序的AppDomain做这件事很容易AppDomain.CurrentDomain.GetAssemblies().我是否需要以某种方式访问每个AppDomain?或者是否已有一个工具可以做到这一点?
Bog*_*SFT 91
使用Visual Studio
这提供了有关每个程序集,应用程序域的详细信息,并提供了一些加载符号的选项(即包含调试信息的pdb文件).
使用Process Explorer
如果您需要外部工具,可以使用Process Explorer(免费软件,由Microsoft发布)
单击一个进程,它将显示包含所有使用的程序集的列表.该工具非常好,因为它显示了其他信息,如文件句柄等.
编程
检查这个解决如何操作的问题.
s15*_*99d 19
这就是我最终的结果.它是所有属性和方法的列表,我列出了每种方法的所有参数.我没有成功获得所有的价值观.
foreach(System.Reflection.AssemblyName an in System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()){
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(an.ToString());
foreach(Type type in asm.GetTypes()){
//PROPERTIES
foreach (System.Reflection.PropertyInfo property in type.GetProperties()){
if (property.CanRead){
Response.Write("<br>" + an.ToString() + "." + type.ToString() + "." + property.Name);
}
}
//METHODS
var methods = type.GetMethods();
foreach (System.Reflection.MethodInfo method in methods){
Response.Write("<br><b>" + an.ToString() + "." + type.ToString() + "." + method.Name + "</b>");
foreach (System.Reflection.ParameterInfo param in method.GetParameters())
{
Response.Write("<br><i>Param=" + param.Name.ToString());
Response.Write("<br> Type=" + param.ParameterType.ToString());
Response.Write("<br> Position=" + param.Position.ToString());
Response.Write("<br> Optional=" + param.IsOptional.ToString() + "</i>");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)