有没有人有一个很好的方法来搜索WebForms Web应用程序,以返回整个应用程序中使用的唯一用户控件列表(在.aspx和.ascx页面中)?我们有100多页和150多个用户控件。我们还使用了一些第三方库,我想看看我们在整个应用程序中使用了哪些控件。我不一定要查找每个独特控件的计数,只需要查看唯一的项目。例如:asp:Label,asp:MultiView等。
提前致谢。
答案 0 :(得分:1)
在涉及依赖关系分析和变更分析时,我正在使用NDepend。如果您没有许可试用版,则应允许您无限制地使用所有功能。
从创建新项目开始,添加Web应用程序的已编译程序集。它将自动加载您可以使用Class Browser
浏览的所有依赖项。这将使您基本了解Web应用程序使用的类型(控件)。
您也可以使用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 }
如您所见,查询结果可以导出各种格式(HTML,Excel,文本或图形)。
NDepend是一个非常强大的工具,主要是因为内置Code Query Language。它基于LINQ,您可以开始创建简单的查询,无需任何额外的培训或学习。