次の方法で共有


コード生成ツールを使用した事前バインドエンティティクラスの作成

Von Bedeutung

Dataverse を使用している場合は、 Power Platform CLI の pac modelbuilder build コマンドを使用する必要があります。 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 または従来の Web アプリケーションで正しい 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

パラメーター

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

CrmSvcUtil.exe /?  

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

パラメーター ショートカット 説明
url 組織サービスの URL。 入力が必要です。ただし、 interactivelogin を使用する場合を除きます。
out o 生成されたコードのファイル名。 必須
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) 組織に接続するための情報を 1 つの文字列として提供します。 コマンドラインで指定された他のすべての接続関連パラメータは無視されます。 詳細については、「 XRM ツールで接続文字列を使用する」を参照してください。
suppressGeneratedCodeAttribute sgca すべてのクラスで GeneratedCodeAttribute を抑制します
emitfieldsclasses emitfc エンティティごとに、コード生成時のすべてのフィールド名を含む Fields クラスを生成します
entitynamesfilter Dynamics 365 Customer Engagement (on-premises) からデータを読み取るときに取得されるエンティティの一覧をフィルター処理します。 <entitylogicalname>; の形式でセミコロンで区切られたリストとして渡されます<entitylogicalname>;...
messagenamesfilter Dynamics 365 Customer Engagement (on-premises) からデータを読み取るときに取得されるメッセージの一覧をフィルター処理します。 セミコロンで区切られたリストとして渡されます。 必要なメッセージ (Create、Update、Delete、Retrieve、RetrieveMultiple、Associate、DisAssociate) は常に含まれます。 * は、メッセージを続行または追跡するために使用でき、文字列で始まるメッセージまたは文字列で終わるすべてのメッセージを許可します。 リストは <messagename>; という形式を取ります<メッセージ名>;...
splitfiles 出力をタイプ別のファイルに分割し、エンティティ、メッセージ、およびオプションセットごとに整理します。 有効にすると、 out プロパティは無視され、代わりに outdirectory が必要です
outdirectory outdir エンティティ、メッセージ、およびオプションセットファイルを指定された出力ディレクトリに書き込みます。 splitfilesオプションでのみ有効
entitytypesfolder エンティティを含むフォルダー名。 デフォルトのフォルダ名は「Entities」です。 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 ツールのトレースの構成を参照してください。

コミュニティ ツール

Early Bound Generator は、XrmToolbox コミュニティのツールです。 コミュニティで開発されたツールの詳細については、 開発者ツールとリソース のトピックを参照してください。

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

こちらもご覧ください

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