首页 > 解决方案 > C# WinForm 中的 AppDomain.CurrentDomain.GetAssemblies()

问题描述

我需要为项目生成我的程序集列表。我正在使用这段代码:

 Assembly[] lstAssembly = AppDomain.CurrentDomain.GetAssemblies();

这在某种程度上有效,但它没有在解决方案中显示我的所有命名空间。我想知道为什么它没有显示我的解决方案中的所有命名空间

我的解决方案及其项目是这样的:

> MySolution'TST'              
>|-->BaseWinApp(Project1)           
>|-->ProductWinApp(Project2)          
>|-->SaleWinApp(Project3)         
>|-->TST(Start Up Project)

标签: c#

解决方案


默认情况下,它只返回直接引用的库。如果要加载所有这些,则需要递归加载。

            var myrootAssembly = Assembly.GetExecutingAssembly();
            var loadedPath = myrootAssembly.Location;
            var rootPath = loadedPath.Substring(0, loadedPath.LastIndexOf('\\') + 1);
            var referencedPaths = Directory.GetFiles(rootPath, "*.dll");
            foreach (var refPath in referencedPaths)
            {
                assemblyList.Add(Assembly.LoadFrom(refPath));
            }

推荐阅读