Visual Studio项目的依赖关系图

我目前正在将VS 2005 + .NET 2.0的大型解决scheme(〜70个项目)迁移到VS 2008 + .NET 3.5。 目前我有VS 2008 + .NET 2.0。

问题是我需要将项目逐个移动到新的.NET框架中,以确保.NET 2.0项目不引用.NET 3.5项目。 有什么工具可以给我一个很好的项目依赖图吗?

你有没有试过NDepend? 它会显示你的依赖关系,你也可以分析你的类和方法的可用性。

他们的网站:

http://ndepend.com

我需要类似的东西,但不想付(或安装)一个工具来做到这一点。 我创build了一个快速的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" 

示例图

更新:ReSharper自版本8以来内置了“查看项目依赖性”function。

ReSharper版本<8具有使用yFiles查看器显示依赖关系图的内部function 。 请参阅post底部的快速手册。

在这里输入图像说明

如何

  1. 从这里安装yEd工具。
  2. 使用/resharper.internal命令行参数运行VS。
  3. 转到ReSharper / Internal / Show Dependencies。
  4. 指定要包含在“大图片”中的项目。
  5. 除非您需要,否则取消选中“排除terminal节点…”。
  6. 按'显示'。
  7. 在yEd中使用分层布局(Alt + Shift + H)
  8. 提供反馈=)

您可以使用Visual Studio 2010 Ultimate轻松获得项目依赖关系图,扫描到这个video的5分钟,看看如何: http : //www.lovettsoftware.com/blogengine.net/post/2010/05/27/Architecture-Explorer的.aspx

在Visual Studio 2010 Ultimate:Architecture |中 生成依赖图| 大会。

我写了一个工具,可以帮助你。 VS解决scheme依赖项Visualizer分析解决scheme中的项目依赖关系,并根据此信息创build依赖关系图以及文本报告。

您可以在VS 2010 Ultimate中创build项目的依赖关系图。 通过架构浏览器,您可以浏览解决scheme,select要显示的项目和关系,然后根据您的select创build依赖关系图。

有关更多信息,请参阅以下主题:

如何:从代码生成graphics文档 : 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架构发现和build模工具论坛: http : //social.msdn.microsoft.com/Forums/en-US/vsarch/threads

要完成NDepend生成的图表上的eriawan答案,请参阅下面的屏幕截图。 您可以下载并使用 NDepend 的免费试用版 。

更多关于NDepend依赖关系图 在这里输入图像说明

更多关于NDepend依赖matrix : 在这里输入图像说明

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

我有一个类似的问题,但是由于几个项目引用了同一个程序集的不同版本,所以它变得更加复杂。

要获得包含版本信息的输出并检查可能的运行时assembly加载问题,我制作了这个工具:

https://github.com/smpickett/DependencyViewer

(直接链接到github发布: https : //github.com/smpickett/DependencyViewer/releases )

您可以在项目中创build一个很好的参考图。 我已经在我的博客上描述了我的做法http://www.mellekoning.nl/index.php/2010/03/11/project-references-in-ddd/

如果你只是想要一个依赖关系图,我发现这是得到一个最清洁的方法之一:

依赖分析器

我创build了一个使用YUML作为输出的C#项目..代码可以在这里find:

https://github.com/twistedtwig/DotnetProjectDependencyGraphs

Powershell解决scheme是最好的。 我把它改编成一个在我的机器(TM)上运行的bash脚本:

 #!/bin/bash for i in `find . -type f -iname "*.csproj"`; do # get only filename project=`basename $i` # remove csproj extension project=${project%.csproj} references=`cat $i | grep '<ProjectReference' | cut -d "\"" -f 2` for ref in $references; do # keep only filename (assume Windows paths) ref=${ref##*\\} # remove csproj extension ref=${ref%.csproj} echo "[ $project ] -> [ $ref ]" done done