在代码中搜索唯一控件列表

时间:2013-07-24 16:13:34

标签: asp.net webforms

有没有人有一个很好的方法来搜索WebForms Web应用程序,以返回整个应用程序中使用的唯一用户控件列表(在.aspx和.ascx页面中)?我们有100多页和150多个用户控件。我们还使用了一些第三方库,我想看看我们在整个应用程序中使用了哪些控件。我不一定要查找每个独特控件的计数,只需要查看唯一的项目。例如:asp:Label,asp:MultiView等。

提前致谢。

1 个答案:

答案 0 :(得分:1)

在涉及依赖关系分析和变更分析时,我正在使用NDepend。如果您没有许可试用版,则应允许您无限制地使用所有功能。

从创建新项目开始,添加Web应用程序的已编译程序集。它将自动加载您可以使用Class Browser浏览的所有依赖项。这将使您基本了解Web应用程序使用的类型(控件)。

NDepend Class Browser

您也可以使用Queries and Rules Edit Ctrl + Alt + R )缩小或扩展您的发现。运行以下查询以从System.Web.UI.WebControls获取已使用控件的列表:

from type in Assemblies.WithNameNotIn("WebApplication2").ChildTypes()

// depth is needed th find all controls that are used directly or indirectly
let depth = type.DepthOfIsUsedBy("WebApplication2".MatchAssembly())

// we are interested only in types from specific namespace, in this case "System.Web.UI.WebControls"
where type.ParentNamespace.Name == "System.Web.UI.WebControls"

where depth  >= 0 orderby depth
select new { type, depth }

CQL query result

如您所见,查询结果可以导出各种格式(HTML,Excel,文本或图形)。

NDepend是一个非常强大的工具,主要是因为内置Code Query Language。它基于LINQ,您可以开始创建简单的查询,无需任何额外的培训或学习。