Retail SDK の Visual Studio 2015 から Visual Studio 2017 への移行

この記事では、Retail ソフトウェア開発キット (SDK) の 10.0.11 リリースで何が変更されたか、それを Visual Studio 2017 に移行する方法、および拡張プロジェクト参照ライブラリを NuGet に更新する方法について説明します。

10.0.11 リリースの変更された機能

  • Retail SDK が Visual Studio 2017 に更新されました。
  • 参照が PackageReference (NuGet パッケージ参照) に更新されました。

Visual Studio 2017 をサポートするように更新された Retail SDK

Retail SDK が Visual Studio 2017 で実行されるようになりました。 リリース 10.0.11 以降では、Modern POS (MPOS)、Cloud POS (CPOS)、Commerce Runtime (CRT)、ヘッドレス コマース、プロキシ、およびハードウェア ステーション (HWS) を含むすべての Retail SDK コンポーネントを構築し、Visual Studio 2017 でのみコンパイルされます。 Visual Studio 2015 は使用できません。

PackageReference に更新された参照

Retail SDK リファレンス ライブラリは PackageReference を使用します。 すべての SDK サンプルは PackageReference モデルを使用します。 すべての SDK 参照ライブラリは NuGet パッケージに変換され、ライブラリは RetailSDK\Reference フォルダーから削除されます。 NuGet パッケージは、..\RetailSDK\Code\pkgs または ..\RetailSDK\pkgs フォルダーにあります。 次の例は、Microsoft.Dynamics.Commerce.Runtime への参照を示しています。

<ItemGroup>
    <PackageReference Include="Microsoft.Dynamics.Commerce.Runtime" Version="9.21.x" />
</ItemGroup>

影響対象

  • バージョン 10.0.11 以降で新しいマージされたパッケージ (つまり、拡張機能と既定の変更) を配置する場合は、ソリューションを Visual Studio 2017 の SDK に移行する必要があります。 ソリューションを移行して構築するためにコードを変更する必要はありません。
  • 拡張プロジェクトのハードコーディングされた参照は、PackageReference (NuGet 参照) に移行する必要があります。

Visual Studio 2017 の SDK に移行する

移行するには 2 つの方法があります。

  • Microsoft Dynamics Lifecycle Service (LCS) から新しい開発およびビルド環境を展開し、Visual Studio 2017 を手動でインストールします。 バージョン 10.0.13 以降、開発者およびテスト環境のプロビジョニングに使用する VHD テンプレートには、Visual Studio 2017 が含まれます。 詳細については、X++ の Visual Studio 2017 要件を参照してください。

  • 既存の開発環境で拡張機能を Visual Studio 2017 に更新します。

    • 次のワークロードを使用して、Visual Studio 2017 Community、Professional、または Enterprise edition を既存のビルドおよび開発仮想マシン (VM) にインストールします。

      • .NET デスクトップ開発
      • ユニバーサル Windows プラットフォーム開発
      • ASP.NET および Web 開発
      • Azure 開発
      • Node.js 開発
      • .NET Core クロスプラットフォーム開発
      • .NET を使用したモバイル開発 (ハイブリッド アプリの開発に必要)
    • Visual Studio 2017 を手動でインストールする場合は、開発 VM に次の前提条件をインストールします。 これらの前提条件をインストールしない場合、コンパイルが失敗し、.NET SDK およびランタイム エラーが生成されます。

Visual Studio で、ツール > ツールと機能を取得に移動します。 個々のコンポーネント タブを選択し、SDK、ライブラリ、およびフレームワークからの TypeScript 2.2 SDK セクションを選択してインストールします。 Visual Studio 2017 には、既定として Typescript 3.1 があります。 POS アプリは Typescript 2.2.2 に基づいているため、2.2.2 も含める必要があります。

SDK のコンパイルが失敗し、「現在の .NET SDK は .NET Standard 2.0 のターゲット設定をサポートしていません」というエラー メッセージが表示された場合は、x86 バージョンの .NET 2.1 SDK とランタイムをインストールしてみてください。

Retail SDK をビルドする

次の手順に従って、Retail SDK をビルドします。

  1. Visual Studio 2017 の開発者コマンド プロンプトまたは MSBuild 15.0 コマンド プロンプトを開きます。 SDK フォルダーのルート (dirs.proj ファイルがある場所) から msbuild /t:rebuild を実行して、標準の Retail SDK をビルドします。 ほとんどのインストールでは、フォルダーは RetailSDK\dirs.proj または RetailSDK\Code\dirs.proj です。
  2. 拡張機能を新しい SDK フォルダーにマージします。 拡張機能を SDK と統合する方法については、Retail チャンネル拡張機能を最新のRetail SDKにアップグレードするを参照してください。
  3. 拡張機能がマージされたら、NuGet パッケージを使用して、PackageReference へのすべてのハードコーディングされた参照を更新します。

