BuildManager.GetReferencedAssemblies () из пространства имен System.Web.Compilation?
Насколько я знаю, это специфично для ASP.NET, поэтому оно не будет работать в вашем консольном приложении. (Или в приложении Windows, если на то пошло.)
Итак, первый подвопрос заключается в том, нужна ли вам специальная функциональность BuildManager.GetReferencedAssemblies, а именно, что он просматривает и находит - в дополнение к специальным способам ASP.NET ссылок на сборки - не только все сборки на которые ссылается ваше приложение, но на все сборки, на которые они ссылаются и т. д. и т. д.
(См. Разница между AppDomain.GetAssemblies и BuildManager.GetReferencedAssemblies )
Если то, что вы пытаетесь сделать, будет работать нормально только со списком сборок, на которые непосредственно ссылаются ваши .exe-файлы (плюс любые, которые были загружены с тех пор динамически, либо явно вашим кодом, либо неявно, вызывая ссылочную сборку который сам ссылается на них), самый простой способ это просто:
// Get all currently loaded assemblies.
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
Если нет, то вот где вам будет сложно, потому что в .NET нет простого способа получить список всех сборок, на которые приложение ссылается косвенно. Теоретически вы можете написать код для рекурсивного вызова Assembly.GetReferencedAssemblies () для Assembly.GetEntryAssembly (), а затем для всех результатов, которые вы получите из этого, а затем для всех результатов, которые вы получите из этих - отбрасывание дубликатов, чтобы вы не делали не заканчивается бесконечным циклом - и в конечном итоге вы получите все сборки, на которые прямо или косвенно статически ссылается ваше приложение.
(Если вы когда-нибудь будете ссылаться на сборки динамически, например, с помощью AppDomain.Load () или чего-то подобного, они не будут перечислены в них. Но тогда я не верю, что BuildManager.GetReferencedAssemblies () тоже.)