有没有人有一种很好的方法来搜索 WebForms Web 应用程序以返回整个应用程序(在 .aspx 和 .ascx 页面中)使用的唯一用户控件列表?我们有 100 多个页面和 150 多个用户控件。我们还使用了一些第三方库,我想看看我们在整个应用程序中使用了哪些控件。我不一定要寻找每个独特控件的数量,而只是寻找独特的项目。例如:asp:Label、asp:MultiView等。
提前致谢。
当涉及到依赖关系分析和更改分析时,我使用的是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 是非常强大的工具,主要是因为内置了代码查询语言。它基于 LINQ,您无需任何额外的培训或学习即可开始创建简单的查询。