回答:
NDependを試しましたか?依存関係が表示され、クラスとメソッドの使いやすさを分析することもできます。
彼らのウェブサイト:
2020年4月に@Eriawan回答を完了するために、Dependency Graphが完全に再構築されたNDependバージョン2020.1がリリースされました。現在では数百のプロジェクトで構成される大規模なソリューションに対応し、多くのナビゲーション機能を提供しています。
これがNopCommerce OSSプロジェクトでの様子です。
.NET Core 3クラスライブラリ全体(176個のアセンブリ)では、次のようになります。
免責事項:私はNDependで働いています
私は似たようなものが必要でしたが、それを行うためのツールにお金を払う(またはインストールする)のは嫌でした。私はプロジェクトの参照を通過し、代わりにyuml.me friendly-format でそれらを出力する簡単なPowerShellスクリプトを作成しました:
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
パラメータに追加する必要があります
更新:バージョン8以降のReSharperには、「プロジェクトの依存関係の表示」機能が組み込まれています。
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 Solution Dependency Visualizerは、ソリューション内のプロジェクトの依存関係を分析し、この情報とテキストレポートから依存関係グラフを作成します。
同様の問題がありましたが、複数のプロジェクトが同じアセンブリの異なるバージョンを参照していたため、さらに複雑になりました。
バージョン情報を含む出力を取得し、実行時のアセンブリ読み込みの問題をチェックするために、次のツールを作成しました。
https://github.com/smpickett/DependencyViewer
(githubリリースへの直接リンク:https : //github.com/smpickett/DependencyViewer/releases)
VS 2010 Ultimateでプロジェクトの依存関係グラフを作成できます。Architecture Explorerを使用すると、ソリューションを参照し、視覚化するプロジェクトと関係を選択して、その選択から依存関係グラフを作成できます。
詳細については、次のトピックを参照してください。
方法:コードからグラフドキュメントを生成する:http : //msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
方法:Architecture Explorerを使用してコードを検索する: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 Architectural Discovery&Modeling Toolsフォーラム:http : //social.msdn.microsoft.com/Forums/en-US/vsarch/threads
NDependによって生成されたグラフでエリアワンの回答を完了するには、以下のスクリーンショットを参照してください。NDependの無料試用版をダウンロードしてしばらく使用できます。
免責事項:私はツールチームの一員です
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/
単に依存関係グラフが必要な場合は、これが1つを取得する最もクリーンな方法の1つであることがわかりました。
VS 2019は依存関係グラフモジュールの名前をコードマップに変更しました
ここに公式のドキュメントがあります:https : //docs.microsoft.com/en-us/visualstudio/modeling/map-dependencies-across-your-solutions?view=vs-2019
Danny TuppenyによるPSスクリプトのこの拡張バージョンは、プロジェクトと外部の両方の参照を示しています。
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
それは初期の段階ですが、私のニーズにはうまくいきました:)