다음을 통해 공유


.NET 이식성 분석기

참고 항목

.NET 업그레이드 도우미 도구의 CLI 버전을 사용하여 이진 분석을 위해 API 포트가 더 이상 사용되지 않습니다. API 포트의 백 엔드 서비스가 종료되었으므로 도구를 사용하려면 오프라인으로 사용해야 합니다. 자세한 내용은 .NET API 포트 추가 정보를 참조하세요.

라이브러리가 다중 플랫폼을 지원하도록 만들고 싶으세요? .NET Framework 애플리케이션을 .NET Core에서 실행하는 데 필요한 작업량을 확인하고 싶으세요? .NET 이식성 분석기는 어셈블리를 분석하고, 지정된 대상 .NET 플랫폼에 애플리케이션 또는 라이브러리를 이식하는 데 필요한 누락된 .NET API에 대한 자세한 보고서를 제공하는 도구입니다. 이식성 분석기는 프로젝트당 하나의 어셈블리를 분석하는 Visual Studio 확장 및 지정된 파일 또는 디렉터리별로 어셈블리를 분석하는 ApiPort 콘솔 앱으로 제공됩니다.

.NET Core와 같은 새 플랫폼을 대상으로 하도록 프로젝트를 변환했으면, Roslyn 기반 플랫폼 호환성 분석기를 사용하여 PlatformNotSupportedException 예외 및 기타 호환성 문제를 throw하는 API를 확인할 수 있습니다.

공통 대상

  • .NET Core: 모듈식 디자인이고, Side-by-Side 설치를 지원하고, 플랫폼 간 시나리오를 대상으로 합니다. Side-by-Side 설치를 사용하면 다른 앱을 중단하지 않고 새로운 .NET Core 버전을 채택할 수 있습니다. 앱을 .NET Core에 이식하여 여러 플랫폼을 지원하는 것이 목표인 경우에 권장되는 대상입니다.
  • .NET Standard: 모든 .NET 구현에서 사용할 수 있는 .NET Standard API를 포함합니다. 모든 .NET 지원 플랫폼에서 라이브러리를 실행하도록 하는 것이 목표인 경우에 권장되는 대상입니다.
  • ASP.NET Core: 최신 웹 프레임워크는 .NET Core를 기반으로 합니다. 웹앱을 .NET Core에 이식하여 여러 플랫폼을 지원하는 것이 목표인 경우에 권장되는 대상입니다.
  • .NET Core + 플랫폼 확장: 많은 .NET Framework 가용 기술을 제공하는 Windows Compatibility Pack 외에도 .NET Core API가 포함되어 있습니다. 이는 .NET Framework에서 Windows의 .NET Core로 앱을 이식하기 위해 권장되는 대상입니다.
  • .NET Standard + 플랫폼 확장: 많은 .NET Framework 가용 기술을 제공하는 Windows Compatibility Pack 외에도 .NET Standard API가 포함되어 있습니다. 이는 .NET Framework에서 Windows의 .NET Core로 라이브러리를 이식하기 위해 권장되는 대상입니다.

.NET 이식성 분석기를 사용하는 방법

Visual Studio에서 .NET 이식성 분석기 사용을 시작하려면 먼저 Visual Studio Marketplace에서 확장을 다운로드하고 설치해야 합니다. Visual Studio 2017 및 Visual Studio 2019 버전에서 작동합니다.

Important

.NET 이식성 분석기는 Visual Studio 2022에서 지원되지 않습니다.

분석>이식성 분석기 설정을 통해 Visual Studio에서 구성하고 대상 플랫폼을 선택합니다. 이 플랫폼은 현재 어셈블리가 빌드된 플랫폼/버전과 비교하여 이식성 간격을 평가하려는 .NET 플랫폼/버전입니다.

이식성 분석기의 스크린샷

ApiPort 콘솔 애플리케이션을 사용하여 ApiPort 리포지토리에서 다운로드할 수도 있습니다. listTargets 명령 옵션을 사용하여 사용 가능한 대상 목록을 표시한 다음, -t 또는 --target 명령 옵션을 지정하여 대상 플랫폼을 선택할 수 있습니다.

솔루션 전체 보기

많은 프로젝트에서 솔루션을 분석하는 데 있어 유용한 단계는 종속성을 시각화하여 어느 어셈블리의 하위 집합이 무엇에 종속되는지 이해하는 것입니다. 일반적인 권장 사항은 종속성 그래프의 리프 노드부터 시작하여 분석 결과를 상향식으로 적용하는 것입니다.

