チュートリアル: X++ コードの作成、展開、デバッグ
財務ろ運用アプリの統合された開発者エクスペリエンスにより、ローカルの開発コンピューターでコードを作成し、クラウド サービス内でそれを実行できます。 これら 2 つの層 (ローカルとクラウド) の間には機能が分離されています。
- 開発層 - ローカル開発コンピューター上の財務と運用メタデータとX++ ソース コードが含まれます
- 実行層 - ビジネス データを保存し、X++ コードを実行するクラウド ホスト サイト
この記事では、次の方法について説明します:
- 実行可能な X++ クラスを作成してコンパイルする
- クラスをクラウド ランタイムに展開する
- 展開された X++ コードをデバッグする
例として、使用する実行可能な X++ クラスを開発することから始めましょう。 このクラスの唯一のタスクは、メッセージを情報ログに記録することです。 ここで重要なのは、実行可能クラスが何を行うかではなく、それをコンパイル、実行、デバッグする方法です。 X++ 言語についての詳細は、 プログラミング リファレンス を参照してください。
重要
Dynamics 365 FastTrack Tech Talk シリーズのプレゼンテーションとデモを視聴して、さらに詳しく知ることができます
前提条件
統合された開発環境にアクセスでき、開発マシンに Visual Studio ツール拡張機能がインストールおよび構成され、同じ環境に接続されている必要があります。 開発者マシン上のメタデータの変更を、接続された環境にデプロイされたままにしておくことが重要です。 詳細: 開発ツールのインストールと構成
モデルの作成
まずは Visual Studio でモデルを作成します。
Visual Studio を起動し、 コードなしで続行 を選択します。
メニュー オプション 拡張機能>Dynamics 365>モデル管理>モデルの作成... を選択します。このメニュー オプションが表示されない場合は、必要な Visual Studio 拡張機能がインストールされていません。
フォームにプロンプトが表示されたら「MyTestModel」というモデル名を入力し、残りの必須情報に関連情報を入力します。
フォームの次のステップで、新しいパッケージの作成 を選択します。
すべての参照モデルを選択します。 この簡単な例では、Application Platform パッケージと Application Foundation パッケージの依存関係を指定するだけで済みます。
パッケージが作成されるまで、次へ を複数回選択します。
実行可能な X++ クラスを追加してコンパイルする
次の手順に従って、Visual Studio にプロジェクトと X++ クラスを作成します。
- 実行可能なクラスを含むプロジェクトを Visual Studio に作成します。 ここではクラス名は重要ではありません。 この演習では、既定の名称名である FinanceOperations3 をそのまま使用します。
- プロジェクトを右クリックして 追加>新規アイテム を選択し、ソリューション エクスプローラー で実行可能なクラスをプロジェクトに追加します。
- Dynamics 365 の項目 の Code ニューから 実行可能なクラス を選択し、「MyRunnableClass」 とします。 Visual Studio 実行可能クラスのテンプレートを含むウィンドウが開き、実行可能クラスの実行時に呼び出される静的
main
メソッドが提供されます。 main
メソッドに以下の X++ コードを追加します。 ここではトークンの実装のみを提供しているため、文字列メッセージを情報ログに記録する呼び出しを追加します。
internal final class MyRunnableClass
{
public static void main(Args _args)
{
Info('Hello World from the Server Side');
}
}
クラスをコンパイルして、このコードにエラーが生じていないことを確認します。 コンパイルは、プロジェクトのコンテキスト メニューから ビルド を選択して行います。
クラスのデプロイ
これまで私たちが行ってきた作業はすべてクライアント側で行われました。 X++ コンパイラーと関連ツールはすべて、開発対象のアプリケーションを定義するメタデータとともにローカルにインストールされます。 Visual Studio では、メタデータの構成 メニュー項目を使用して、作業中の構成を管理することができます。
コードを実行するときが来ました。コードを実行するには、コードをサーバー (クラウド) 層にデプロイする必要があります。 この操作には、拡張>Dynamics 365>展開>オンライン環境にモデルを展開する メニュー項目を使用します。 表示されるダイアログで、展開するパッケージを選択できます。 この場合、「MyTestModel」を選択する必要があります。 パッケージのリストの上部にある検索フィールドを使用すると、そのモデルを簡単に見つけることができます。 ダイアログの下部で、参照されているパッケージを確認します。 これらのパッケージはマイクロソフトが提供するコードの一部であるため、サーバー層にすでにインストールされているため、展開する必要はありません。
この時点では、クラウド内の エンドポイント にアクセスしているため、既にログインしていない限り、認証して環境に接続する必要がある可能性があります。 Microsoft Dataverse 認証情報を使用して Dataverse に接続し、作業するソリューションを選択します。 少し待機すると認証が完了します。
重要
変更を統合開発環境に展開するにはさまざまな方法があります。
完全なモデルを展開するには、Dynamics 365>展開>モデルの展開 ... ダイアログから始めます。 必要に応じて、データベースの同期を選択できます。
完全なビルドの一部として、完全なモデルを展開します。 この展開は、接続されたオンライン環境に展開する オプションがオンの場合、Dynamics 365>モデルの構築 ダイアログから開始されます。 ツールは、同じ オプション タブの データベースを同期する 設定に基づいて、データベースを同期するかどうかを決定します。
ソリューション エクスプローラーからの増分ビルドの一部として、オンライン環境への変更の展開 を true に設定すると、最後に成功した展開以降の変更、またはこのビルドの一部として行われた変更のみが展開されます。 データベースの同期 に関するプロジェクト設定が適用されます。
プロジェクトを右クリックし、プロジェクトのモデルを展開する... を選択します。これにより、最後に成功した展開以降の変更のみが展開されますが、モジュールのデータベースは同期されません。
Dynamics 365>データベースの同期... を使用して、新しいものを展開せずにすべてのモデルのデータベースを同期します。
Visual Studio 出力ウィンドウの "FinOps Cloud Runtime" ドロップダウンに移動すると、デプロイメントの進行状況を追跡できます。 展開が完了すると、出力ウィンドウに表示されるリンクをクリックしてログ情報を確認できます。
展開されたコードをデバッグする
プロジェクト コードをコンパイルし、クラウド エンドポイント にアップロードすると、バイナリを実行できるようになります。 コンパイルされたクラス コードがすべて正常であることを確認するには、それをデバッグします。
Visual Studioで、パッケージおよび ApplicationPlatform および ApplicationFoundationパ ッケージのシンボルを読み込むデバッグ オプションを設定します。
オプションを設定するには、まず 拡張機能 メニューからオプションを開き、デバッグ タブに移動します。 デバッグ ページには、シンボルを読み込むためのオプションが表示されます。 ソリューション内の項目と、ApplicationFoundation および ApplicationPlatform パッケージも読み込むことを必ず指定してください。
Info
メソッドを呼び出す行にブレークポイントを設定し、ツールバーの緑色の矢印を押すか、F5 キーボード ショートカットを使用してデバッグを開始します。ブラウザ ウィンドウが開き、実行可能なクラスを指定する URL が表示されます。 しばらくすると、ブラウザーはクラス ランナーがアクティブであり、MyRunnableClass クラスを実行していることを示すフォームを読み込みます。 次に、デバッガはプロジェクトのシンボルを読み込み、実行はブレークポイントで停止します。
F5 キーを押して実行を続行すると、Visual Studio の情報ログ ペインに、
Info
メソッドの呼び出しを使用して情報ログに入力したメッセージが表示されていることを確認します。ブラウザ ウィンドウを更新すると、URL が再読み込みされます。
ブレークポイントがすぐに読み込まれることがわかります。 デバッガーはまだ実行中であり、デバッガーを再起動しなくても、出力メッセージが情報ログに 2 回目に表示されます。 このテクニックは、フォームを実行する場合に特に役立ちます。 ブラウザはいつでも更新でき、シンボルの読み込みによる遅延なくフォームが再度読み込まれます。
では試してみましょう。 独自のフォームを何度も書くのではなく、既存のフォームを使用します。 まず、フォームのレンダリングに使用される色付け (テーマ) を設定できる SysUserSetup フォームを使用します。 Menuitem (mi) (クラス ランナーを開始するメニュー項目を指定する部分) を変更することで、クラスを実行するのではなく、SysUserSetup フォームを開くように URL を変更します。 URL は次のようになります:
https://<environment>?prt=initial&debug=vs&activityid=\<unchanged>&cmp=DAT&mi=SysUserSetup
色を選択できるフォームが表示されます。
次に、フォームにブレークポイントを設定しましょう。
- 表示 メニューから アプリケーション エクスプローラー を開きます。
- アプリケーション エクスプローラー ウィンドウの検索バーに文字列
SysUserSetup type:"form"
を入力します。 - フォームを選択し、コードの表示 を選択してエディタを開き、このフォームのソース コードを表示します。
- そのフォームで、ThemeChooser コントロールの
selectionChange
メソッドにブレークポイントを設定します。 このコードは、ユーザーが新しいカラー テーマを選択するとトリガーされます。 - ブラウザ ウィンドウで、色付きの四角形の 1 つ (ここでは赤色の四角形) を選択します。 ブレークポイントに到達します。
- F10 または F5 キーを押して実行を続行します。 別の色付きの四角形がヒットすると、ブレークポイントが再びトリガーされます。
- ローカルを監視し、新しいブレークポイントを設定し、さまざまなデバッグ タスクを実行できます。
重要
統合環境で実行中の AOS プロセスにデバッガーを接続する場合は、Dynamics 365>デバッガーの起動 を使用します。
AOS を再起動せずにデバッガーをランタイムから切り離すには、 Stop の代わりに Detach を使用します。
Application Insights を使用して、統合開発環境で実行されるアプリケーションを監視および診断します。 可観測性の詳細: Application Insights を使用したモニタリングとテレメトリ
まとめ
要約として、この演習から得られる概要とポイントを次に示します。
まず、Visual Studio を使用して、単純な実行可能なクラスを作成しました。 コンパイル後、実行のためにパッケージをクラウド エンドポイント にプッシュする必要がありました。 X++ コードはクラウドでのみ実行できるため、展開の操作を実行しました。 展開が完了した後、ブレークポイントを設定し、デバッガーを実行してコードを実行しました。 次に、ブラウザからフォームを開始し、フォームの使用時にブレークポイントが正しくヒットし、そのためにデバッガーを再起動する必要がないことに気付きました。 実際、デバッガは、拡張機能 メニューの デバッガーの起動 オプションを使用して起動できます。 次に、ブラウザに URL を入力し、シナリオを実行してデバッグすると、ブレークポイントがヒットします。
参照
財務と運用の統合開発エクスペリエンス | Dynamics 365 FastTrack技術トーク
統合された開発者エクスペリエンスにおけるユニットテスト
Power Platform 管理センター で環境を作成および管理します
Dynamics 365アプリを管理する