.NET 이식성 분석기The .NET Portability Analyzer

라이브러리가 다중 플랫폼을 지원하도록 만들고 싶으세요?Want to make your libraries support multi-platform? .NET Framework 애플리케이션을 .NET Core에서 실행하는 데 필요한 작업량을 확인하고 싶으세요?Want to see how much work is required to make your .NET Framework application run on .NET Core? .NET 이식성 분석기는 어셈블리를 분석하고, 지정된 대상 .NET 플랫폼에 애플리케이션 또는 라이브러리를 이식하는 데 필요한 누락된 .NET API에 대한 자세한 보고서를 제공하는 도구입니다.The .NET Portability Analyzer is a tool that analyzes assemblies and provides a detailed report on .NET APIs that are missing for the applications or libraries to be portable on your specified targeted .NET platforms. 이식성 분석기는 프로젝트당 하나의 어셈블리를 분석하는 Visual Studio 확장 및 지정된 파일 또는 디렉터리별로 어셈블리를 분석하는 ApiPort 콘솔 앱으로 제공됩니다.The Portability Analyzer is offered as a Visual Studio Extension, which analyzes one assembly per project, and as a ApiPort console app, which analyzes assemblies by specified files or directory.

.NET Core와 같은 새 플랫폼을 대상으로 하도록 프로젝트를 변환했으면, Roslyn 기반 API 분석기 도구를 사용하여 PlatformNotSupportedException 예외 및 기타 호환성 문제를 throw하는 API를 확인할 수 있습니다.Once you've converted your project to target the new platform, like .NET Core, you can use the Roslyn-based API Analyzer tool to identify APIs throwing PlatformNotSupportedException exceptions and other compatibility issues.

공통 대상Common targets

  • .NET Core: 모듈형 디자인을 포함하고, Side-by-Side를 이용하며, 플랫폼 간 시나리오를 대상으로 합니다..NET Core: Has a modular design, employs side-by-side, and targets cross-platform scenarios. Side-by-Side를 사용하면 다른 앱을 중단하지 않고 새로운 .NET Core 버전을 채택할 수 있습니다.Side-by-side allows you to adopt new .NET Core versions without breaking other apps. 플랫폼 간을 지원하는 .NET Core에 앱을 이식하는 것이 목표인 경우에 권장되는 대상입니다.If your goal is to port your app to .NET Core supporting cross-platforms, this is the recommended target.
  • .NET Standard: 모든 .NET 구현에서 사용할 수 있는 .NET Standard API를 포함합니다..NET Standard: Includes the .NET Standard APIs available on all .NET implementations. 모든 .NET 지원 플랫폼에서 라이브러리를 실행하도록 하는 것이 목표인 경우에 권장되는 대상입니다.If your goal is to make your library to run on all .NET supported platforms, this is recommended target.
  • ASP.NET Core: 최신 웹 프레임워크는 .NET Core를 기반으로 합니다.ASP.NET Core: A modern web-framework built on .NET Core. 웹앱을 .NET Core에 이식하여 여러 플랫폼을 지원하는 것이 목표인 경우에 권장되는 대상입니다.If your goal is to port your web app to .NET Core to support multiple platforms, this is the recommended target.
  • .NET Core + 플랫폼 확장: 많은 .NET Framework 가용 기술을 제공하는 Windows Compatibility Pack 외에도 .NET Core API가 포함되어 있습니다..NET Core + Platform Extensions: Includes the .NET Core APIs in addition to the Windows Compatibility Pack, which provides many of the .NET Framework available technologies. 이는 .NET Framework에서 Windows의 .NET Core로 앱을 이식하기 위해 권장되는 대상입니다.This is a recommended target for porting your app from .NET Framework to .NET Core on Windows.
  • .NET Standard + 플랫폼 확장: 많은 .NET Framework 가용 기술을 제공하는 Windows Compatibility Pack 외에도 .NET Standard API가 포함되어 있습니다..NET Standard + Platform Extensions: Includes the .NET Standard APIs in addition to the Windows Compatibility Pack, which provides many of the .NET Framework available technologies. 이는 .NET Framework에서 Windows의 .NET Core로 라이브러리를 이식하기 위해 권장되는 대상입니다.This is a recommended target for porting your library from .NET Framework to .NET Core on Windows.

