Entitätsklassen mit früher Bindung mit dem Codegenerierungstool erstellen

Wichtig

Wenn Sie Dataverse verwenden, sollten Sie den Power Platform CLI pac modelbuilder build-Befehl verwenden. CrmSvcUtil.exe funktioniert immer noch mit Dataverse, wir empfehlen jedoch die Verwendung des Befehls pac modelbuilder build aufgrund der verbesserten Erfahrung und der neuen Funktionen, die hinzugefügt werden. Erfahren Sie mehr über die Generierung früher gebundener Klassen für das SDK für .NET mit Dataverse.

Da die Power Platform-CLI für Dynamics 365 Customer Engagement (on-premises) nicht verfügbar ist, müssen Sie CrmSvcUtil.exe verwenden.

CrmSvcUtil.exe ist ein Tool zur Erzeugung von Befehlszeilencode zur Verwendung mit Dynamics 365 for Customer Engagement. Dieses Tool erstellt .NET-Framework-Klassen mit früher Bindung, die das Entitätsdatenmodell darstellen, das von Dynamics 365 Customer Engagement (on-premises) verwendet wird.

Das Codegenerierungstool (CrmSvcUtil.exe) wird als Bestandteil des Microsoft.CrmSdk.CoreTools-NuGet-Pakets verteilt. Informationen zum Herunterladen vom Codegenerierungstool (CrmSvcUtil.exe) finden Sie unter Dataverse Entwicklertools.

Generieren von Entitätsklassen

Das CrmSvcUtil-Tool erstellt eine Ausgabedatei in Microsoft Visual C# oder Visual Basic .NET, die stark typisierte Klassen für Tabellen in Ihrer Umgebung enthält. Dies schließt benutzerdefinierte Tabellen und Spalten mit ein. Diese Ausgabedatei enthält eine von Entity abgeleitete Klasse für jede Tabelle und stellt frühe Bindung und IntelliSense-Unterstützung in Visual Studio bereit, die Ihnen hilft, wenn Sie benutzerdefinierten Code schreiben. Die erstellten Klassen sind partielle Klassen, die mit benutzerdefinierter Geschäftslogik in den separaten Dateien erweitert werden können. Sie können auch Erweiterungen für dieses Tool schreiben, um seine Funktionalität anzupassen. Weitere Informationen finden Sie unter Erweiterungen für das Codegenerierungstool erstellen.

Erstellt eine OrganizationServiceContext-Klasse

Das Tool kann auch verwendet werden, um eine Klasse zu generieren, die von der Klasse OrganizationServiceContext abgeleitet wurde, die als Entitätscontainer im EDM auftritt. Der Servicekontext bietet die Einrichtungen für die Nachverfolgung von Änderungen und das Verwalten von Identitäten, Parallelität und Beziehungen. Diese Klasse stellt auch eine SaveChanges()-Methode zur Verfügung, die in Dynamics 365 Customer Engagement (on-premises) Tabellenzeilen schreibt, einfügt, aktualisiert und löscht. Weitere Informationen finden Sie unter Die Organisationsdienst-Kontextklasse verwenden.

Verwenden von erstellten Klassen

Die Klassen, die vom Codegenerierungstool erstellt werden, sind konzipiert, um in eine Klassenbibliothek eingebaut zu werden, auf die in Projekten verwiesen wird, die Dynamics 365 Customer Engagement (on-premises) verwenden. Nachdem Sie die Klassendatei(en) mithilfe des Tools erstellt haben, sollten Sie die Datei(en) dem Visual Studio-Projekt hinzufügen. Sie müssen auch einigen Assemblys Verweise hinzufügen, von denen die generierten Klassen abhängig sind.

Die folgenden Liste führt Aassemblys auf, auf die in Ihrem Projekt verwiesen werden muss, wenn Sie die generierte Codedatei verwenden.

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

Diese Assemblys sind im Microsoft.CrmSdk.CoreAssemblies oder Microsoft.PowerPlatform.Dataverse.Client NuGet-Paket enthalten. Verwenden Sie eines dieser NuGet-Pakete, um dies erforderlichen Assemblys Ihrem Visual Studio-Projekt hinzuzufügen.

Ausführen des Codegenerierungstools

Das Codegenerierungstool nimmt einige Parameter, die die Inhalte der Datei bestimmen, die erstellt wird. Die Parameter in können über die Befehlszeile übergeben werden, wenn Sie das Tool ausführen, oder in einer mit .NET verbundenen Anwendungskonfigurationsdatei.

Führen Sie die CrmSvcUtil.exe-Anwendung Aus dem Ordner aus, in dem sie installiert ist. Wenn Sie das Tool in einem anderen Ordnerspeicherort ausführen, stellen Sie sicher, dass eine Kopie der Microsoft.Xrm.Sdk.dll-Assemblys sich in dem gleichen Ordner befindet.

