MakePri.exe を使用して手動でリソースをコンパイルする

MakePri.exe は、PRI ファイルを作成およびダンプするために使用できるコマンド ライン ツールです。 このツールは、Microsoft Visual Studio の MSBuild の一部として統合されていますが、パッケージを手動で作成したり、カスタム ビルド システムを使って作成する場合にも使うことができます。

Note

MakePri.exe は、Windows ソフトウェア開発キットのインストール時に Windows SDK for UWP Managed Apps オプションをオンにするとインストールされます。 パス %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe (および他のアーキテクチャ用に指定されたフォルダー) にインストールされます。 たとえば、C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe のようにします。

このセクションの内容

トピック 説明
MakePri.exe のコマンド ライン オプション MakePri.exe にはcreateconfigdumpnewresourcepackversioned。 コマンドのセットが含まれます。 このトピックでは、コマンド ライン オプションの使用について説明します。
MakePri.exe 構成ファイル ここでは、MakePri.exe XML 構成ファイルのスキーマについて説明します。
MakePri.exe の形式に固有のインデクサー このトピックでは、リソースのインデックスを生成するために MakePri.exe ツールによって使われる形式に固有のインデクサーについて説明します。

MakePri.exe のコマンド ライン オプション

MakePri.exe にはcreateconfigdumpnewresourcepackversioned。 コマンドのセットが含まれます。 使用方法の詳細については、「MakePri.exe コマンド ライン オプション」を参照してください。

MakePri.exe 構成

PRI XML 構成ファイルは、どのリソースにインデックスを付けるかの方法を指定します。 構成 XML のスキーマについては、「MakePri.exe 構成」を参照してください。

形式固有のインデクサー

MakePri.exe は、通常newversioned、または resourcepack コマンドで使用されます。 このような場合は、リソースのインデックスを生成するためにソース ファイルのインデックスが作成されます。 MakePri.exe では、さまざまな個々のインデクサーを使用して、リソースの異なるソース リソース ファイルまたはコンテナーを読み取ります。 最もシンプルなインデクサーはフォルダー インデクサーで、フォルダーの内容 (.jpg.png 画像など) にインデックスが付けられます。 詳しくは、「MakePri.exe 形式固有のインデクサー」をご覧ください。

MakePri.exe の警告とエラー メッセージ

言語 '<language(s)>' のリソースは見つかりましたが、既定の言語 '<language(s)>' のリソースは見つかりませんでした。 既定の言語を変更するか、既定の言語でリソースを修飾してください。

この警告は、言語修飾子によるマークが付けられていると見なされる特定の名前付きリソースのファイルまたは文字列リソースが MakePri.exe または MSBuild によって検出されながら、既定の言語の候補が見つからなかった場合に表示されます。 ファイル名とフォルダー名で修飾子を使用するプロセスについては、「言語、スケール、およびその他の修飾子に合わせてリソースを調整する」で説明されています ファイルまたはフォルダーに言語名が含まれている場合がありますが、正確な既定の言語に適合するリソースは検出されません。 たとえば、プロジェクトが既定の言語として "en-US" を使用し、"de/logo.png" という名前のファイルがあるが、既定の言語 "en-US" でマークされているファイルがない場合、この警告が表示されます。 この警告を削除するには、ファイルまたは文字列リソースを既定の言語で修飾するか、既定の言語を変更する必要があります。 既定の言語を変更するには、Visual Studio でソリューションを開いた状態で、開くPackage.appxmanifest. [アプリケーション] タブで、[既定の言語] が適切に設定されていることを確認します (たとえば、"en" や "en-US")。

'<resource identifier>' には、デフォルトまたはニュートラルなリソースは指定されません。 このアプリケーションでは、リソースを取得するときに、特定のユーザー構成に対して例外がスローされることがあります。

この警告は、言語修飾子によるマークが付けられていると見なされるファイルまたはリソースが MakePri.exe または MSBuild によって検出された一方で対応するリソースが不明確な場合に表示されます。 修飾子はありますが、実行時にそのリソース識別子に対して特定のリソース候補が返される保証はありません。 特定の言語、ホーム地域、または別の修飾子のリソース候補が見つからない場合、デフォルトであるか、常にユーザーのコンテキストと一致する場合は、この警告が表示されます。 実行時、ユーザーの言語設定や住んでいる地域などの特定のユーザー構成に関して ([設定]>[時刻と言語]>[地域と言語])、リソースを取得するために使われた API が予期しない例外をスローすることがあります。 この警告を削除するには、プロジェクトの既定の言語またはグローバル ホーム リージョン (homeregion-001) のリソースなど、既定のリソースを指定する必要があります。

ビルド システムでMakePri.exe を使用します。

ビルド システムでは、ビルドするプロジェクトの種類に応じて MakePri.exe new, versioned, または resourcepack コマンドを使用する必要があります。 新しい PRI ファイルを作成するビルド システムでは、この new コマンドを使用する必要があります。 イテレーションを通じて内部オフセットの互換性を確保する必要があるビルド システムでは、この versioned コマンドを使用できます。 リソースの追加のバリアントを含む PRI ファイルを作成し、そのバリアントに新しいリソースが追加されていないことを確認するための検証を行う必要があるビルド システムでは、この resourcepack コマンドを使用する必要があります。

インデックスが作成されるソース ファイルを明示的に制御する必要があるビルド システムでは、フォルダーのインデックスを作成する代わりに ResFiles インデクサーを使用できます。 ビルド システムでは、異なる形式固有のインデクサーで複数のインデックス パスを使用して、1 つの PRI ファイルを生成することもできます。

ビルド システムでは、PRI 形式固有のインデクサーを使用して、クラス ライブラリ、アセンブリ、SDK、DLL などの他のコンポーネントからパッケージの PRI にビルド済みの PRI ファイルを追加することもできます。

P他のコンポーネント、クラス ライブラリ、アセンブリ、DLL、SDK 用に PRI ファイルをビルドする場合は、initialPath 構成を使用して、コンポーネント リソースに含まれるアプリと競合しない独自のサブリソース マップを持つようにする必要があります。