Freigeben über


Erstellen von früh gebundenen Entitätsklassen mit dem Codegenerierungstool

Von Bedeutung

Wenn Sie Dataverse verwenden, sollten Sie den Power Platform CLI pac modelbuilder build-Befehl verwenden. CrmSvcUtil.exe funktioniert immer noch mit Dataverse, aber wir empfehlen die Verwendung des pac modelbuilder build Befehls aufgrund der verbesserten Benutzeroberfläche und der neuen Funktionen, die hinzugefügt werden. Erfahren Sie mehr über das Generieren von früh gebundenen 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 SieCrmSvcUtil.exeverwenden .

CrmSvcUtil.exe ist ein Befehlszeilen-Codegenerierungstool für die Verwendung mit Dynamics 365 for Customer Engagement. Dieses Tool generiert früh gebundene .NET Framework-Klassen, die das Entitätsdatenmodell darstellen, das von Dynamics 365 Customer Engagement (on-premises) verwendet wird.

Das Codegenerierungstool (CrmSvcUtil.exe) wird als Teil des NuGet-Pakets Microsoft.CrmSdk.CoreTools verteilt. Informationen zum Herunterladen des Codegenerierungstools (CrmSvcUtil.exe), finden Sie unter Dataverse-Entwicklungstools.

Generieren von Entitätsklassen

Das CrmSvcUtil-Tool erstellt eine Microsoft Visual C#- oder Visual Basic .NET-Ausgabedatei, die stark typisierte Klassen für Tabellen in Ihrer Umgebung enthält. Dazu gehören auch benutzerdefinierte Tabellen und Spalten. Diese Ausgabedatei enthält für jede Tabelle eine Klasse, die aus Entity abgeleitet ist und frühe Bindung sowie IntelliSense-Unterstützung in Visual Studio bietet, um Sie beim Schreiben von Code zu unterstützen. Bei den generierten Klassen handelt es sich um partielle Klassen, die mit benutzerdefinierter Geschäftslogik in 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 Erstellen von Erweiterungen für das Codegenerierungstool.

Generieren einer OrganizationServiceContext-Klasse

Das Werkzeug kann auch verwendet werden, um eine Klasse zu generieren, die von der OrganizationServiceContext Klasse abgeleitet ist, die als Entitätscontainer im EDM fungiert. Dieser Dienstkontext bietet die Funktionen zum Nachverfolgen von Änderungen und zum Verwalten von Identitäten, Parallelität und Beziehungen. Diese Klasse macht auch eine SaveChanges() Methode verfügbar, die Tabellenzeilen in Dynamics 365 Customer Engagement (on-premises) schreibt, einfügt, aktualisiert und löscht. Weitere Informationen finden Sie unter Verwenden von OrganizationServiceContext.

Generierte Klassen verwenden

Die vom Codegenerierungstool erstellten Klassen sind so konzipiert, dass sie in eine Klassenbibliothek integriert werden können, auf die von Projekten verwiesen werden kann, die Dynamics 365 Customer Engagement (on-premises) verwenden. Nachdem Sie die Klassendatei(en) mit dem Tool generiert haben, sollten Sie die Datei(en) dem Visual Studio-Projekt hinzufügen. Sie müssen auch Verweise auf mehrere Assemblys hinzufügen, von denen die generierten Klassen abhängig sind.

Im Folgenden sind die Assemblys aufgeführt, auf die im Projekt verwiesen werden muss, wenn Sie die generierte Codedatei verwenden.

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

Diese Assemblys sind Teil des NuGet-Pakets Microsoft.CrmSdk.CoreAssemblies oder Microsoft.PowerPlatform.Dataverse.Client . Verwenden Sie eines dieser NuGet-Pakete, um dem Visual Studio-Projekt die erforderlichen Assemblys hinzuzufügen.

Ausführen des Codegenerierungstools

Das Codegenerierungstool verwendet mehrere Parameter, die den Inhalt der erstellten Datei bestimmen. Die Parameter können über die Befehlszeile übergeben werden, wenn Sie das Tool ausführen, oder in einer . NET-verbundene Anwendungskonfigurationsdatei.

