System.Web.Compilation命名空間的BuildManager.GetReferencedAssemblies()?
據我所知,這是ASP.NET特定的,這就是爲什麼它不能在您的控制檯應用程序工作。 (或者在Windows應用程序中)。
因此,第一個子問題是您是否需要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.GetReferencedAssemblies()上調用Assembly.GetReferencedAssemblies(),然後從所有結果中獲得這些結果,然後從所有結果中獲得 - 丟棄重複項,所以不要最終會陷入無限循環 - 最終會最終得到所有應用程序直接或間接靜態引用的程序集。
(如果你曾經引用組件動態,通過AppDomain.Load()或一些這樣說,這就不一一列舉了。不過,我不相信BuildManager.GetReferencedAssemblies()會那樣做。)
這不適合我,可能出於同樣的原因,這個答案談到: http://stackoverflow.com/a/2479400/178143 – Ted 2013-11-11 14:36:01