【Dataverse】VSCodeによるDataverse Plugin

  • VScodeのPlugin
    Power Platform Tools
    Japanese Language Pack for Visual Studio Code
    C# Dev Kit
    C# ※自動?
    .NET Install Tool ※自動?
  • VScodeの開発1(失敗例)

    ターミナル
    mkdir MyDataversePlugin
    cd MyDataversePlugin
    pac plugin init --skip-signing ※これでプロジェクトが自動作成 ただし、この方法は署名なし
    dotnet add package Microsoft.CrmSdk.CoreAssemblies
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly
    

    C#で開発します。

    ターミナル
    dotnet build -c Release
    

    ビルドが成功すると以下にdllファイルが作成される。
    C:\Users\ユーザ名\MyDataversePlugin\bin\Release\net462\publish\MyDataversePlugin.dll

    Plug-in Registration Tool (PRT) を起動します。

    ターミナル
    pac tool prt ※コマンド実行後にWindowsに自動インストール
    サインインは「Office365」、「Display list of avaiable organizations」を選択
    

    この後にアセンブリを登録しようとすると署名エラーとなってしまう。

  • VScodeの開発2(失敗例)

    ターミナル
    mkdir MyDataversePlugin
    cd MyDataversePlugin
    dotnet new classlib -lang C# -o . ※失敗例1との違いはココ
    dotnet add package Microsoft.CrmSdk.CoreAssemblies
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly
    

    C#で開発します。

    ターミナル
    dotnet build -c Release
    

    ビルドが成功すると以下にdllファイルが作成される。
    C:\Users\ユーザ名\MyDataversePlugin\bin\Release\net462\publish\MyDataversePlugin.dll

    Plug-in Registration Tool (PRT) を起動します。

    ターミナル
    pac tool prt ※コマンド実行後にWindowsに自動インストール
    サインインは「Office365」、「Display list of avaiable organizations」を選択
    

    この後にアセンブリを登録しようとすると参照ライブラリのバージョンでエラーとなってしまう。

  • 失敗原因

    ビルド時に作成されるフォルダが「net462」となっているように
    .NETFrameworkが4.62になっている必要があるようです。
    VScodeインストールした際に.NET9.0をインストールしていました。

    .NETFrameworkはWindows専用であるのに対し、
    .NETはクロスプラットフォーム(Windows, Linux, macOS)の違いがあるようです。


    またアセンブリにもパスワードなしの署名が必要なようです。


    以下の参照は不要。
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly

  • 参考サイト
    https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/build-and-package
    「プラグインおよびカスタム ワークフロー活動アセンブリ プロジェクトは、.NET Framework 4.6.2 をターゲットにする必要があります」の記述あり。

    https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/tutorial-write-plug-in
    上記のサイトを見るとVisual Studioを使っていたのでVisual Studio2022を使うことにしました。
    プロジェクトを作成する際、.NETクラスライブラリではなく、
    .NETFrameworkクラスライブラリプロジェクトを作成することに注意。

【PowerShell】オレオレ証明書の作成

  • オレオレ証明書作成
    Windows11のPower Shellを使ってオレオレ証明書を作成します。
    以下の構文だと特定のドメインに対して有効期間10年。
    「Cert:\CurrentUser\My」は本当にそのままです。

    New-SelfSignedCertificate -Subject "CN=example.com" -CertStoreLocation Cert:\CurrentUser\My -DnsName example.com -NotAfter (Get-Date).AddYears(10)
    
  • 作成した証明書の確認方法
    ファイル名を指定して実行(Windows+R)を開き、「certmgr.msc」を実行します。
    「証明書」-「個人」に作成した証明書が保存されています。
  • pfxファイルの作成方法
    証明書を選択し、右クリックし、「すべてのタクス」-「エクスポート」を選択します。
    「はい、秘密キーをエクスポートします」を選択します。
    「証明のパスにある証明書を可能であればすべてを含む」を選択します。
    「証明書のプライバシーを有効にする」を選択します。

    ファイル名とパスワードを入力します。
    例:zarea0614cert、ユーザー名数字記号
    エクスポート後は「C:\Windows\System32」に「zarea0614cert.pfx」が出力されます。