多くのアセンブリを含む新しいプロジェクトを単一のソリューションで開始しました。 まだアセンブリの依存関係に精通しておらず、どのアセンブリが別のアセンブリに依存しているかを把握するのに苦労しています。アセンブリの依存関係を示すツール
依存関係リストを表示する機能があるか、それともビジュアルグラフが優れているツールがありますか?
多くのアセンブリを含む新しいプロジェクトを単一のソリューションで開始しました。 まだアセンブリの依存関係に精通しておらず、どのアセンブリが別のアセンブリに依存しているかを把握するのに苦労しています。アセンブリの依存関係を示すツール
依存関係リストを表示する機能があるか、それともビジュアルグラフが優れているツールがありますか?
NDependは、依存グラフ分析になると王様です。ツールは、提案されている:
このStackoverflow answerの詳細はすべて関連する質問を参照してください。
public static void PoC(IEnumerable<AssemblyDefinition> assemblies, TextWriter writer)
{
Console.WriteLine("digraph Dependencies {");
var loaded = assemblies
.SelectMany(a => a.Modules.Cast<ModuleDefinition>())
.SelectMany(m => m.AssemblyReferences.Cast<AssemblyNameReference>().Select(a => a.Name + ".dll"))
.Distinct()
.Select(dllname => {
try { return AssemblyFactory.GetAssembly(dllname); }
catch { return null; } })
.Where(assembly => assembly != null)
.ToList();
loaded.ForEach(a => a.MainModule.FullLoad());
loaded.ForEach(a =>
{
foreach (var r in a.MainModule.AssemblyReferences.Cast<AssemblyNameReference>())
Console.WriteLine(@"""{0}"" -> ""{1}"";", r.Name, a.Name.Name);
});
Console.WriteLine("}");
}
それは、dot
graph fileを生成します。ここでは
は、これを行う場合Cecil Libraryを示すためにいくつかの簡単なコードです。 .StartsWith("System.")
(
特定のアセンブリをフィルタリングすることが推奨される:わずかに少ない単純なプロジェクトがこれを返された上でそれを実行している
:かなり単純なプロジェクトの結果でこれを実行するには?)および/または検索深度を制限する。
ありがとうございます。私たちはすでにCode Metrix /コードの品質チェックにNDependを使用していますが、これまでコード依存グラフを作成することはできませんでした。 それをテストし、魅力的に働きました。その正確に私が必要なもの! – SvenG