System.Web.Compilation 네임 스페이스의 BuildManager.GetReferencedAssemblies()?
내가 알고있는 한, ASP.NET 전용이므로 콘솔 앱에서는 작동하지 않습니다. (또는 Windows 응용 프로그램에서도 마찬가지입니다.)
그래서 첫 번째 하위 질문은 BuildManager.GetReferencedAssemblies의 특수 기능이 필요한지 여부, 즉 BuildManager.GetReferencedAssemblies의 특수 기능이 필요한지 아닌지입니다. ASP.NET 특정 어셈블리를 참조하는 방법 -뿐만 아니라 모든 어셈블리 응용 프로그램 참조를하지만,이 참조하는 모든 어셈블리, 경우 당신이 무슨 말을 하려는지 등 등
(Difference between AppDomain.GetAssemblies and BuildManager.GetReferencedAssemblies 참조) 할 일은 .exe가 직접 참조하는 어셈블리의 목록만으로도 잘 작동합니다 (플러스 또는 동적으로로드 된 코드) itly) 자체를 참조하는 참조 된 어셈블리로 호출하여, 가장 쉬운 방법은 바로 이것이다 :
// Get all currently loaded assemblies.
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
그렇지 않다면에서 간단한 방법이 없기 때문에 당신을 위해 복잡 것 곳이 있습니다. NET을 사용하여 앱이 간접적으로 참조하는 모든 어셈블리의 목록을 가져옵니다. 이론적으로, Assembly.GetReferencedAssembly()에서 Assembly.GetReferencedAssembly()를 재귀 적으로 호출하는 코드를 작성한 다음이 코드에서 얻은 모든 결과에 대해 작성한 다음, 중복 결과를 버리는 모든 결과에 대해 결국 무한 루프에 빠지게되고 앱에 의해 직접 또는 간접적으로 정적으로 참조되는 모든 어셈블리로 끝날 것입니다.
(만약 당신이 동적으로 어셈블리를 참조하는 경우, AppDomain.Load() 또는 일부 등으로 말한다, 그것은 그들을 나열하지 않습니다.하지만, 나도 BuildManager.GetReferencedAssemblies()를하지 생각하지 않는다.)
이 대답은 다음과 같은 이유로 나에게 도움이되지 않습니다. http://stackoverflow.com/a/2479400/178143 – Ted