我正在尝试搜索属于特定项目的所有类型到我的项目引用的所有程序集
我做了什么,通过这个加载项目中的所有程序集:
typeof(var) == Dict
typeof(var) == Array
然后搜索特定类型
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
var loadedPaths = loadedAssemblies.Select(a => a.Location).ToArray();
var referencedPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
var toLoad = referencedPaths.Where(r => !loadedPaths.Contains(r, StringComparer.InvariantCultureIgnoreCase)).ToList();
toLoad.ForEach(path => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path))));
现在当我尝试迭代类型时,我得到一个加载器异常 “无法加载文件或程序集'System.Windows”
和system.windows不是我的项目
引用的程序集编辑:
执行以下操作时抛出异常
foreach(类型中的var类型) { }
答案 0 :(得分:0)
这就是我在它期间的结果,它失败的原因是我的dll目录,比我的项目直接引用的dll更多。
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
loadedAssemblies.SelectMany(x => x.GetReferencedAssemblies())
.Distinct()
.Where(y => loadedAssemblies.Any((a) => a.FullName == y.FullName) == false)
.ToList()
.ForEach(x => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(x)));