Im folgenden Beispiel wird das Format für die Ausführung von Tools in der Befehlszeile mit Dynamics 365 Customer Engagement (on-premises) gezeigt. Um eine interaktive Umgebungsanmeldung zu verwenden, können Sie diese einfach Optionen zur Verfügung stellen:

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

Wenn Sie das Tool mit der interactivelogin (Verknüpfungs il) Option verwenden, öffnen Sie einen Dialogs und können Ihre Anmeldeinformationen angeben und den Server mit dem Sie sich verbinden möchten.

Sie können auch die Parameter angeben, die Sie direkt in der Befehlszeile ausführen möchten, oder in einer Datei vom Batchs (BAT) ausführen können, um neue Klassen zu generieren.

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

Zum Beispiel:

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

Anmerkung

Die Beispiele nutzen das Tabstoppzeichen des Karat (^), um die Liste von Parametern für Lesbarkeit oben zu unterbrechen. Sie können die Befehlsparameter mit Argumenten mithilfe des Notizblockes verfassen und ihn in der Befehlszeile einfügen.

  • Bei den username und password-Parametern geben Sie den Benutzernamen bzw. das Kennwort ein, das verwendet wird, um sich für Ihre Dynamics 365 Customer Engagement (on-premises) Umgebung anzumelden.
  • Für die url-Parameter können Sie die korrekte URL in Power Apps oder in der Legacy-Webanwendung finden, indem Sie Einstellungen auswählen, zu Anpassungen navigieren, und dann Entwickleressourcen schließen. Die URL wird unter Organisationsservice angezeigt.

Anspruchsbasierte Authentifizierung

Die folgenden Beispiele veranschaulichen, wie das Codegenerierungstool mit anspruchsbasierter Authentifizierung verwendet wird. Beachten Sie, dass Benutzername und Kennwort optionale Parameter sind. Wenn Ihre Anmeldeinformationen für den Dynamics 365 Customer Engagement (on-premises)-Server im Windows-Anmeldeinformationstresor gespeichert werden, müssen Sie diese nicht verwendet werden, um das Codegenerierungstool auszuführen.

Active Directory

Das folgende Beispiel zeigt, wie das Codegenerierungstool durch Verwendung von Anspruchsauthentifizierung in Active Directory ausgeführt wird. Beachten Sie die Verwendung von HTTPS, da dieser Beispielserver Transport Layer Security (TLS) oder Secure Sockets Layer (SSL) verwendet.

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

Bereitstellung mit Internetzugriff (IFD)

Das folgende Beispiel zeigt, wie das Codegenerierungstool durch Verwendung von Anspruchsauthentifizierung mit IFD ausgeführt wird.

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

Parameter

Verwenden Sie den folgenden Befehl, um die neuesten unterstützten Befehlszeilenparameter anzuzeigen.

CrmSvcUtil.exe /?  

Die folgende Tabelle listet die Parameter des Codegenerierungstools zum Zeitpunkt der letzten Aktualisierung dieses Thema auf und enthält eine kurze Beschreibung der Verwendung von Befehlsparametern.

