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项目。 有什么工具可以给我一个很好的项目依赖图吗?
我需要类似的东西,但不想付(或安装)一个工具来做到这一点。 我创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底部的快速手册。
如何
- 从这里安装yEd工具。
- 使用/resharper.internal命令行参数运行VS。
- 转到ReSharper / Internal / Show Dependencies。
- 指定要包含在“大图片”中的项目。
- 除非您需要,否则取消选中“排除terminal节点…”。
- 按'显示'。
- 在yEd中使用分层布局(Alt + Shift + H)
- 提供反馈=)
您可以使用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