다음을 통해 공유


.NET 네이티브 일반 문제 해결

이 문서에서는 .NET 네이티브로 앱을 개발할 때 발생할 수 있는 잠재적인 문제를 해결하는 방법을 설명합니다.

문제

  • 문제: 빌드 출력 창이 제대로 업데이트되지 않습니다.

    해결 방법: 빌드 출력 창은 빌드가 완료될 때까지 업데이트되지 않습니다. 빌드 시간은 몇 분까지 걸릴 수 있으므로 업데이트 표시가 다소 지연될 수도 있습니다.

  • 문제: Arm의 앱 정품 빌드 시간이 길어졌습니다.

    해결 방법: Arm 디바이스에 앱을 배포하는 경우 .NET 네이티브 인프라가 호출됩니다. 이 컴파일에서는 리플렉션 등의 정적이 아닌 의미 체계가 계속 작동하도록 하는 동시에 많은 최적화를 수행합니다. 또한 앱이 사용하는 .NET Framework 부분은 최적의 성능을 위해 정적으로 연결되며 네이티브 코드로도 컴파일되어야 합니다. 이로 인해 컴파일 시간이 더 오래 걸립니다.

    그러나 표준 개발 컴퓨터에서 대다수 앱의 표준 컴파일에 소요되는 컴파일 시간은 여전히 1분 이내입니다. 일반적으로 표준 개발 컴퓨터에서 .NET Framework용 기본 이미지를 생성하는 데 몇 분이 걸립니다. 생성된 코드를 개선하기 위한 모든 최적화와 .NET Framework를 포함하더라도 앱 빌드 시간은 일반적으로 1~2분입니다.

    Microsoft는 다중 스레드 컴파일 및 기타 최적화를 조사하여 컴파일 성능을 개선하기 위해 지속적으로 노력하고 있습니다.

  • 문제: 앱이 .NET 네이티브를 사용하여 컴파일되었는지 알 수 없습니다.

    해결 방법: .NET 네이티브 컴파일러가 호출되면 빌드 시간이 길어지고 작업 관리자에 ILC.exe 및 nutc_driver.exe와 같은 다양한 .NET 네이티브 구성 요소 프로세스가 표시됩니다.

    .NET 네이티브로 프로젝트를 성공적으로 빌드하면 obj\config\ arch\projectname.ilc\에서 출력을 찾을 수 있습니다. 밖. 최종 기본 패키지 콘텐츠는 bin\arch\config\AppX에서 찾을 수 있습니다. 앱을 배포한 경우 최종 네이티브 패키지 콘텐츠는 \bin\arch\config\AppX에 있습니다.

  • 문제: .NET 네이티브를 사용해서 컴파일한 앱에서 .NET 네이티브 없이 컴파일했을 때는 throw하지 않던 런타임 예외(일반적으로 MissingMetadataException 또는 MissingRuntimeArtifactException 예외)를 throw합니다.

    해결 방법: .NET 네이티브가 리플렉션을 통해 사용할 수 있는 구현 코드 또는 메타데이터를 제공하지 않았기 때문에 예외가 throw됩니다. (자세한 내용은 .NET 네이티브 및 컴파일을 참조하세요.) 예외를 제거하려면 .NET 네이티브 도구 체인이 런타임에 메타데이터나 구현 코드를 사용 가능하게 만들 수 있도록 런타임 지시문 파일(rd.xml)에 항목을 추가해야 합니다. 런타임 지시문 파일에 추가할 필수 항목을 생성하는 데 두 가지 문제 해결사를 사용할 수 있습니다.

    자세한 내용은 리플렉션 및 .NET 네이티브를 참조하세요.

참고 항목