私は現在、かなり大きなプロジェクトを掘り下げ、独自のプロジェクトに部品を分けようとしています。VS2015のC#プロジェクトで参照アセンブリの使用法を見つける
1つのアセンブリでは、別個のプロジェクトでそれを参照すると循環依存性に関するエラーが発生するため、頭痛になります。
私の質問は、プロジェクト内の特定のアセンブリ参照のすべての用途を見つける方法です。
私は現在、かなり大きなプロジェクトを掘り下げ、独自のプロジェクトに部品を分けようとしています。VS2015のC#プロジェクトで参照アセンブリの使用法を見つける
1つのアセンブリでは、別個のプロジェクトでそれを参照すると循環依存性に関するエラーが発生するため、頭痛になります。
私の質問は、プロジェクト内の特定のアセンブリ参照のすべての用途を見つける方法です。
最も簡単な方法は、参照からアセンブリを削除し、プロジェクトを構築することです。与えられたすべてのエラーは、使用しようとしている場所を示します。
このPowerShellスニペットをソースコードディレクトリで実行すると、すべてのプロジェクト依存関係の説明がテキストで表示されます。次に、プロジェクトの名前を検索して、受信および送信の依存関係を見つけます。
$projectFiles = Get-ChildItem .\*\*.csproj
$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 + "] -> [" + $_ + "]"
}
}
ボーナスを追加しました。出力をyuml.meにコピーすると、ソリューションの依存関係の図が作成されます。
それは私が探していたものではありません。私はアセンブリの何かが使われているコードベースの正確な行が必要でした。 – rinukkusu
Gotcha。私は答えとして残しておきます。なぜなら、誰かがこの質問の後に起こると便利だと思うかもしれないからです。 –
最も簡単な方法は、参照からアセンブリを削除し、プロジェクトを構築することです。与えられたすべてのエラーは、使用しようとしている場所を示します。 – CathalMF
ああ、はい - それはかなりうまくいった。時には複雑すぎると思っていることもあります。 – rinukkusu