从代码库中提取API

时间:2011-03-17 19:13:10

标签: c# asp.net visual-studio refactoring

您是否有一种技术可以轻松从C#for asp.net编译的代码库中提取所有命名空间和方法等?

我基本上希望能够打印所有可用的命名空间,方法等,以便我可以决定如何重构。

7 个答案:

答案 0 :(得分:2)

我不知道是否有方便的工具,但您可以在编译时选择输出xml文件的选项(Project Properties-> Output XML文档文件)。它将列出您可以导入和查询的XML中的所有方法。作为奖励,您还将获得开发人员提供的任何xml评论。

答案 1 :(得分:1)

您可以在对象浏览器中获取所有类的树形图 使用快捷方式Ctrl+W, J打开对象浏览器。

答案 2 :(得分:0)

有一个名为NDepend的商业工具可以让您以多种方式查询代码,当然也支持您提到的具体示例。

如果这是一次性任务,也许试用版的功能非常丰富,可以满足您的需求。或者也许你会意识到它有多棒并最终购买副本(:(我与NDepend没有任何关系,我只是喜欢这个工具背后的概念)。

答案 3 :(得分:0)

.NET Reflector非常适合这一点。大约一个星期前它是免费的。我相信你仍然可以在某处找到免费版本或使用免费试用版。

来自网站:

  

.NET Reflector是一个程序集浏览器   对于Microsoft .NET平台而言   可以用来探索,分析,   反编译,并调试内容   任何.NET程序集。 .NET Reflector   结合了类浏览,静态   分析和高级反编译   帮助.NET开发人员了解如何   图书馆工作或如何互动   与.NET的其他部分   应用。 .NET Reflector会   反编译为高级C#,VB,IL和   一些F#功能。

答案 4 :(得分:0)

根据您使用的Visual Studio版本,您可以创建一个可打印的类图(我认为它可用于除Express之外的所有版本)。在项目中,添加新文件并从“常规”类别中选择“类图”。然后将类和接口文件拖到它的设计图面上。

答案 5 :(得分:0)

我会通过反思自己去做。同样,这很大程度上取决于您的要求。

// get assembly from Assembly.LoadFrom or other static overload

var types = assembly.GetTypes();

var typeNames = (from t in types
        select t.FullName);

var namespaces = (from n in types
        select n.Namespace).Distinct();

答案 6 :(得分:0)

SandCastle将为您创建类/方法的好帮助文件以及开发人员使用xml注释所做的任何评论。