.NET ネイティブの一般的なトラブルシューティング

この記事では、.NET ネイティブでアプリを開発するときに発生する可能性がある問題のトラブルシューティング方法について説明します。

問題

  • 問題: ビルド出力ウィンドウが正しく更新されない。

    解決方法: ビルド出力ウィンドウは、ビルドが完了するまで更新されません。 ビルドには数分かかる場合があるため、更新が表示されるまでに遅延が発生することがあります。

  • 問題: Arm のアプリの小売ビルド時間が増加しました。

    解像 度:Arm デバイスにアプリをデプロイすると、.NET ネイティブ インフラストラクチャが呼び出されます。 このコンパイルは、リフレクションなどの非静的セマンティクスの実行が継続された状態で、多数の最適化を実行します。 また、.NET Framework のアプリで使用される部分がパフォーマンスの最適化のために静的にリンクされており、これもネイティブ コードにコンパイルされる必要があります。 このため、コンパイルの時間が長くなります。

    ただし、標準的な開発用コンピューター上で、ほとんどのアプリの標準的なコンパイルにかかる時間は 1 分以内です。 通常は、標準的な開発用コンピューター上で .NET Framework 用のネイティブ イメージを生成するだけで数分かかります。 生成されたコードを改善するためのすべての最適化と、.NET Framework を含めることでも、アプリのビルド時間は通常 1 から 2 分かかります。

    現在も、マルチスレッド コンパイルやその他の最適化を調査して、コンパイルのパフォーマンスを改善する取り組みが続いています。

  • 問題: アプリが .NET ネイティブを使用してコンパイルされたかどうかわからない。

    解決方法: .NET ネイティブ コンパイラが起動された場合、ビルド時間が長くなり、タスク マネージャーに ILC.exe や nutc_driver.exe などのさまざまな .NET ネイティブ コンポーネント プロセスが表示されます。

    .NET ネイティブでのプロジェクトのビルドが正常に完了すると、obj\config\ arch\projectname.ilc\out に出力が生成されます。最終的なネイティブ パッケージ コンテンツは、bin\arch\config\AppX にあります。 アプリを配置した場合、最終的なネイティブ パッケージ コンテンツは \bin\arch\config\AppX にあります。

  • 問題: .NET Native を使用してアプリをコンパイルすると、.NET Native を使用せずにコンパイルしたときにはスローされないランタイム例外 (通常は MissingMetadataException または MissingRuntimeArtifactException 例外) がスローされる。

    解決方法: これらの例外は、リフレクションを介して使用できるはずのメタデータまたは実装コードが .NET Native では提供されなかったためにスローされます (詳細については、「.NET ネイティブとコンパイル」を参照してください)。例外を取り除くには、ランタイム ディレクティブ (rd.xml) ファイルにエントリを追加して、.NET Native ツール チェーンがメタデータまたは実装コードを実行時に使用できるようにする必要があります。 次の 2 つのトラブルシューティング ツールを使用して、ランタイム ディレクティブ ファイルに追加する必要があるエントリを生成できます。

    詳細については、「リフレクションおよび .NET ネイティブ」を参照してください。

関連項目