.NET 이식성 분석기를 사용하는 방법How to use the .NET Portability Analyzer

Visual Studio에서 .NET 이식성 분석기 사용을 시작하려면 먼저 Visual Studio Marketplace에서 확장을 다운로드하고 설치해야 합니다.To begin using the .NET Portability Analyzer in Visual Studio, you first need to download and install the extension from the Visual Studio Marketplace. Visual Studio 2017 이상에서 작동합니다.It works on Visual Studio 2017 and later versions. 분석 > 이식성 분석기 설정을 통해 Visual Studio에서 구성하고 대상 플랫폼을 선택할 수 있습니다. 이 플랫폼은 현재 어셈블리가 빌드된 플랫폼/버전과 비교하여 이식성 간격을 평가하려는 .NET 플랫폼/버전입니다.You can configure it in Visual Studio via Analyze > Portability Analyzer Settings and select your Target Platforms, which is the .NET platforms/versions that you want to evaluate the portability gaps comparing with the platform/version that your current assembly is built with.

이식성 분석기의 스크린샷

ApiPort 콘솔 애플리케이션을 사용하여 ApiPort 리포지토리에서 다운로드할 수도 있습니다.You can also use the ApiPort console application, download it from ApiPort repository. listTargets 명령 옵션을 사용하여 사용 가능한 대상 목록을 표시한 다음, -t 또는 --target 명령 옵션을 지정하여 대상 플랫폼을 선택할 수 있습니다.You can use listTargets command option to display the available target list, then pick target platforms by specifying -t or --target command option.

이식성 분석Analyze portability

Visual Studio에서 전체 프로젝트를 분석하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 어셈블리 이식성 분석을 선택합니다.To analyze your entire project in Visual Studio, right-click on your project in Solution Explorer and select Analyze Assembly Portability. 전체 프로젝트를 분석하지 않으려면 분석 메뉴로 이동한 다음 어셈블리 이식성 분석을 선택합니다.Otherwise, go to the Analyze menu and select Analyze Assembly Portability. 여기서 프로젝트의 실행 파일 또는 DLL을 선택합니다.From there, select your project’s executable or DLL.

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

ApiPort 콘솔 앱을 사용할 수도 있습니다.You can also use the ApiPort console app.

  • 현재 디렉터리를 분석하려면 다음 명령을 입력합니다. ApiPort.exe analyze -f .Type the following command to analyze the current directory: ApiPort.exe analyze -f .
  • .dll 파일의 특정 목록을 분석하려면 다음 명령을 입력합니다. ApiPort.exe analyze -f first.dll -f second.dll -f third.dllTo analyze a specific list of .dll files, type the following command: ApiPort.exe analyze -f first.dll -f second.dll -f third.dll
  • 자세한 도움말을 가져오려면 ApiPort.exe -?를 실행합니다.Run ApiPort.exe -? to get more help

소유하고 이식하려는 모든 관련 exe 및 dll 파일을 포함시키고, 앱이 종속되어 있지만 소유하지 않고 이식할 수 없는 파일은 제외하는 것이 좋습니다.It is recommended that you include all the related exe and dll files that you own and want to port, and exclude the files that your app depends on, but you don't own and can't port. 이렇게 하면 가장 관련성이 높은 이식성 보고서가 제공됩니다.This will give you most relevant portability report.

이식성 결과 보기 및 해석View and interpret portability result

대상 플랫폼에서 지원되지 않는 API만 보고서에 표시됩니다.Only APIs that are unsupported by a Target Platform appear in the report. Visual Studio에서 분석을 실행한 후 .NET 이식성 보고서 파일 링크가 팝업으로 나타납니다.After running the analysis in Visual Studio, you'll see your .NET Portability report file link pops up. ApiPort 콘솔 앱을 사용하는 경우 .NET 이식성 보고서는 지정한 형식으로 파일로 저장됩니다.If you used the ApiPort console app, your .NET Portability report is saved as a file in the format you specified. 기본값은 현재 디렉터리의 Excel 파일( .xlsx)에 있습니다.The default is in an Excel file (.xlsx) in your current directory.

