2013-10-26 5 views
2

.NET Framework의 일부가 아닌 현재 AppDomain에서 모든 어셈블리를 찾으려고합니다. 즉, 자신의 라이브러리 또는 타사 라이브러리 중 하나입니다.AppDomain에서 모든 .NET 프레임 워크가 아닌 어셈블리를 가져 오는 방법은 무엇입니까?

모든 .NET Framework의 어셈블리 이름을 내 코드로 하드 ​​코딩하고 AppDomain.CurrentDomain.GetAssemblies()에서 모든 어셈블리를 찾을 수있는 것보다 쉬운 방법이 있습니까?

답변

3
 Assembly a = Assembly.GetAssembly(typeof(Task)); 
     CustomAttributeData attributeData = a.CustomAttributes.First(attribute => attribute.AttributeType == typeof(AssemblyProductAttribute)); 
     string value = attributeData.ConstructorArguments[0].Value as string; 

그리고 마이크로 소프트 .NET 프레임 워크

+0

감사 할 것이다 값이 훌륭한 솔루션이었습니다! 아무도 더 나은 대답을 주면 나는 기다릴 것이지만 그렇지 않다면 나는 이것을 받아 들일 것이다! – flai

+0

또한 어셈블리 중 일부는 "Microsoft® Visual Studio"값을 가졌지 만 디버거가 프로세스에 연결된 경우에만 발생합니다. – flai

2
String[] dotNetPaths=new string[]{"/Windows/Microsoft.Net/assembly/","/Windows/Microsoft.NET/Framework/"}; 
var otherAssemblies=AppDomain.CurrentDomain 
          .GetAssemblies() 
          .Where(x=>!dotNetPaths.Any(y=>x.CodeBase.Contains(y)));