Share via


コード生成ツールを使用して事前バインド型エンティティ クラスを作成する

重要

Dataverse を使用している場合は、Power Platform CLI pac modelbuilder ビルド コマンド を使用する必要があります。 CrmSvcUtil.exe は引き続き Dataverse で動作しますが、エクスペリエンスが向上し、新機能が追加されるため、pac modelbuilder build コマンドの使用をお勧めします。 Dataverse を使用した SDK for .NET の事前バインド クラスの生成に関する詳細

Power Platform CLIは Dynamics 365 Customer Engagement (on-premises) では使用できないため、CrmSvcUtil.exe を使用する必要があります。

CrmSvcUtil.exe は、Dynamics 365 for Customer Engagement と使用するコマンドライン コード生成ツールです。 このツールは、 Dynamics 365 Customer Engagement (on-premises) で使用されるエンティティ データ モデルを表す、事前バインドされた .NET Framework クラスを生成します。

コード生成ツール (CrmSvcUtil.exe) が Microsoft.CrmSdk.CoreTools NuGet パッケージの一部として配布されます。 コード生成ツール (CrmSvcUtil.exe) のダウンロードについては Dataverse 開発ツール を参照してください。

エンティティ クラスの生成

CrmSvcUtil ツールは、環境内のテーブル用の厳密に型指定されたクラスが含まれる Microsoft Visual C# または Visual Basic .NET 出力ファイルを作成します。 これには、カスタム テーブルと列が含まれます。 この出力ファイルには各テーブルの Entity から派生した 1 つのクラスが含まれており、ユーザー定義コードを作成する作業を容易にする事前バインドと Visual Studio でサポートする IntelliSense を提供します。 生成されるクラスは部分クラスであり、別のファイルにユーザー定義のビジネス ロジックを作成することで拡張できます。 このツールの拡張機能を記述して、その機能をカスタマイズすることもできます。 詳細については、コード生成ツールの拡張機能の作成 を参照してください。

OrganizationServiceContext の生成

また、このツールを使用して、EDM でのエンティティ コンテナーとして動作する OrganizationServiceContext からの派生クラスを生成することもできます。 このサービス コンテキストを利用して、変更内容を追跡したり、ID、同時実行、および関連付けを管理したりすることができます。 また、このクラスは、Dynamics 365 Customer Engagement (on-premises) に対してレテーブル行の挿入、更新、および削除を実行する SaveChanges() メソッドも提供します。 詳細については、 OrganizationServiceContext の使用を参照してください。

生成されたクラスの使用

コード生成ツールによって作成されるクラスは、クラス ライブラリに組み込むことで、Dynamics 365 Customer Engagement (on-premises) を使用するプロジェクトから参照できるように設計されています。 ツールを使用してクラス ファイルを生成した後で、そのファイルを Visual Studio プロジェクトに追加する必要があります。 また、生成したクラスが依存する複数のアセンブリへの参照を追加する必要があります。

次は、生成したコード ファイルを使用するときにこのプロジェクトで参照する必要があるアセンブリの一覧です。

  • Microsoft.Crm.Sdk.Proxy.dll
  • Microsoft.Xrm.Sdk.dll

これらのアセンブリは、Microsoft.CrmSdk.CoreAssemblies または Microsoft.PowerPlatform.Dataverse.Client NuGet パッケージに含まれます。 これらの NuGet パッケージのひとつを使用して、必須アセンブリを Visual Studio プロジェクトへ追加します。

コード生成ツールの実行

コード生成ツールは複数のパラメーターを受け取ります。その値に基づいて、作成するファイルの内容が決定されます。 パラメーターは、ツールを実行するときにコマンドラインから入力するか、.NET に接続されたアプリケーションの構成ファイルに記述して渡すことができます。

インストールされているフォルダーから CrmSvcUtil.exe アプリケーションを実行します。 このツールを別の場所のフォルダーから実行する場合は、Microsoft.Xrm.Sdk.dll アセンブリのコピーが同じフォルダーにあることを確認します。

次のサンプルは Dynamics 365 Customer Engagement (on-premises) のコマンド ラインからツールを実行するときの構文を示しています。 対話型環境を使用するには、次のオプションを指定するだけで行えます。

CrmSvcUtil.exe /interactivelogin ^
/out:<outputFilename>.cs ^
/namespace:<outputNamespace> ^
/serviceContextName:<serviceContextName> ^
/generateActions

