developer tip

로드 된 모든 어셈블리를 어떻게 나열합니까?

copycodes 2020. 8. 27. 07:54
반응형

로드 된 모든 어셈블리를 어떻게 나열합니까?


.Net에서 모든 AppDomain에 대해로드 된 모든 어셈블리를 열거하고 싶습니다. 내 프로그램의 AppDomain에 대해 수행하는 것은 충분히 쉽습니다 AppDomain.CurrentDomain.GetAssemblies(). 어떻게 든 모든 AppDomain에 액세스해야합니까? 아니면 이미이를 수행하는 도구가 있습니까?


Visual Studio 사용

  1. 프로세스에 디버거 연결 (예 : 디버깅으로 시작 또는 디버그> 프로세스에 연결)
  2. 디버깅하는 동안 모듈 창을 표시합니다 (디버그> Windows> 모듈).

이는 각 어셈블리, 앱 도메인에 대한 세부 정보를 제공하며 심볼을로드하는 몇 가지 옵션 (예 : 디버그 정보가 포함 된 pdb 파일)이 있습니다.

여기에 이미지 설명 입력

Process Explorer 사용

외부 도구가 필요한 경우 Process Explorer (Microsoft에서 게시 한 프리웨어)를 사용할 수 있습니다.

프로세스를 클릭하면 사용 된 모든 어셈블리 목록이 표시됩니다. 이 도구는 파일 핸들 등과 같은 다른 정보를 보여주기 때문에 꽤 좋습니다.

프로그래밍 방식

그것을 수행하는 방법을 설명하는 이 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>");
                    }
                }
            }
        }

참고 URL : https://stackoverflow.com/questions/458362/how-do-i-list-all-loaded-assemblies

반응형