CRT およびヘッドレス コマース拡張プロジェクトの参照を更新する

    1. Retail SDK のサンプル CRT プロジェクト (..\RetailSDK\SampleExtensions\CommerceRuntime) をテンプレートとして使用し、CRT 拡張機能をこの新しい形式に移行します。 新しいサンプルは、プロジェクトの依存関係 (NuGet 参照) に Visual Studio 2017 形式を使用します。
  1. NuGet パッケージ マネージャーで、ローカルの NuGet リポジトリ フォルダーを追加します。 ローカル NuGet リポジトリの作成方法の詳細については、NuGet パッケージ マネージャーを使用して Visual Studio にパッケージをインストールして管理するを参照してください。

    メモ

    すべての SDK 参照ライブラリは NuGet パッケージに変換され、ライブラリは RetailSDK\Reference フォルダーから削除されます。 NuGet パッケージは、..\RetailSDK\Code\pkgs または ..\RetailSDK\pkgs フォルダーにあります。

  2. NuGet パッケージ参照をプロジェクトに追加するには、プロジェクトの依存関係ノードを右クリックし、NuGet パッケージの管理を選択します。

  3. NuGet パッケージ マネージャーで、必要なパッケージを追加します。 たとえば、プロジェクトで CRT ライブラリ リファレンスが必要な場合は、Microsoft.Dynamics.Commerce.Runtime NuGet パッケージを追加します。 NuGet パッケージ参照が追加されると、次の例に示すように、プロジェクト ファイルがパッケージ参照で更新されます。

    <ItemGroup>
        <PackageReference Include="Microsoft.Dynamics.Commerce.Runtime" Version="9.21.x" />
    </ItemGroup>
    

メモ

PackageReference はフローティング バージョンもサポートしており、バージョンはフローティング バージョン番号で更新されます。 フローティング バージョンの詳細については、NuGet がパッケージの依存関係を解決する方法を参照してください。 フローティング バージョンを使用すると、NuGet が自動的に最新バージョンに解決されるため、拡張機能は更新のたびに参照を更新する必要がなくなります。 たとえば、パッケージ参照は <PackageReference Include="Microsoft.Dynamics.Commerce.Runtime" Version="9.21.x" /> のようになります。

同様の方法で、すべてのヘッドレス コマース API、プロキシ、およびハードウェア ステーション拡張プロジェクトの参照を更新します。

ヘッドレス コマース API とプロキシ拡張機能

ヘッドレス コマース API とプロキシ拡張機能を、バージョン 10.0.12 でリリースされた新しい拡張モデルに移行します。 バージョン 10.0.12 以降では、同じヘッドレス コマース拡張ライブラリをオフラインで使用できます。別の C# プロキシ ライブラリは必要ありませんが、クライアント typescript プロキシは引き続き必要です。 詳細については、新しいヘッドレス コマース拡張 API を作成するを参照してください。 ヘッドレス コマースとプロキシ拡張ライブラリは、古い拡張モデルが廃止されるまで引き続き機能するため、この手順は推奨されますが、必須ではありません。

影響を受けないもの

以前のバージョンの Retail SDK で記述された拡張コードを変更する必要はありません。 参照を更新し、新しい SDK に対してのみ再コンパイルする必要があります。

Azure Pipelines に、Retail SDK ビルド用に設定されたビルド マシン エージェントに基づいていない既存のパイプラインがある場合は、引き続き機能します。 この変更が必要な場合は、MSBuild タスク ステップで、MSBuild バージョンを 15.0 に変更します。

ビルド マシンからビルド VM とビルド エージェントを使用せずに、 Azure DevOps でビルド パイプラインを設定する手順に従います。 詳細については、Commerce SDK ビルド パイプラインを設定を参照してください。

ビルド マシン エージェントを使用した Azure DevOps パイプライン

Azure DevOps パイプラインで MSBuild に使用されるビルド マシンと同じものを、SDK バージョン 10.0.11 で使用できます。 SDK のビルド マシンで次の手順を実行します。

  1. ビルド マシンに Visual Studio 2017 をインストールします。
  2. 必要に応じて、ビルド マシンで Visual Studio 2017 の開発者コマンド プロンプトから msbuild (msbuild バージョン 15.0) を実行します。 Visual Studio 2017 の開発者コマンド プロンプトを開き、Retail SDK ルート フォルダーに移動します。 msbuild dirs.proj と入力し、MSBuild が正常に完了することを確認します。
  3. ビルド マシンで、MSBuild 15.0 の環境変数を追加します。 システム プロパティ > 環境変数 > システム変数に移動します。 パス変数変数を選択し、編集を選択します。 環境変数の編集ウィンドウで、新規を選択し、MSBuild 15.0 のパス変数を追加します。 これをパス変数のリストの一番上に移動します。 たとえば、C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin のようなパスです。 パスは、Visual Studio 2017 をインストールした場所に基づいて変わります。 Visual Studio 2017 の開発者コマンド プロンプトから MSBuild のパスを取得するには、MSBuild の場所と入力します。
  • コンフィギュレーション情報を検証するには
    • 通常の「CMD」ウィンドウを開きます (Visual Studio コマンド プロンプトではありません)。
    • msbuild /バージョンを実行します。
    • リストの最初の結果が MSBuild バージョンが 15.9.* 以降であることを確認します。
  1. ビルド マシンで Azure DevOps ビルド エージェントを再起動します。
  2. Azure DevOps パイプラインで、MSBuild のバージョンを 15.0 以降に変更します。

Azure DevOps パイプラインからのビルドが NuGet エラーで失敗した場合、Azure パイプラインが NuGet 復元に MSBuild バージョン 15.0 を使用していないか、パッケージ参照モデルを使用するように拡張プロジェクトがアップグレードされていない可能性があります。