System.Web.Compilation名前空間からのBuildManager.GetReferencedAssemblies()?
私の知る限り、これはASP.NET固有であるため、コンソールアプリでは機能しません。(または、Windowsアプリの場合も同様です。)
したがって、最初のサブ質問は、BuildManager.GetReferencedAssembliesの特別な機能が必要かどうか、つまり、ASP.NET固有のアセンブリ参照方法に加えて、アプリケーションが使用するすべてのアセンブリだけでなく、それを調べて見つけることです。参照しますが、それらが参照するすべてのアセンブリなど。
(AppDomain.GetAssembliesとBuildManager.GetReferencedAssembliesの違いを参照してください)
実行しようとしていることが、.exeが直接参照するアセンブリのリストだけで正常に機能する場合(さらに、コードによって明示的に、またはそれ自体が参照する参照アセンブリを呼び出すことによって暗黙的にロードされたアセンブリのリスト)それら)、最も簡単な方法はこれだけです:
// Get all currently loaded assemblies.
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
そうでない場合は、アプリが間接的に参照するすべてのアセンブリのリストを取得する簡単な方法が.NETにないため、複雑になります。理論的には、Assembly.GetEntryAssembly()でAssembly.GetReferencedAssemblies()を再帰的に呼び出すコードを記述し、そこから取得するすべての結果で、次にそれらから取得するすべての結果で、重複を破棄して、無限ループに陥ることはありません。最終的には、アプリによって直接または間接的に静的に参照されるすべてのアセンブリになります。
(たとえば、AppDomain.Load()などによってアセンブリを動的に参照する場合、それらはリストされません。しかし、BuildManager.GetReferencedAssemblies()もリストされないと思います。)