Führen Sie die CrmSvcUtil.exe Anwendung in dem Ordner aus, in dem sie installiert ist. Wenn Sie das Werkzeug von einem anderen Ordnerspeicherort aus ausführen, stellen Sie sicher, dass sich eine Kopie der Microsoft.Xrm.Sdk.dll Baugruppe in demselben Ordner befindet.

Das folgende Beispiel zeigt das Format zum Ausführen des Tools über die Befehlszeile mit Dynamics 365 Customer Engagement (on-premises). Um sich in einer interaktiven Umgebung anzumelden, können Sie einfach die folgenden Optionen wählen.

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

Wenn Sie das Tool mit der interactivelogin Option (Tastenkürzel il) ausführen, öffnen Sie einen Dialog und können Ihre Anmeldeinformationen und den Server angeben, mit dem Sie eine Verbindung herstellen möchten.

Sie können die Parameter, die Sie übergeben möchten, auch direkt in der Befehlszeile oder über eine Batch-Datei (.bat) angeben, die Sie 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>

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

Hinweis

Im Beispiel wird das Zeichen carat (^) verwendet, um die Liste der Parameter zur besseren Lesbarkeit aufzubrechen. Sie können die Befehlsparameter mit Argumenten in Notepad erstellen und dann in die Befehlszeile einfügen.

  • Geben Sie für die username Parameter und password den Benutzernamen und das Kennwort ein, die für die Anmeldung bei Ihrer Dynamics 365 Customer Engagement (on-premises)-Umgebung verwendet werden.
  • Für den url Parameter können Sie die richtige URL in Power Apps oder in der Legacy-Webanwendung nachschlagen, indem Sie Einstellungen auswählen, zu Anpassungen navigieren und dann Entwicklerressourcen auswählen. Die URL wird unter Organisationsservice angezeigt.

Anspruchsbasierte Authentifizierung

In den folgenden Beispielen wird gezeigt, wie das Codegenerierungstool mit anspruchsbasierter Authentifizierung verwendet wird. Beachten Sie, dass Benutzername und Kennwort optionale Parameter sind. Wenn Ihre Anmeldeinformationen für den Zielserver von Dynamics 365 Customer Engagement (on-premises) im Windows-Anmeldeinformationstresor gespeichert sind, müssen Sie sie nicht angeben, um das Codegenerierungstool auszuführen.

Active Directory

Im folgenden Beispiel wird gezeigt, wie das Codegenerierungstool mithilfe der 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 mithilfe der 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 /?  

In der folgenden Tabelle sind die Parameter des Codegenerierungstools zum Zeitpunkt der letzten Aktualisierung dieses Themas aufgeführt, und es wird eine kurze Beschreibung der Verwendung von Befehlsparametern gegeben.

