Visual Studio 2012 の使用
わかったと思います。C++/CX WinRT コンポーネントの同じバイナリを、拡張 SDK の redist フォルダーの下の Debug フォルダーと Retail フォルダーの両方に含めました。
その結果、このバイナリは常に Visual Studio 2012 のリリース CRT に依存しています。
アプリのリリース バージョンをリモートで実行すると、アプリ バイナリと SDK コンポーネント バイナリの両方がリリース CRT に依存します。また、アプリはリリース VCLibs パッケージに依存しているため、リリース CRT もシステム上にあります。したがって、リリースアプリは正常に動作します。
ただし、アプリのデバッグ バージョンをリモートで実行すると、アプリは Visual Studio 2012 のデバッグ CRT に依存しますが、SDK コンポーネントはリリース CRT に依存します。アプリはデバッグ VCLibs パッケージのみに依存するため、実行時にデバッグ CRT のみを検出します。したがって、SDK コンポーネントの読み込みに失敗します。
解決策は、SDK を作成するときに、リリース バイナリがリリース CRT に依存し、デバッグ バイナリがデバッグ CRT に依存するようにすることです。
C++ ランタイムが Windows ストア アプリでどのように機能するかの詳細については、次のリンクを参照してください
。
Visual Studio 2013 で動作するようになったことを更新
Visual Studio 2013 の使用
Visual Studio 2013 では、VCLibs デバッグ AppX パッケージにデバッグ CRT DLL とリリース CRT DLL の両方が含まれています。したがって、デバッグ構成では、アプリはデバッグ CRT に依存し、拡張 SDK バイナリはリリース CRT に依存します。どちらの DLL も VCLibs Debug AppX パッケージに含まれています。それでうまくいきます。