複数の環境にまたがる X++​​ コードの記述、展開、デバッグ、トラブルシューティングを行うワークフロー

この記事は、複数の環境にまたがる X++​​ コードの記述、展開、デバッグ、トラブルシューティングを行うワークフローについて説明します。

注記

Dynamics 365 FastTrack Tech Talk シリーズのプレゼンテーションとデモを視聴して、さらに詳しく知ることができます。 財務と運用の統合開発エクスペリエンス | Dynamics 365 FastTrack技術トーク

まずは、複数の統合開発環境を備えた開発マシン 話題 から始めましょう。

複数の統合型開発環境

開発者のコンピュータを使用して、複数の統合開発環境に接続できます。 ただし、Visual Studio のインスタンスは、常に 1 つの環境にのみ接続でき、アクティブなメタデータ構成は 1 つだけです。 メニュー項目 拡張機能>Dynamics 365>メタデータの構成 を使用して、アクティブな構成を切り替えることができます。

アクティブなメタデータ構成を切り替えても、接続先の環境は変更されません。 Visual Studio メニュー項目 ツール>接続先 Dataverse から変更できます。

同じ財務と運用アプリケーションとプラットフォーム バージョンを持つ複数の環境で、同じ構成が有効な場合があります。 環境ごとにメタデータ構成を用意する方がまだ良いでしょう。 これらの構成には、カスタム メタデータ フォルダーや参照メタデータ フォルダーなどに共通の値を設定できます。 現在の構成と現在の接続によって、何がどの環境にデプロイされるかが決まります。

財務と運用アプリケーションとプラットフォームのバージョンが異なるさまざまな環境を、さまざまな目的で使用できます。 財務と運用の Visual Studio 拡張機能のバージョンは環境に合わせてください。

Visual Studio 拡張機能の任意のバージョンによって呼び出される X++​​ コンパイラ、ラベル コンパイラ、およびその他のツールは、現在として設定したアクティブな構成のアプリケーション バージョンに対応します。

財務と運用に最も古いバージョンを使用しているさまざまな対象アプリケーションとプラットフォームのバージョン間に重大な変更がない場合、Visual Studio 拡張バージョンにより、ビルドされた成果物が環境内のより高いランタイム バージョンと互換性があることが保証されます。

統合型開発環境と複数の開発者のコンピュータ

同じ開発者であるか異なる開発者であるかの話にかかわらず、複数の開発者コンピュータが使用されている場合、共通の統合開発環境が意図せず破損する可能性が高くなりますが、これは避けられません。 これは、同じ環境にすでにデプロイされている内容を考慮しない変更をデプロイするときに発生する可能性があります。

上記の状況は、たとえば Git ブランチの切り替えによってカスタム メタデータ コードの一貫性が失われた場合に、同じ開発マシンから発生する可能性もあります。

一貫性を保ち、統一された開発環境への意図しない変更を防ぐには、Azure DevOps と Git などのバージョン管理を使用して、各環境に何がデプロイされているかを参照できる記録を確実に残すことです。

重要

コードの健全性を保証し、履歴記録、チェックポイント、同期ポイントを提供するというバージョン管理の重要な役割は、いくら強調してもしすぎることはありません。

コードをデプロイしてデータベースを同期する

統合型開発環境でコードを展開し、データベースを同期する際のオプションを見てみましょう。

シナリオ 展開方法 ノート/メモ
すでに構築されている 1 つまたは複数のモジュールを展開する Dynamics 365>デプロイ>モデルのデプロイ... ダイアログを使用します。 オプションでモジュールのデータベースを同期できます。
フルビルドの一部として 1 つまたは複数のモジュールを展開する オプションを 接続されたオンライン環境に展開 に設定した後に >ビルド モデル ダイアログを介して開始します。 オプションで、同じ オプション タブ上で データベースを同期する を使用してモジュールのデータベースを同期することができます。
ソリューション エクスプローラーから X++ プロジェクトのビルド/リビルドの一部として 1 つまたは複数のモジュールを展開する オプション オンライン環境への変更を展開する を設定した後、プロジェクトまたはソリューションのビルド/リビルドを介して開始します。 これは、前回の成功したデプロイメント以降の変更のみをデプロイし、より高速です 含まれている変更に対して、必要に応じてデータベースを同期できます
ソリューション エクスプローラーから特定の X++ プロジェクトに 1 つのモジュールを展開します プロジェクトを右クリックして プロジェクトのモデルをデプロイします... を選択することで開始します。 これにより、前回の正常なデプロイメント以降の変更のみがデプロイされますが、モジュールのデータベースは同期されません。
モジュールを展開せずに、環境内のすべてのモジュールのデータベースを同期します Dynamics 365>データベースを同期します... ダイアログから開始します。 DBSync はすべてのモジュールに対して実行されるため、これは長時間実行される操作です。

  • 継続的な増分ビルドとデプロイメントは、大規模なモジュールの完全デプロイメントよりもはるかに高速になる可能性があります。
  • ISV またはその他のサードパーティから受け取ったバイナリのみのモジュールの場合は、完全な展開と DB 同期を実行します。
  • システム モジュールを変更せずに展開してください。

ISV などから受け取ったモジュールを追加する

X++ モジュールはさまざまな方法で受け取ることができます。 Zip ファイルまたは完全に展開可能なパッケージとして、個別またはモジュールのコレクションとして、コードまたはバイナリのみで、ISV ライセンスの有無にかかわらず共有できます。