Parameter Verknüpfung BESCHREIBUNG
url Die URL für den Organisationsdienst. Erforderlich, es sei denn, Sie verwenden interactivelogin
out o Der Dateiname für den generierten Code. Erforderlich
language l Die Sprache, in der der Code generiert werden soll. Dies kann entweder "CS" oder "VB" sein. Der Standardwert ist "CS".
namespace n Der Namespace für den erstellten Code. Der Standardwert ist der globale Namespace.
username u Der Benutzername, der verwendet werden soll, wenn Sie für die Authentifizierung eine Verbindung mit dem Server herstellen.
password p Das Kennwort, das verwendet werden soll, wenn Sie eine Verbindung mit dem Server für die Authentifizierung herstellen.
domain d Die Domäne, für die authentifiziert werden soll, wenn Sie eine Verbindung mit einem lokalen Server herstellen.
servicecontextname Der Name der generierten Kontextklasse. Wenn kein Wert angegeben wird, wird kein Dienstkontext erstellt.
help ? Nutzungsinformationen anzeigen.
nologo Das Banner zur Laufzeit unterdrücken.
generateActions Generieren Sie Anforderungs- und Antwortklassen für benutzerdefinierte Aktionen.
interactivelogin il Bei Verwendung wird ein Dialogfeld zum Anmelden beim Dynamics 365 Customer Engagement (on-premises)-Dienst angezeigt. Alle anderen verbindungsbezogenen Parameter, die in der Befehlszeile angegeben werden, werden ignoriert.
connectionstring connstr Enthält Informationen, die als einzelne Zeichenfolge für die Verbindung mit einer Dynamics 365 Customer Engagement (on-premises)-Organisation bereitgestellt werden. Alle anderen verbindungsbezogenen Parameter, die in der Befehlszeile angegeben werden, werden ignoriert. Weitere Informationen finden Sie unter Verwenden von Verbindungszeichenfolgen in XRM-Tools.
suppressGeneratedCodeAttribute sgca Unterdrückt das GeneratedCodeAttribute für alle Klassen
emitfieldsclasses emitfc Generieren einer Fields-Klasse pro Entität, die alle Feldnamen 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 Semikolons getrennte Liste in der Form <entitylogicalname> übergeben.<entitylogicalname>;...
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. Ein * kann verwendet werden, um eine Nachricht fortzusetzen oder zu verfolgen, wobei alle Nachrichten angezeigt werden, die mit einer Zeichenfolge beginnen oder mit einer Zeichenfolge enden. Die Liste hat das Format <messagename>;<Nachrichtenname>;...
splitfiles Teilt die Ausgabe in Dateien nach Typ auf, die nach Entität, Nachricht und Optionssätzen organisiert sind. Wenn diese Option aktiviert ist, wird die out Eigenschaft ignoriert und outdirectory ist stattdessen erforderlich
outdirectory outdir Verzeichnis zum Schreiben von Entitäts-, Nachrichten- und Optionssatzdateien für ein bestimmtes Ausgabenverzeichnis. Gültig nur mit der splitfiles Option
entitytypesfolder Der Ordnername, der die Entitäten enthalten wird. Der Standardname des Ordners lautet "Entities". Gültig nur mit der splitfiles Option.
messagestypesfolder Name des Ordners, der Nachrichten enthalten soll. Der Standardname lautet "Nachrichten". Gültig nur mit der splitfiles Option
optionsetstypesfolder Ordnername, der Optionssätze enthalten soll. Der Standardname lautet "OptionSets". Gültig nur mit splitfiles Option
generateGlobalOptionSets Alle gobalen OptionSets zurückgeben. Hinweis: Wenn ein Element einen Verweis auf ein globales Optionsset enthält, 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 Sie die Konfigurationsdatei

Die CrmSvcUtil.exe.config Konfigurationsdatei muss sich im selben Ordner wie das CrmSvcUtil.exe-Tool befinden. Die Konfigurationsdatei verwendet die standardmäßigen Schlüssel-Wert-Paare in diesem appSettings Abschnitt. Wenn Sie jedoch einen Wert in der Befehlszeile eingeben, wird dieser Wert anstelle des Werts in der Konfigurationsdatei verwendet. Alle Schlüssel-Wert-Paare, die in der Anwendungskonfigurationsdatei gefunden werden und nicht mit einem der erwarteten Parameter übereinstimmen, werden ignoriert.

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

Im folgenden Beispiel wird gezeigt, wie die Ausgabedatei und die Parameter für den Domänennamen 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 beim Ausführen des Tools zu aktivieren, fügen Sie der Konfigurationsdatei die folgenden Zeilen 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 zu unterstützten Ablaufverfolgungsoptionen finden Sie unter Konfigurieren der Ablaufverfolgung für XRM-Tools.

Communitytools

Early Bound Generator ist ein Tool aus der XrmToolbox-Community. Weitere von der Community entwickelte Tools finden Sie im Thema Entwicklertools und -ressourcen .

Hinweis

Die Communitytools sind kein Produkt von Microsoft und erweitern den Support nicht auf die Communitytools. 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