我正在尝试创建一个CQLinq查询,该查询将为我提供来自解决方案其余部分正在使用的特定程序集的所有类型和/或成员。
我需要这些信息,因此我可以移动/重构所有引用的类型/成员,最后从解决方案中删除特定的程序集(以及对它的所有引用)。
答案 0 :(得分:1)
为获得最佳结果显示,查询可能如下所示:
let targets = Assemblies.WithName("SpecificAssemblyName").Single().ChildTypesAndMembers.ToHashSet()
let methodsUser = Application.Methods.UsingAny(targets)
let typesUser = Application.Types.UsingAny(targets)
from x in ((IEnumerable<IMember>)typesUser).Concat(methodsUser)
where !targets.Contains(x)
select new {
x,
called = x.IsMethod ? x.AsMethod.MethodsCalled.Intersect(targets).Concat(x.AsMethod.FieldsUsed.Intersect(targets)) :
x.AsType.TypesUsed.Intersect(targets)}