Answers:
您是否尝试过NDepend?它将向您显示依赖关系,还可以分析类和方法的可用性。
他们的网站:
为了在2020年4月完成@Eriawan回答,已发布了NDepend 2020.1版本,并完全重建了Dependency Graph。现在,它可以扩展由数百个项目组成的大型解决方案,并提供许多导航功能。
这是NopCommerce OSS项目上的外观。
这是整个.NET Core 3类库(176个程序集)的外观。
免责声明:我在NDepend工作
我需要类似的东西,但不想为此付费(或安装)工具。我创建了一个快速的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"
=$true
到Mandatory
和ValueFromPipeline
参数
更新:ReSharper自版本8起具有内置的“查看项目依赖项”功能。
ReSharper版本<8具有内部功能,可以在使用yFiles查看器时显示依赖关系图。请参阅帖子底部的快速手册。
如何
您可以使用Visual Studio 2010 Ultimate轻松获得项目依赖关系图,在此视频中扫描5分钟以了解如何: http //www.lovettsoftware.com/blogengine.net/post/2010/05/27/Architecture-Explorer .aspx
在Visual Studio 2010 Ultimate中:体系结构| 生成依赖图 通过大会。
我写了一个可能对您有帮助的工具。VS解决方案依赖关系Visualizer分析解决方案中的项目依赖关系,并根据此信息以及文本报告创建依赖关系图表。
我遇到了类似的问题,但是由于多个项目引用了同一程序集的不同版本,因此问题变得更加复杂。
为了获得包含版本信息并检查可能的运行时程序集加载问题的输出,我制作了此工具:
https://github.com/smpickett/DependencyViewer
(指向github发布的直接链接:https : //github.com/smpickett/DependencyViewer/releases)
您可以在VS 2010 Ultimate中创建项目的依赖关系图。通过Architecture Explorer,您可以浏览解决方案,选择要可视化的项目和关系,然后根据选择创建依赖关系图。
有关更多信息,请参见以下主题:
如何:从代码生成图形文档:http : //msdn.microsoft.com/zh-cn/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
如何:使用体系结构资源管理器查找代码:http : //msdn.microsoft.com/zh-cn/library/dd409431%28VS.100%29.aspx
RC下载:http : //www.microsoft.com/downloads/details.aspx ? displaylang=zh_CN&FamilyID=457bab91-5eb2-4b36-b0f4- d6f34683c62a。
Visual Studio 2010体系结构发现和建模工具论坛:http : //social.msdn.microsoft.com/Forums/en-US/vsarch/threads
在PowerShell的解决方案是最好的。我将其调整为可在我的计算机(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
您可以在项目中为引用创建一个漂亮的图形。我已经在我的博客http://www.mellekoning.nl/index.php/2010/03/11/project-references-in-ddd/中描述了该操作的方式
VS 2019已将依赖关系图模块重命名为代码映射
这是官方文档:https : //docs.microsoft.com/zh-cn/visualstudio/modeling/map-dependencies-across-your-solutions?view=vs-2019
Danny Tuppeny的PS脚本的扩展版本同时显示了Project和External引用:
Function Get-ProjectReferences($rootPath)
{
$projectFiles = Get-ChildItem $rootPath -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 {
"PR:[" + $projectName + "]:[" + $_ + "]"
}
}
$projectFiles | ForEach-Object {
$projectFile = $_ | Select-Object -ExpandProperty FullName
$projectName = $_ | Select-Object -ExpandProperty BaseName
$projectXml = [xml](Get-Content $projectFile)
$externalReferences = $projectXml | Select-Xml '//defaultNamespace:Reference/@Include' -Namespace $ns
$externalReferences | ForEach-Object {
"ER:[" + $projectName + "]:[" + $_ + "]"
}
}
}
Get-ProjectReferences "C:\projects" | Out-File "C:\temp\References.txt"
它将提供一个冒号分隔的文件,可以在Excel中打开和分析该文件。
我已经检查了所有答案,但是没有一个选项令我满意,因此我编写了自己的工具来预览项目与项目之间的依赖关系。
https://github.com/Audionysos/VSProjectReferencesViewer
这是早期阶段,但可以满足我的需求:)