.Netでは、すべてのAppDomainで読み込まれたすべてのアセンブリを列挙したいと思います。私のプログラムのAppDomainのためにそれをするのは簡単ですAppDomain.CurrentDomain.GetAssemblies()
。すべてのAppDomainに何らかの方法でアクセスする必要がありますか?それとも、これを行うツールはすでにありますか?
Visual Studioを使用する
これにより、各アセンブリ、アプリドメインの詳細が表示され、シンボル(デバッグ情報を含むpdbファイル)を読み込むためのいくつかのオプションがあります。
Process Explorerの使用
外部ツールが必要な場合は、 Process Explorer (Microsoftが公開したフリーウェア)を使用できます
プロセスをクリックすると、使用されているすべてのアセンブリのリストが表示されます。このツールは、ファイルハンドルなどの他の情報を表示するので非常に優れています。
プログラムで
this SO 方法を説明する質問を確認してください。
これが私がやったことです。すべてのプロパティとメソッドのリストであり、各メソッドのすべてのパラメーターをリストしました。すべての値を取得することに成功しませんでした。
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>");
}
}
}
}