実行可能コードによるオプション パッケージOptional packages with executable code

実行可能コードを使用したオプション パッケージは、大規模または複雑なアプリを分割したり、既に公開されたアプリに追加するために役立ちます。Optional packages with executable code are useful for dividing a large or complex app, or for adding on to an app that's already been published. Visual Studio 2017 Version 15.7 および .NET Native 2.1 では、C++ および C# のオプション パッケージから実行可能コードを読み込むことができます。With Visual Studio 2017, version 15.7 and .NET Native 2.1, you can load executable code from both C++ and C# optional packages.

前提条件Prerequisites

  • Visual Studio 2017 Version 15.7Visual Studio 2017, version 15.7
  • Windows 10 バージョン 1709Windows 10, version 1709
  • Windows 10 Version 1709 SDKWindows 10, version 1709 SDK

最新の開発ツールを取得する方法については、「Windows 10 用のダウンロードとツール」を参照してください。To get the latest development tools, see Downloads and tools for Windows 10.

注意

オプション パッケージや関連セットを使用するアプリを Microsoft Store に提出するには、許可が必要です。To submit an app that uses optional packages and/or related sets to the Store, you will need permission. オプションのパッケージおよび関連する設定は、いないストアに送信する場合に、パートナー センターの許可なく基幹業務 (LOB) またはエンタープライズのアプリ使用できます。Optional packages and related sets can be used for Line of Business (LOB) or enterprise apps without Partner Center permission if they are not submitted to the Store. オプション パッケージや関連セットを使用するアプリの提出許可を得る方法については、「Windows 開発者向けサポート」をご覧ください。See Windows developer support to get permission to submit an app that uses optional packages and related sets.

注意

実行可能コードを含む省略可能なパッケージの一部である必要があります、関連セットします。Optional packages containing executable code must be part of a related set. 関連する一連の一部である場合を除き、省略可能なパッケージからコードを実行することはできません。You will not be able to execute code from an optional package unless it is part of a related set.

実行可能コードを使用した C++ オプション パッケージC++ Optional packages with executable code

C++オプション パッケージからコードを読み込むには、GitHub で OptionalPackageSample リポジトリを参照してください。To load code from a C++ optional package, see the OptionalPackageSample repository on GitHub. OptionalPackageDLL では、メイン パッケージから実行可能なコードを使用してプロジェクトを作成する方法を示します。The OptionalPackageDLL shows how to create a project with code that can be executed from the main package. MyMainApp プロジェクトでは、OptionalPackageDLL.dll ファイルからコードを読み込む方法を示します。The MyMainApp project demonstrates how to load code from the OptionalPackageDLL.dll file.

実行可能コードを使用した C# オプション パッケージC# Optional packages with executable code

C# でオプションのコード パッケージの作成を開始するには、次の手順に従い、ソリューションを構成してください。To get started building an optional code package in C#, follow the below steps to configure your solution:

  1. 最小バージョンを Windows 10 Fall Creators Update SDK (ビルド 16299) 以上に設定して新しい UWP アプリケーションを作成します。Create a new UWP application with the minimum version set to the Windows 10 Fall Creators Update SDK (Build 16299) or higher.

  2. 新しいオプションのコード パッケージ (ユニバーサル Windows) プロジェクトをソリューションに追加します。Add a new Optional Code Package (Universal Windows) project to the solution. [最小バージョン][ターゲット バージョン] がメイン アプリのバージョンに一致することを確認します。Ensure the Minimum Version and Target Version match that of your main app.

  3. アプリを Microsoft Store に申請する予定である場合は、両方のプロジェクトを右クリックして、[Microsoft Store] -> [アプリケーションをストアと関連付ける] の順に選択します。If you plan to submit your apps to the Store, right click on both projects and select Store -> Associate App with the Store...

  4. メイン アプリの Package.appxmanifest ファイルを開き、Identity Name 値を見つけます。Open the Package.appxmanifest file of the main app and find the Identity Name value. 次の手順のためにこの値を書き留めます。Make a note of this value for the next step.

  5. オプションのアプリ パッケージの Package.appxmanifest ファイルを開き、uap3:MainAppPackageDependency Name 値を見つけます。Open the optional app package's Package.appxmanifest file and find the uap3:MainAppPackageDependency Name value. uap3:MainAppPackageDependency Name 値を更新し、前の手順のメイン アプリ パッケージの Identity Name 値と一致するようにします。Update the uap3:MainAppPackageDependency Name value to match the Identity Name value of the main app package from the previous step.

    メイン アプリの Package.appxmanifest からの Identity の例を次に示します。Here's an example of the Identity from the main app's Package.appxmanifest.

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    オプションのアプリ ペッケージの uap3:MainPackageDependency は、メイン アプリの Identity に一致するように更新される必要があります。The optional app package's uap3:MainPackageDependency needs to be updated to match the main app's Identity.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Bundle.mapping.txt ファイルをメイン アプリに追加します。Add a Bundle.mapping.txt file to the main app. 関連セット」セクションの手順に従い、両方のアプリを含む関連セットを作成します。Follow the steps in this Related sets section to create a related set containing both apps.

  7. オプション パッケージ プロジェクトをビルドし、..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference にあるビルドの出力の Reference パッケージ フォルダーに移動します。Build the optional package project and then navigate to the package Reference folder in the output from the build found at ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. .winmd ファイル (手順 8) はアーキテクチャに依存しないため、Reference フォルダーへのパスで任意のアーキテクチャを選択できる点に注意してください。Note that you can choose any architecture in the path to the Reference folder since the .winmd file (step 8) is architecture independent.

  8. メイン アプリ プロジェクトからの参照を、このフォルダーにある .winmd ファイルに追加します。Add a reference from the main app project to the .winmd file found in this folder. オプション パッケージ プロジェクトで API サーフェイス領域を変更するたびに、この .winmd ファイルを更新する必要がありますEvery time you change the API surface area in the optional package project, this .winmd file must be updated. このリファレンスでは、コンパイルするために必要な情報を含むメイン アプリ プロジェクトが提供されます。This reference provides the main app project with the necessary information to compile.

  9. メイン アプリ プロジェクトで、プロジェクト ビルドのプロパティに移動し、[.NET ネイティブ ツール チェーンでコンパイルする] を選択します。In the main app project, navigate to the project build properties and select Compile with .NET Native tool chain. 現在、C# でのオプションのコード パッケージの作成では .NET Native でのデバッグのみがサポートされています。Currently, only debugging in .NET Native is supported for optional code package creation in C#. プロジェクトのデバッグ プロパティに移動し、[オプションのパッケージの配置] を選択します。Go to the project debug properties and select Deploy optional packages. これにより、メイン アプリ プロジェクトを配置する場合は、両方のパッケージが同期されるようになります。This will ensure that both packages are in sync whenever you deploy the main app project.

これらの手順が完了したら、WinRT コンポーネント マネージ プロジェクトであるかのように、オプション パッケージ プロジェクトにコードを追加できます。Once you're finished with these steps, you can add code to the optional package project as if it were a managed WinRT Component project. メイン アプリ プロジェクト内のコードにアクセスするには、オプション パッケージ プロジェクトで公開されたパブリック メソッドを呼び出します。To access the code in the main app project, call the public methods exposed in the optional package project.