11

我可以从 Visual Studio .NET 项目中轻松查看单个项目引用的项目和 dll。

是否有任何应用程序或反射的使用可以为我构建一个完整的依赖关系树,我可以使用它来绘制依赖关系的图形图表?

4

5 回答 5

10

NDepend 带有一个交互式依赖图和一个依赖矩阵。您可以下载并使用 NDepend 的免费试用版一段时间。

更多关于 NDepend 依赖图 在此处输入图像描述

更多关于 NDepend 依赖矩阵在此处输入图像描述

免责声明:我是工具团队的一员

于 2008-11-21T09:49:51.690 回答
8

我需要类似的东西,但不想支付(或安装)工具来完成它。我创建了一个快速的 PowerShell 脚本,它遍历项目引用并以yuml.me友好格式将它们吐出:

Function Get-ProjectReferences ($rootFolder)
{
    $projectFiles = Get-ChildItem $rootFolder -Filter *.csproj -Recurse
    $ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

    $projectFiles | ForEach-Object {
        $projectFile = $_ | Select-Object -ExpandProperty FullName
        $projectName = $_ | Select-Object -ExpandProperty BaseName
        $projectXml = [xml](Get-Content $projectFile)
        
        $projectReferences = $projectXml | Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty "#text"
        
        $projectReferences | ForEach-Object {
            "[" + $projectName + "] -> [" + $_ + "]"
        }
    }
}

Get-ProjectReferences "C:\Users\DanTup\Documents\MyProject" | Out-File "C:\Users\DanTup\Documents\MyProject\References.txt"

示例图
(来源:yuml.me

于 2012-05-06T16:54:18.497 回答
3

除了 NDepend 之外,您还可以尝试使用Reflector的这个插件来显示程序集依赖图。

于 2008-09-17T05:30:19.097 回答
2

您可以在 Visual Studio 2010 Ultimate 中创建项目和程序集的依赖关系图,方法是使用体系结构资源管理器浏览您的解决方案,选择您想要可视化的项目和关系,然后根据您的选择创建一个依赖关系图。

有关详细信息,请参阅以下主题:

如何:从代码生成图形文档:http : //msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

如何:使用架构资源管理器查找代码:http : //msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

RC 下载http ://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a 。

Visual Studio 2010 架构发现和建模工具论坛:http ://social.msdn.microsoft.com/Forums/en-US/vsarch/threads

于 2010-02-19T00:43:58.570 回答
0

Structure101可以做到这一点。您可以按程序集和/或命名空间浏览模型,单击任何级别的任何依赖项都会为您提供导致依赖项的所有代码级引用。.NET 版本处于测试阶段,但它已可用于其他语言多年,因此非常成熟。这是一个示例屏幕截图。 替代文字 http://www.headwaysoftware.com/images/assemblies.jpg

于 2010-02-19T10:40:19.583 回答