다음을 통해 공유


.NET 이식성 분석기

Important

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

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

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

공통 대상

  • .NET: 모듈식 디자인을 사용하고, 병렬 설치를 지원하며, 플랫폼 간 시나리오를 대상으로 합니다. 병렬 설치를 사용하면 다른 앱을 중단하지 않고도 새 .NET 버전을 채택할 수 있습니다. 앱을 .NET으로 포팅하고 여러 플랫폼을 지원하는 것이 목표인 경우 권장되는 대상입니다.
  • .NET Standard: 모든 .NET 구현에서 사용할 수 있는 .NET Standard API를 포함합니다.
  • ASP.NET Core: .NET을 기반으로 하는 최신 웹 프레임워크입니다. 여러 플랫폼을 지원하기 위해 웹앱을 .NET(Core)으로 포팅하는 것이 목표인 경우 권장되는 대상입니다.
  • .NET + 플랫폼 확장: 많은 Windows 관련 .NET Framework 기술을 제공하는 Windows 호환성 팩 외에도 .NET API를 포함합니다.
  • .NET Standard + 플랫폼 확장: 많은 Windows 관련 .NET Framework 기술을 제공하는 Windows 호환성 팩 외에도 .NET Standard API를 포함합니다.

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

Visual Studio에서 .NET 이식성 분석기 사용을 시작하려면 먼저 복제하고 dotnet-apiport 프로젝트빌드해야 합니다. Visual Studio 2017 및 Visual Studio 2019 버전에서 작동합니다.

Important

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

솔루션 전체 보기

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

이를 검색하려면 다음 명령을 실행합니다.

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

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

DGML 분석의 스크린샷

이식성 분석

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

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만 보고서에 표시됩니다. .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 설명서를 참조하세요.