Parameter Verknüpfung Beschreibung
url Die URL für den Organisationsservice. Erforderlich, es sei denn, Sie verwenden interactivelogin
out o Der Dateinamen für den erstellten Code. Erforderlich
language l Die Sprache, in dem der Code zu generieren ist. Das kann entweder „CS“ oder „VB“ sein. Der Standardwert ist „CS“.
namespace n Der Namespace für den erstellten Code. Standard ist der globale Namespace.
username u Der Benutzername, der verwendet wird, wenn Sie eine Verbindung mit dem Server für die Authentifizierung herstellen.
password p Das Kennwort, das verwendet wird, wenn Sie eine Verbindung mit dem Server für die Authentifizierung herstellen.
domain d Die Domäne, anhand derer authentifiziert wird, wenn Sie eine Verbindung lokal herstellen.
servicecontextname Der Name der generierten Kontextklasse. Wenn kein Wert angegeben ist, wird kein Servicekontext erstellt.
help ? Verwendungsinformationen anzeigen.
nologo Das Banner zur Laufzeit unterdrücken.
generateActions Generieren Sie Anforderungs- und Antwortklassen für benutzerdefinierte Aktionen.
interactivelogin il Wenn es verwendet wird, wird ein Dialog zur Anmeldung im Dynamics 365 Customer Engagement (on-premises)-Service angezeigt. Alle anderen Parameter, die mit der Verbindung zusammen hängen, die auf der Befehlszeile angegeben wurden, werden ignoriert.
connectionstring connstr Enthält Informationen, als einzelne Zeichenfolge bereitgestellt, zur Verbindung mit einer Dynamics 365 Customer Engagement (on-premises)-Organisation. Alle anderen Parameter, die mit der Verbindung zusammen hängen, die auf der Befehlszeile angegeben wurden, werden ignoriert. Weitere Informationen finden Sie unter Verbindungszeichenfolgenden in XRM-Tooling verwenden.
suppressGeneratedCodeAttribute sgca Unterdrückt das GeneratedCodeAttribute für alle Klassen
emitfieldsclasses emitfc Generiert eine Feldklasse pro Entität, die alle Feldnamen nach Entität zum Zeitpunkt der Codegenerierung enthält
entitynamesfilter Filtert die Liste der Entitäten, die beim Lesen von Daten aus Dynamics 365 Customer Engagement (on-premises) abgerufen werden. Wird als durch Semikolon getrennte Liste mit dem Formular <entitylogicalname>;<entitylogicalname>;... übergeben.
messagenamesfilter Filtert die Liste der Nachrichten, die beim Lesen von Daten aus Dynamics 365 Customer Engagement (on-premises) abgerufen werden. Wird als eine durch Semikolons getrennte Liste übergeben. Erforderliche Nachrichten (Erstellen, Aktualisieren, Löschen, Abrufen, RetrieveMultiple, Associate und DisAssociate) sind immer enthalten. A * kann verwendet werden, um eine Nachricht fortzusetzen oder zu beenden, wobei alle Nachrichten zugelassen werden, die mit einer Zeichenfolge beginnen oder enden. Die Liste nimmt das Formular <messagename>;<messagename>;...
splitfiles Teilt die Ausgabe in Dateien nach Typ auf, organisiert nach Entität, Nachricht und Optionssätzen. Wenn aktiviert, wird die out Eigenschaft ignoriert und stattdessen ist outdirectory erforderlich
outdirectory outdir Verzeichnis zum Schreiben von Entitäts-, Nachrichten- und Optionssatzdateien für ein bestimmtes Ausgabenverzeichnis. Nur gültig mit der Option splitfiles
entitytypesfolder Ordnername, der Entitäten enthält. Der Standardordnername ist Entitäten. Nur gültig mit der Option splitfiles.
messagestypesfolder Ordnername, der Nachrichten enthält. Der Standardname ist Nachrichten. Nur gültig mit der Option splitfiles
optionsetstypesfolder Ordnername, der OptionSets enthält. Der Standardwert ist OptionsSets. Nur gültig mit der Option splitfiles
generateGlobalOptionSets Alle gobalen OptionSets zurückgeben. Hinweis: Enthält eine Entität einen Verweis auf einen globalen Optionssatz, wird dieser auch dann ausgegeben, wenn dieser Schalter nicht vorhanden ist
legacyMode Deaktivieren Sie das Ausgeben von Optionssätzen und viele neuere Codefunktionen, um die Kompatibilität mit älteren benutzerdefinierten Erweiterungen zu unterstützen

Verwenden der Konfigurationsdatei

Die CrmSvcUtil.exe.config-Konfigurationsdatei muss im gleichen Ordner wie das CrmSvcUtil.exe-Tool sein. Die Konfigurationsdatei verwendet die Standardschlüssel-Wert-Paare im Abschnitt appSettings. Wenn Sie einen Wert über die Befehlszeile eingeben, wird dieser Wert anstelle des Werts in der Konfigurationsdatei verwendet. Alle Schlüssel-Wert-Paare, die in der Anwendungskonfigurationsdatei gefunden werden, die nicht einem der erwarteten Parameter entsprechen, werden ignoriert.

Schließen Sie die Parameter url und namespace nicht in die XML-Konfigurationsdatei ein. Diese müssen über die Befehlszeile eingegeben werden, wenn das CrmSvcUtil.exe-Tool ausgeführt wird.

Das folgende Beispiel zeigt, wie die Ausgabedatei und die Domänennamenparameter in der Anwendungskonfigurationsdatei mithilfe von Tastenkombinationen konfiguriert werden.

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

Aktivieren der Ablaufverfolgung

Um die Ablaufverfolgung zu aktivieren, wenn Sie das Tool ausführen, fügen Sie die folgenden Zeilen der XML-Konfigurationsdatei hinzu:

<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>  

Weitere Informationen zur Verwendung der Nachverfolgungsoptionen finden Sie unter Konfigurieren der Nachverfolgung für XRM Tooling.

Community-Tools

Früh gebundener Generator ist ein Tool aus der XrmToolbox-Community. Weitere Informationen finden Sie im Thema Entwicklertools und Ressourcen für von der Community entwickelte Tools.

Anmerkung

Die Communitytools sind kein Produkt von Microsoft und es wird kein Support für die Communitytools angeboten. Wenn Sie Fragen zu dem Tool haben, setzen Sie sich bitte mit dem Herausgeber in Verbindung. Weitere Informationen: XrmToolBox.

Siehe auch

Entwicklertools für Dynamics 365 Customer Engagement (on-premises)
Erstellen von Erweiterungen für das Codegenerierungstool
Spät gebundene und früh gebundene Programmierung