program story

Visual Studio 프로젝트의 종속성 그래프

inputbox 2020. 7. 24. 20:51
반응형

Visual Studio 프로젝트의 종속성 그래프


현재 VS 2005 + .NET 2.0에서 VS 2008 + .NET 3.5로 큰 솔루션 (~ 70 개의 프로젝트)을 마이그레이션하고 있습니다. 현재 VS 2008 + .NET 2.0이 있습니다.

문제는 .NET 2.0 프로젝트가 .NET 3.5 프로젝트를 참조하지 않도록 프로젝트를 하나씩 새로운 .NET 프레임 워크로 이동해야한다는 것입니다. 프로젝트 종속성에 대한 멋진 그래프를 제공하는 도구가 있습니까?


NDepend를 사용해 보셨습니까? 의존성을 보여주고 클래스와 메소드의 유용성을 분석 할 수도 있습니다.

그들의 웹 사이트 :

http://ndepend.com


비슷한 것이 필요했지만 도구를 지불하거나 설치하고 싶지 않았습니다. 나는 프로젝트 참조를 통과 빠른 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"

업데이트 : 버전 8 이후 ReSharper에는 '프로젝트 종속성보기' 기능 이 내장되어 있습니다.

ReSharper 버전 <8에는 yFiles 뷰어를 사용할 때 종속성 그래프를 표시하는 내부 기능 이 있습니다. 게시물 하단의 빠른 설명서를 참조하십시오.

여기에 이미지 설명을 입력하십시오

어떻게

  1. 여기 에서 yEd 도구를 설치 하십시오 .
  2. /resharper.internal 명령 줄 인수로 VS를 실행하십시오.
  3. ReSharper / Internal / Show Dependencies로 이동하십시오.
  4. '큰 그림'에 포함하려는 프로젝트를 지정하십시오.
  5. 필요하지 않은 경우 '터미널 노드 제외 ...'를 선택 취소하십시오.
  6. '표시'를 누르십시오.
  7. yEd에서 계층 적 레이아웃 사용 (Alt + Shift + H)
  8. 의견 제공 =)

Visual Studio 2010 Ultimate를 사용하여 프로젝트 종속성 그래프를 쉽게 얻을 수 있습니다.이 비디오에서 5 분까지 스캔하여 방법을 확인하십시오. http://www.lovettsoftware.com/blogengine.net/post/2010/05/27/Architecture-Explorer .aspx

Visual Studio 2010 Ultimate : 아키텍처 | 종속성 그래프 생성 | 어셈블리 별.


나는 당신을 도울 수있는 도구를 썼습니다. VS 솔루션 종속성 Visualizer 는 솔루션 내의 프로젝트 종속성을 분석하고이 정보와 텍스트 보고서로 종속성 차트를 만듭니다.


VS 2010 Ultimate에서 프로젝트의 종속성 그래프를 만들 수 있습니다. Architecture Explorer를 사용하면 솔루션을 탐색하고 시각화 할 프로젝트 및 관계를 선택한 다음 선택한 항목에서 종속성 그래프를 작성할 수 있습니다.

자세한 정보는 다음 주제를 참조하십시오.

How to: Generate Graph Documents from Code: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

How to: Find Code Using Architecture Explorer: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

RC download: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a.

Visual Studio 2010 Architectural Discovery & Modeling Tools forum: http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads


I had a similar issue, but it was further complicated because several projects were referencing different versions of the same assembly.

To get an output that includes version information and checks for possible runtime assembly loading issues, I made this tool:

https://github.com/smpickett/DependencyViewer

(direct link to github release: https://github.com/smpickett/DependencyViewer/releases)


To complete the eriawan answer on graphs generated by NDepend see screenshoots below. You can download and use the free trial edition of NDepend for a while.

More on NDepend Dependency Graph 여기에 이미지 설명을 입력하십시오

More on NDepend Dependency Matrix: 여기에 이미지 설명을 입력하십시오

Disclaimer: I am part of the tool team


If you simply want a dependency graph I've found this is one of the cleanest ways to get one:

Dependency Analyser


You can create a nice graph of the references in your projects. I've described the way I did it on my blog http://www.mellekoning.nl/index.php/2010/03/11/project-references-in-ddd/


The Powershell solution is the best. I adapted it into a bash script that works on my machine (TM):

#!/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

I created a little C# project using YUML as the output.. the code can be found here:

https://github.com/twistedtwig/DotnetProjectDependencyGraphs


I've checked all the answers but none of the options were satisfying to me so I wrote my own tool to preview project-project dependencies.

https://github.com/Audionysos/VSProjectReferencesViewer

It's early stage but it worked for my needs :)

참고URL : https://stackoverflow.com/questions/598129/dependency-graph-of-visual-studio-projects

반응형