Dot-Net

Visual Studio 項目的依賴關係圖

  • February 28, 2009

我目前正在將一個大型解決方案(約 70 個項目)從 VS 2005 + .NET 2.0 遷移到 VS 2008 + .NET 3.5。目前我有 VS 2008 + .NET 2.0。

問題是我需要將項目一一移動到新的 .NET 框架,確保沒有 .NET 2.0 項目引用 .NET 3.5 項目​​。有沒有什麼工具可以給我一個很好的項目依賴關係圖?

你試過 NDepend 嗎?它將向您顯示依賴關係,您還可以分析類和方法的可用性。

他們的網站:

<http://ndepend.com>


為了在 2020 年 4 月完成 @Eriawan 的回答,NDepend 版本 2020.1 已經發布,依賴關係圖完全重建。它現在可以擴展到由數百個項目組成的大型解決方案,並提供許多導航設施。

這是NopCommerce OSS 項目的樣子。

NopCommerce 上的 NDepend 依賴關係圖

這是整個 .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 + "] -&gt; [" + $_ + "]"
       }
   }
}

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

引用自:https://stackoverflow.com/questions/598129