이식성 요약Portability Summary

이식성 요약의 스크린샷

보고서의 이식성 요약 섹션에는 실행에 포함된 각 어셈블리에 대한 이식성 백분율이 표시됩니다.The Portability Summary section of the report shows the portability percentage for each assembly included in the run. 이전 예제에서 svcutil 앱에 사용되는 .NET Framework API의 71.24%는 .NET Core + 플랫폼 확장에서 사용할 수 있습니다.In the previous example, 71.24% of the .NET Framework APIs used in the svcutil app are available in .NET Core + Platform Extensions. 여러 어셈블리에 대해 .NET Portability Analyzer 도구를 실행하는 경우 각 어셈블리에는 이식성 요약 보고서에 행이 있어야 합니다.If you run the .NET Portability Analyzer tool against multiple assemblies, each assembly should have a row in the Portability Summary report.

세부 정보Details

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

보고서의 세부 정보 섹션에는 선택된 대상 플랫폼에서 누락된 API가 나열되어 있습니다.The Details section of the report lists the APIs missing from any of the selected Targeted Platforms.

  • 대상 유형: 형식에는 대상 플랫폼에서 API가 누락되어 있습니다.Target type: the type has missing API from a Target Platform
  • 대상 멤버: 메서드가 대상 플랫폼에서 누락되었습니다.Target member: the method is missing from a Target Platform
  • 어셈블리 이름: 누락된 API가 거주하는 .NET Framework 어셈블리입니다.Assembly name: the .NET Framework assembly that the missing API lives in.
  • 선택한 각 대상 플랫폼은 ".NET Core"와 같은 하나의 열입니다. "지원되지 않음" 값은 API가 이 대상 플랫폼에서 지원되지 않음을 의미합니다.Each of the selected Target Platforms is one column, such as ".NET Core": "Not supported" value means the API is not supported on this Target Platform.
  • 권장 변경 내용: 변경할 권장 API 또는 기술입니다.Recommended Changes: recommended API or technology to change to. 현재 이 필드는 많은 API에 대해 비어 있거나 만료되었습니다.Currently, this field is empty or out of date for a lot of APIs. 많은 수의 API 때문에 유지하는 데 큰 어려움을 겪고 있습니다.Due to the large number of APIs, we have big challenge to keep it up. 고객에게 유용한 정보를 제공하기 위해 대체 솔루션을 찾고 있습니다.We are looking at alternate solutions to provide helpful information to customers.

어셈블리 누락Missing Assemblies

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

보고서에서 누락된 어셈블리 섹션을 찾을 수 있습니다.You may find a Missing Assemblies section in your report. 이 어셈블리 목록은 분석된 어셈블리에서 참조되고 분석되지 않았음을 알려줍니다.It tells you that this list of assemblies are referenced by your analyzed assemblies and were not analyzed. 사용자가 소유한 어셈블리인 경우 API 수준의 세부 이식성 보고서를 가져올 수 있도록 API 이식성 분석기 실행에 포함합니다.If it's an assembly that you own, include it in the Api portability analyzer run so that you can get API level detailed portability report for it. 타사 라이브러리인 경우 대상 플랫폼을 지원하는 최신 버전이 있는지 확인합니다.If it's third party library, looks for if they have newer version supporting your target platform. 그렇다면 최신 버전으로 이동하는 것이 좋습니다.If so, consider moving to the newer version. 결국, 이 목록에는 앱이 사용하는 모든 타사 어셈블리가 포함되어 있으며 대상 플래폼을 지원하는 버전이 있음을 확인할 수 있습니다.Eventually, you would expect this list includes all the third party assemblies that your app depends on and confirmed that they have a version supporting your target platform.

.NET 이식성 분석기에 대한 자세한 내용은 GitHub 문서A Brief Look at the .NET Portability Analyzer(.NET 이식성 분석기 간단하게 살펴보기) Channel 9 비디오를 참조하세요.For more information on the .NET Portability Analyzer, visit the GitHub documentation and A Brief Look at the .NET Portability Analyzer Channel 9 video.