事前バインディング用のエンティティクラス生成ツール crmsvcutil.exe を使用するメモを記載します。

動作確認は次の環境で行っています

  • Windows Server 2008 R2 上に構築したDynamics CRM 2011 UR 3 オールインワン環境

コード生成ツールcrmsvcutil.exe は Dynamics CRM 2011 の SDK に付属されています。

1.使い方

1.1 必要なdll

crmsvcutil.exe は次の2つの dll が必要です。

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

上記dll は SDK の crmsvcutil.exe と同じbin フォルダに格納されているため、crmsvcutil.exe を sdk の既定の場所から実行する場合はdll参照の問題はありません。

1.2 必須パラメータ

次のパラメタは必須です。

  • /url
  • /out

/url は Organization.svc への URL, /out は、生成するファイル名です。crmsvcutil.exe はアプリケーション構成ファイルを作成することでオプションを省略できるようになります。詳細は次の参考URL参照。紹介したURLでは、各パラメタの説明はOnPremise,IFD,Onilne の場合のパラメタ指定のサンプルも掲載されています。

コード生成ツール (CrmSvcUtil.exe) を使用して事前バインド型エンティティ クラスを作成する
http://technet.microsoft.com/en-us/library/gg327844.aspx
http://technet.microsoft.com/ja-jp/library/gg327844.aspx

1.3 コード生成のカスタマイズ

crmsvcutil.exe によるコード生成はカスタマイズ可能です。日本のDynamics CRM ブログにSDKに付属するコード生成カスタマイズサンプルの説明と補足が掲載されています。

Dynamics CRM 2011 CrmSvcUtil ツールとその拡張方法 (フィルタリング)
http://blogs.msdn.com/b/crmjapan/archive/2011/08/03/dynamics-crm-2011-crmsvcutil-exe-extension.aspx
Dynamics CRM 2011 CrmSvcUtil ツールとその拡張方法 (オプションセット追加)
http://blogs.msdn.com/b/crmjapan/archive/2011/08/05/dynamics-crm-2011-crmsvcutil-exe-extension-optionset.aspx

1.4 コマンド例

必要最低限の引数で実行した場合次のようになります。

crmsvcutil /url:http://crmsvr01/org01/XRMServices/2011/Organization.svc /out:proxy.cs

上記の例では、/servicecontextname パラメタを指定していません。サービス コンテキストクラスが生成されない。/namespaceパラメタも指定していないため名前空間もありません。C# でproxy.cs ファイルにコードが作成されます。/servicecontextnameを指定しなかったので、サービスコンテキストとしてはOrganizationServiceContextを使用します[Dynamics CRM 2011]事前バインディング(OrganizationServiceContext)を使用したレコードのCRUD操作 参照。。

CRM Online の展開に対して プロキシクラスを生成する場合、deviceid, devicepassword を指定しないと、%USERPROFILE%\LiveDeviceID\LiveDevice.xml が自動的に参照されます。ファイルがない場合は、自動的にデバイスIDとパスワードの登録が行われ ファイルが作成されます。

名前空間やサービスコンテキストを使用した場合のパラメタ設定は次のようになります。

crmsvcutil /url:http://crmsvr01/org01/XRMServices/2011/Organization.svc /out:proxy.cs /namespace:Handcraft.Xrm.Client /servicecontextname:XrmContext