interactivelogin (ショートカット il) オプションでツールを実行する時に、ダイアログを開いて、ログイン資格情報および接続したいサーバを指定することができます。

コマンド ラインで直接渡すパラメータまたは、新しいクラスを生成するために実行できるバッチ (.bat) ファイルを指定することもできます。

CrmSvcUtil.exe ^
/url:https://<organizationUrlName>.api.crm.dynamics.com/XRMServices/2011/Organization.svc ^
/out:<outputFilename>.cs ^
/username:<username> ^
/password:<password> ^
/namespace:<outputNamespace> ^
/serviceContextName:<serviceContextName>

たとえば、次のようなものです。

CrmSvcUtil.exe ^
/url:https://myorganization.api.crm.dynamics.com/XRMServices/2011/Organization.svc ^
/out:MyOrganizationSdkTypes.cs ^
/username:you@yourOrg.onmicrosoft.com ^
/password:myp455w0rd ^
/namespace:MyOrg ^
/serviceContextName:MyContext

メモ

例では、読みやすくするために、カラット (^) 文字を使用してパラメーターのリストを分割しています。 メモ帳を使用して引数でコマンド パラメータを構成し、コマンド ラインに貼り付けることができます。

  • username および password パラメータには、Dynamics 365 Customer Engagement (on-premises) 環境にサインインするために使用するユーザー名とパスワードを入力します。
  • url パラメータは、設定 を選択し、カスタマイズ に移動して、開発者リソース を選択すると、Power Apps で正しい URL を検索することができます。 URL は組織のサービスの下に表示されます。

クレームベース認証

次の例は、クレームベース認証でコード生成ツールを使用する方法を示します。 ユーザー名とパスワードは省略可能なパラメーターであることに注意してください。 ターゲットの Dynamics 365 Customer Engagement (on-premises) アプリ サーバー用の資格情報が Windows 資格情報保管サービスに保管されている場合は、コード生成ツールを実行するときに資格情報を指定する必要はありません。

Active Directory

次の例は、Active Directory でクレーム認証を使用してコード生成ツールを実行する方法を示しています。 このサンプル サーバーはTransport Layer Security (TLS)またはSecure Sockets Layer (SSL)を使用しているので、httpsを使用することに注意してください。

CrmSvcUtil.exe ^
/url:https://myport:555/MyOrg/XRMServices/2011/Organization.svc ^
/out:GeneratedCode.cs ^
/username:administrator ^
/password:myp455w0rd

インターネットに接続する展開 (IFD)

次のサンプルは、IFD でクレーム認証を使用してコード生成ツールを実行する方法を示しています。

CrmSvcUtil.exe ^
/url:https://myorg.crm.com:555/XRMServices/2011/Organization.svc ^
/out:GeneratedCode.cs ^
/username:administrator ^
/password:myp455w0rd

Parameters

サポートされている最新のコマンド ライン パラメーターを表示するには、次のコマンドを使用します。

CrmSvcUtil.exe /?  

次の表は、このトピックが最後に更新された時点でのコード生成ツールのパラメーターと、コマンド パラメーターの使用方法の簡単な説明を示しています。