これらすべてのケースでは、何らかのバージョン管理システムにチェックインしてバージョン管理する必要があります。 次に、それらを参照するためにアクティブなメタデータ構成を更新する必要があります。

追加 ボタンをクリックし、すべての参照モジュールの共通の親フォルダーに移動して、参照メタデータのフォルダ の新しい参照を追加して続行します。 たとえば、Module01 と Module02 を追加する場合は、それらを共通フォルダー (たとえば、E:\ISVModules) に配置し、後者の親フォルダーを参照します。

モジュールのライセンスを含めるタイミング

ライセンスは、モデル内の__License (2 つのアンダースコア) フォルダ (bin フォルダと同じ階層) に置くことで、直接含めて展開することができます。 このライセンスは、パッケージを展開するときに検証され、適用されます。

例えば、Module01 present at E:\ISVModules\Module01 に対してライセンスファイル licenseFile01 を追加したい場合は、子フォルダー E:\ISVModules\Module01__Licens を作成し、その中に E:\ISVModules\Module01__License\licenseFile01 としてファイルを配置します。 さらに、適用されたライセンスを有効にするには、拡張機能 の Dynamics 365 メニューから 完全DB同期 を実行する必要があります。

詳細は 独立系ソフトウェアベンダー (ISV) ライセンス を参照してください

完全に展開可能なパッケージ(Lifecycle Services レガシーパッケージ)を新しいフォーマットに変換する

完全に展開可能なパッケージ (Lifecycle Services のレガシー パッケージ) を、環境への展開と互換性のある新しい形式に変換する方法について説明します。

bin フォルダー内で ModelUtil.exe を見つけ、コマンド ラインから実行して使用状況を確認します。 次に、-convertToUnifiedPackage オプションを選択し、パッケージの zip と出力場所をパラメーターとして指定します。

注記

統合パッケージへの変換は、ファイル 'temp path\modelName\bin\fileName' は既に存在しますというメッセージで終了して失敗する場合があります。 これは、元のパッケージでモデルの複数のバージョンが識別された場合に発生します。

解決策: 元のパッケージを確認/再作成し、パッケージ内の場所 <OriginalPackage.zip>/AOSService/Packages/files/<model.version> に各モデルのバージョンが 1 つだけ存在することを確認します。

環境が管理モードの間にパッケージをデプロイする

OnlineDev/UDE 環境では、 管理モードでのパッケージのデプロイ (コードのみ) がサポートされます。 この回復パスは、データベースの同期をスキップします。 管理モードの終了を再試行する前に、修正プログラムを含むパッケージをデプロイできます。

詳細については、「 管理モードで統合開発環境にパッケージをデプロイする」を参照してください。

デプロイメントまたは DBSync のエラーのトラブルシューティング

パッケージの展開は、開発者のバグなどのさまざまな理由により、DB 同期を含むさまざまな段階で失敗する可能性があります。 操作ログをダウンロードするリンクは、Visual Studio 出力ペインで利用できます。 失敗した場合、または ツール> オプション> Power Platform Tools の設定を有効にした場合にダウンロードされます。

このログは次の手順に従って、Dataverse 組織からダウンロードすることもできます。

  1. Dataverse 組織にサインインする
  2. メインページで 財務と運用パッケージ マネージャー アプリ を探す
  3. アプリを選んで、左ペインから、操作履歴 を選びます
  4. 操作名 を選択してそれぞれのレコードを開き、操作ログ (operationlogs.zip ファイル) をダウンロードする

デプロイメントと DBSync は成功しましたが、変更内容を調査する必要があります

デプロイメントと DB 同期が成功した場合は、シナリオを実行し、予想される動作と実際の動作を比較して手がかりを探す必要があります。 この場合、Infolog が非常に役立つことがよくあります。

上記が不十分な場合は、メニュー Dynamics 365>デバッガーの起動 を使用して、統合環境で実行中の AOS プロセスにデバッガーをアタッチする必要があります。 今回はいくつかのブレークポイントを設定してシナリオを実行すると、より詳しい情報が得られます。

回帰が簡単かつ迅速に検出されるように、コードに対して X++ ユニット テストを記述することをお勧めします。 また、Application Insights を使用して、統合開発環境で実行されているアプリケーションを監視および診断することもできます。

可観測性の詳細: Application Insights を使用したモニタリングとテレメトリ

Microsoft サポートに提供する情報は何ですか?

マイクロソフトが調査するには、相関 ID、クライアント マシン名、タイムスタンプが必要です。 相関 ID は Visual Studio 出力ペインに表示されます。

ログは、C:\Users<user>\AppData\Local\Microsoft\Dynamics365\Logs の Microsoft.PowerPlatformVSExtension*.log ファイルにも書き込まれます。 さらに、C:\Users\AppData\Roaming\Microsoft Corporation\Microsoft® Visual Studio®<version>\VisualStudioD365Extension-*.log のようなパスに VisualStudioD365Extension*.log という名前のログ ファイルが生成されます。

参照

財務と運用の統合開発エクスペリエンス | Dynamics 365 FastTrack技術トーク
X++ コードの作成、展開、デバッグ
管理モードで統合開発環境にパッケージをデプロイする
統合された開発者エクスペリエンスにおけるユニットテスト
Power Platform 管理センター で環境を作成および管理します
Dynamics 365アプリを管理する