クライアント アプリケーションで、XRM ツール共通ログイン コントロールを使用する

Microsoft Dataverse 認証、資格情報の保管および検索、および診断ロギングのロジックが共通ログイン コントロールに組み込まれ、自分の Dataverse 用 Windows (WPF) クライアント アプリケーションで、これらの機能を素早く活用できます。 共通ログイン コントロールは、Microsoft.Xrm.Tooling.CrmConnectControl の実装部分です。 コントロールのイメージを以下に示します。

XRM ツール共通ログイン コントロール

前提条件

  • .NET Framework バージョン 4.8 またはそれ以降
  • Visual Studio 2019 またはそれ以降
  • 必要な NuGet パッケージをダウンロードできるインターネット アクセス
  • Dataverse テスト環境へのネットワーク アクセスと、有効なログオン資格情報

共通ログイン コントロールを使用する WPF アプリケーションの作成

認証、資格情報の保管と再利用、および既定のトレースまたはロギングなどの、共通ログイン コントロールおよび基本コード活用する Windows Presentation Foundation (WPF) アプリケーションを作成するプロセスを体験しましょう。

完成したアプリケーションは次の場所にあります: AppWithLoginControl。

ログイン コントロールを使用してプロジェクトを作成する

新しい Visual Studio ソリューションと WPF プロジェクトを作成することから始めて、そこにログイン コントロール XAML コードを追加します。

  1. Visual Studio を起動し、Windows C# デスクトップ アプリ用の WPF アプリ (.NET Framework) テンプレートを使用して新規プロジェクトを作成します。

    テンプレートから新規プロジェクトを作成

  2. プロジェクトを構成し、.NET 4.8 フレームワークをターゲットにします。

    プロジェクト構成

  3. プロジェクト > 管理 NuGet パッケージを選択します。 次のパッケージを参照または検索し、それらを (以下に示す順序で) プロジェクトにインストールします。

    • Microsoft.CrmSdk.XrmTooling.CoreAssembly
    • Microsoft.CrmSdk.XrmTooling.WpfControls

    NuGet パッケージのインストール

  4. ソリューション エクスプローラーでプロジェクト名を右クリックし、追加 > 新しいフォルダー を選択します。

  5. フォルダーに「LoginUX」という名前を付けてからログイン コントロール XAML コード そのフォルダーにコピーします。 ExampleLoginForm.xaml ファイルをファイル エクスプローラーから Visual Studio プロジェクト フォルダーにドラッグ アンド ドロップすると、関連する C# ファイルもプロジェクトに表示できます。

    LoginUX フォルダー

  6. ソリューションのビルドをテストします (F6)。 エラーや警告なしでビルドする必要があります。

ログイン コントロールをアプリに接続する

次に、ログイン コントロールをアプリケーションに接続します。

  1. ソリューション エクスプローラーで ExampleLoginForm.xaml をダブルクリックします。 デザイナーにコントロールのイメージが表示されます。

    UI デザイナーでのログイン コントロール

  2. MainWindow.xaml デザイナー タブに切り替えます。デザイナーに Button コントロールを追加し、Name プロパティと Common Content プロパティの値をそれぞれ btnSignIn と Dataverse へのサインイン に設定します。

    ボタンを追加する

  3. ボタンをダブルクリックして、ボタンのクリック イベントにコードを追加します。 MainWindow クラス ファイルのコード編集ウィンドウが表示されます。

  4. 空の Button_Click イベント ハンドラー メソッドをこのコード (下) に置き替えてログイン コントロールを呼出し、Dataverse 接続オブジェクトのインスタンスを作成します。

private void Button_Click(object sender, RoutedEventArgs e)
{
    // Instantiate the login control.  
    ExampleLoginForm ctrl = new ExampleLoginForm();

    // Wire the button click event to the login response.   
    ctrl.ConnectionToCrmCompleted += ctrl_ConnectionToCrmCompleted;

    // Show the login control.   
    ctrl.ShowDialog();

    // Check that a web service connection is returned and the service is ready.     
    if (ctrl.CrmConnectionMgr != null && ctrl.CrmConnectionMgr.CrmSvc != null && ctrl.CrmConnectionMgr.CrmSvc.IsReady)
    {
        // Display the Dataverse version and connected environment name  
        MessageBox.Show("Connected to Dataverse version: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgVersion.ToString() +
            " Organization: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgUniqueName, "Connection Status");
        // TODO Additional web service operations can be performed here
    }
    else
    {
        MessageBox.Show("Cannot connect; try again!", "Connection Status");
    }
}
  1. ctrl_ConnectionToCrmCompleted イベント ハンドラー メソッドの定義を Button_Click イベント ハンドラー メソッドの下の同じインデント レベルにある MainWindow クラスに追加します。
private void ctrl_ConnectionToCrmCompleted(object sender, EventArgs e)
{
    if (sender is ExampleLoginForm)
    {
        this.Dispatcher.Invoke(() =>
        {
            ((ExampleLoginForm)sender).Close();
        });
    }
}
  1. ExampleLoginForm クラスが解決されるように、C# ファイルの先頭に using ステートメントを追加します。
using PowerApps.Samples.LoginUX;
  1. プログラムをビルドします (F6)。 エラーや警告なしでビルドする必要があります。

プログラムをテストする

次に、プログラムを実行して動作をテストします。

  1. プログラムを実行します (F5)。

  2. Dataverse にサインイン ボタンを選択します。 ログイン コントロールが表示されます。

  3. 以下の図では、Office 365 オンライン環境を選択し、利用可能な組織のリストを表示 をチェックして、ユーザーがメンバーである環境のリストを表示しています。

    Office 365 ログオン

  4. ログインを選択します。

  5. ログイン情報を求められたら、入力します。 入力するアカウントは someone@my-env.onmicrosoft.com 形式です。

  6. 環境のリストがコントロールに表示されます。 1 つ選択し、ログイン をもう一度選択します。

  7. Dataverse バージョンと組織名を含むつながりの状態のダイアログが表示されます。

    接続の状態

  8. OK をクリックします。

  9. 再び Dataverse にサインイン をクリックすると、アプリケーションから、最後のサインイン活動から保存された資格情報選択するか、資格情報を再入力するように求められます。

  10. テストが完了したら、プログラム ウィンドウを閉じます。

参照

XRM ツールを使用して Windows のクライアント アプリケーションを作成