パラメーター ショートカット Description
url 組織サービスの URL。 interactivelogin を使わない限り必須です
out o 生成するコードのファイル名。 Required
language l コードを生成する言語。 これは、「CS」または「VB」のいずれかになります。 既定値は「CS」です。
namespace n 生成するコードの名前空間。 既定値はグローバル名前空間です。
username u 認証用のサーバーに接続するときに使用するユーザー名。
password p 認証用のサーバーに接続するときに使用するパスワード。
domain d 設置型サーバーに接続するときに認証先となるドメイン。
servicecontextname 生成されたコンテキスト クラスの名前。 値を指定しない場合は、サービス コンテキストが作成されません。
help ? コマンドの使用方法に関する情報を表示します。
nologo 実行時にメッセージを表示しません。
generateActions 定義アクションの要求クラスと応答クラスを生成します。
interactivelogin il 使用すると、Dynamics 365 Customer Engagement (on-premises) サービスにログインするためのダイアログが表示されます。 コマンド ラインで指定された他のすべての接続関連パラメーターは無視されます。
connectionstring connstr Dynamics 365 Customer Engagement (on-premises) の組織に接続するための、単一文字列として提供される情報を格納します。 コマンド ラインで指定された他のすべての接続関連パラメーターは無視されます。 詳細については、XRM ツールの接続文字列を使用する を参照してください。
suppressGeneratedCodeAttribute sgca すべてのクラスで GeneratedCodeAttribute を抑制します
emitfieldsclasses emitfc コード生成時にエンティティ別のすべてのフィールド名を含むエンティティごとのフィールドクラスを生成します
entitynamesfilter Dynamics 365 Customer Engagement (on-premises) からデータを読み取る時に取得されるエンティティのリストをフィルター処理します 。 次の形式を使用して、セミコロンで区切られたリストとして渡されます: <entitylogicalname>;<entitylogicalname>;...
messagenamesfilter Dynamics 365 Customer Engagement (on-premises) からデータを読み取る時に取得されるメッセージのリストをフィルター処理します 。 セミコロンで区切られたリストとして渡されます。 必須メッセージ (Create、Update、Delete、Retrieve、RetrieveMultiple、Associate、および DisAssociate) が常に含まれます。 * は、文字列で始まる、または文字列で終わるすべてのメッセージを許可するメッセージを進めたり追跡するために使用できます。 リストは次の形式をとります: <messagename>;<messagename>;...
splitfiles 出力をタイプ別にファイルに分割し、エンティティ、メッセージ、およびオプションセット別に整理します。 有効にすると、out プロパティは無視され、代わりに outdirectory が必要になります
outdirectory outdir エンティティ、メッセージ、オプション ファイルを指定した出力ディレクトリに書き込みます。 splitfiles オプションでのみ有効
entitytypesfolder エンティティを含むフォルダー名です。 既定のフォルダー名は、"エンティティ" です。 splitfiles オプションでのみ有効。
messagestypesfolder メッセージを含むフォルダー名です。 デフォルト名は "メッセージ" です。 splitfiles オプションでのみ有効
optionsetstypesfolder Optionsets を含むフォルダー名です。 デフォルト名は "OptionSets" です。 splitfiles オプションでのみ有効
generateGlobalOptionSets すべてのグローバル オプション セットを生成します。 注: エンティティにグローバル オプション セットへの参照が含まれる場合は、この切り替えが存在しなくても、出力されます
legacyMode 古いカスタム拡張機能との互換性をサポートするために、発行オプションセットと多くの新しいコード機能を無効にします

構成ファイルの使用

CrmSvcUtil.exe.config 構成ファイルは、CrmSvcUtil.exe ツールと同じフォルダーに存在する必要があります。 構成ファイルでは、 appSettings セクションに標準のキー/値ペアを使用します。 ただし、コマンドラインから値を入力した場合は、その値が構成ファイル内の値の代わりに使用されます。 アプリケーションの構成ファイルにあるキー/値ペアのうち、想定されているパラメーターのいずれにも一致しないものは無視されます。

url パラメーターと namespace パラメーターは、構成ファイルに記述しないでください。 これらは、CrmSvcUtil.exe ツールの実行中にコマンドラインから入力する必要があります。

次のサンプルは、ショートカット キーを使用して、アプリケーション構成ファイルに出力ファイルとドメイン名のパラメーターを構成する方法を示しています。

<appSettings>    
    <add key="o" value="CrmProxy.cs"/>    
    <add key="d" value="mydomain"/>
</appSettings>  

トレースの有効化

ツール実行中のトレースを有効にするには、次の行を構成ファイルに追加します。

<system.diagnostics>   
   <trace autoflush="false" indentsize="4">   
      <listeners>   
         <add name="configConsoleListener" type="System.Diagnostics.ConsoleTraceListener">   
            <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" />   
         </add>   
      </listeners>   
   </trace>   
</system.diagnostics>  

サポートされているトレース オプションの詳細については、 XRMツールのトレースの構成参照してください。

コミュニティ ツール

事前バインド ジェネレーター は、XrmToolbox コミュニティからのツールです。 コミュニティ開発ツールの詳細については、開発者のツールとリソーストピックを参照してください。

メモ

コミュニティ ツールは Microsoft の製品ではなく、コミュニティ ツールに対するサポートは提供されません。 このツールに関するご質問は、その発行元にお問い合わせください。 詳細: XrmToolBox

関連情報

Dynamics 365 Customer Engagement (on-premises) の開発者ツール
コード生成ツール用の拡張機能の作成
遅延バインド および事前バインド プログラミング