검색하려면 다음 명령을 실행할 수 있습니다.

ApiPort.exe analyze -r DGML -f [directory or file]

Visual Studio에서 열면 다음과 같은 결과가 나타납니다.

DGML 분석의 스크린샷

이식성 분석

Visual Studio에서 전체 프로젝트를 분석하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 어셈블리 이식성 분석을 선택합니다. 전체 프로젝트를 분석하지 않으려면 분석 메뉴로 이동한 다음 어셈블리 이식성 분석을 선택합니다. 여기서 프로젝트의 실행 파일 또는 DLL을 선택합니다.

솔루션 탐색기에서 이식성 분석기의 스크린샷

ApiPort 콘솔 앱을 사용할 수도 있습니다.

현재 디렉터리를 분석하려면 다음 명령을 입력합니다.

ApiPort.exe analyze -f .

.dll 파일의 특정 목록을 분석하려면 다음 명령을 입력합니다.

ApiPort.exe analyze -f first.dll -f second.dll -f third.dll

특정 버전을 대상으로 지정하려면 -t 매개 변수를 사용합니다.

ApiPort.exe analyze -t ".NET, Version=5.0" -f .

자세한 도움말을 가져오려면 ApiPort.exe -?를 실행합니다.

소유하고 이식하려는 모든 관련 exe 및 dll 파일을 포함시키고, 앱이 종속되어 있지만 소유하지 않고 이식할 수 없는 파일은 제외하는 것이 좋습니다. 이렇게 하면 가장 관련성이 높은 이식성 보고서가 제공됩니다.

이식성 결과 보기 및 해석

대상 플랫폼에서 지원되지 않는 API만 보고서에 표시됩니다. Visual Studio에서 분석을 실행한 후 .NET 이식성 보고서 파일 링크가 팝업으로 나타납니다. ApiPort 콘솔 앱을 사용하는 경우 .NET 이식성 보고서는 지정한 형식으로 파일로 저장됩니다. 기본값은 현재 디렉터리의 Excel 파일(.xlsx)에 있습니다.

이식성 요약

이식성 요약의 스크린샷

보고서의 이식성 요약 섹션에는 실행에 포함된 각 어셈블리에 대한 이식성 백분율이 표시됩니다. 이전 예제에서 svcutil 앱에 사용되는 .NET Framework API의 71.24%는 .NET Core + 플랫폼 확장에서 사용할 수 있습니다. 여러 어셈블리에 대해 .NET Portability Analyzer 도구를 실행하는 경우 각 어셈블리에는 이식성 요약 보고서에 행이 있어야 합니다.

세부 정보

이식성 세부 정보의 스크린샷

보고서의 세부 정보 섹션에는 선택된 대상 플랫폼에서 누락된 API가 나열되어 있습니다.

  • 대상 유형: 형식에는 대상 플랫폼에서 API가 누락되어 있습니다.
  • 대상 멤버: 메서드가 대상 플랫폼에서 누락되었습니다.
  • 어셈블리 이름: 누락된 API가 거주하는 .NET Framework 어셈블리입니다.
  • 선택한 각 대상 플랫폼은 ".NET Core"와 같은 하나의 열입니다. "지원되지 않음" 값은 API가 이 대상 플랫폼에서 지원되지 않음을 의미합니다.
  • 권장 변경 내용: 변경할 권장 API 또는 기술입니다. 현재 이 필드는 많은 API에 대해 비어 있거나 만료되었습니다. 많은 수의 API 때문에 최신으로 유지하는 데 큰 어려움을 겪고 있습니다. 고객에게 유용한 정보를 제공하기 위해 대체 솔루션을 찾고 있습니다.

어셈블리 누락

누락된 어셈블리의 스크린샷

보고서에서 누락된 어셈블리 섹션을 찾을 수 있습니다. 이 섹션에는 분석된 어셈블리에 의해 참조되고 분석되지 않았던 어셈블리 목록이 포함되어 있습니다. 사용자가 소유한 어셈블리인 경우 상세한 API 수준의 이식성 보고서를 가져올 수 있도록 API 이식성 분석기 실행에 포함합니다. 타사 라이브러리인 경우 대상 플랫폼을 지원하는 최신 버전이 있는지 확인하고 최신 버전으로 이동하는 것이 좋습니다. 결국, 이 목록에는 앱이 사용하며 대상 플래폼을 지원하는 버전이 있는 모든 타사 어셈블리가 포함됩니다.

.NET 이식성 분석기에 대한 자세한 내용은 GitHub 설명서를 참조하세요.