답변:
NDepend를 사용해 보셨습니까? 의존성을 보여주고 클래스와 메소드의 유용성을 분석 할 수도 있습니다.
그들의 웹 사이트 :
2020 년 4 월 @Eriawan 답변을 완료하기 위해 NDepend 버전 2020.1이 종속성 그래프가 완전히 재구성 된 상태로 릴리스 되었습니다. 이제 수백 개의 프로젝트로 구성된 대규모 솔루션으로 확장되며 많은 탐색 기능을 제공합니다.
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
매개 변수 를 추가해야합니다.
업데이트 : 버전 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 솔루션 종속성 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
방법 : 아키텍처 탐색기를 사용하여 코드 찾기 : 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 아키텍처 검색 및 모델링 도구 포럼 : http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads
NDepend가 생성 한 그래프에 대한 에리아 완 답변을 완료하려면 아래 스크린 샷을 참조하십시오. 한동안 무료 평가판 NDepend를 다운로드하여 사용할 수 있습니다 .
NDepend Dependency Matrix에 대한 추가 정보 :
면책 조항 : 저는 도구 팀의 일원입니다
파워 쉘 솔루션은 최고입니다. 내 컴퓨터 (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/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
초기 단계이지만 내 요구에 적합했습니다. :)