Erstellen von Paketen für Dynamics 365 Package Deployer

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Mit Microsoft Dynamics CRM Package Deployer können Administratoren Pakete auf einer Microsoft Dynamics 365 (online)- und Dynamics 365 (lokal)-Instanz bereitstellen. Ein "Paket" kann aus einem oder allen der folgenden Elemente bestehen:

  • Eine oder mehrere Dynamics 365-Lösungsdateien.

  • Flache Dateien oder exportierte Konfigurationsdatendateien aus dem Konfigurationsmigrationstool. Weitere Informationen zu dem Tool finden Sie unter TechNet: Konfigurationsdaten verwalten.

  • Benutzerdefinierter Code, der ausgeführt werden kann, bevor, während oder nachdem das Paket auf der Dynamics 365-Instanz bereitgestellt wird.

  • inhaltsspezifische HTML für das Paket, das bei Start und Ende des Bereitstellungsprozesses angezeigt werden kann. Dies kann nützlich sein, um eine Beschreibung der Lösungen und Dateien bereitzustellen, die im Paket bereitgestellt werden.

Microsoft Dynamics 365 bietet Ihnen eine Visual Studio Vorlage zum Erstellen dieser Pakete, die mit Paketbereitstellungstool verwendet werden kann, um sie zu einer Dynamics 365-Instanz bereitzustellen.

Hinweis

Mit Veröffentlichung von CRM Online 2016 Update 1 und CRM 2016 Service Pack 1 (lokal) wurde die Visual Studio Vorlage für die Erstellung von Dynamics 365-Paketen erweitert, um Unterstützung für neue Funktionen wie Ablaufparameterunterstützung hinzuzufügen; mehrfache Sprachkonfigurationsdateien unter Verwendung eines einzelnen Pakets zu importieren; sowie die Fähigkeit, zu steuern, ob man Anpassungen bei der Aktualisierung von Lösungen überschreibt oder beibehält; und mehr. Vorhandene Paketprojekte können aktualisiert werden, um den neuen Funktionsumfang zu nutzen, indem Sie die CRM-Paketbereitstellungsprogramm-Assemblys mit NuGet auf Version auf 8.1 oder höher aktualisieren.

In diesem Thema

Voraussetzungen

Erstellen Sie ein Paket

Ein Paket bereitstellen

Bewährte Methoden zum Erstellen und Bereitstellen von Paketen

Voraussetzungen

  • Stellen Sie sicher, dass Sie alle Lösungen und Dateien haben, die Sie in Paket einschließen möchten.

  • Microsoft .NET Framework 4.5.2

  • Microsoft Visual Studio 2012, Visual Studio 2013 oder Visual Studio 2015

  • NuGet Package Manager für Visual Studio 2012, Visual Studio 2013 oder Visual Studio 2015

  • Microsoft Dynamics 365 SDK Vorlagen für Visual Studio, das die Paketvorlage enthält. Sie können Sie auf eine der folgenden Weisen erhalten:

Erstellen Sie ein Paket

Führen Sie folgenden fünf Schritte aus, um ein Paket zu erstellen:

Schritt 1: Erstellen Sie ein Projekt mithilfe einer Vorlage

Schritt 2: Fügen Sie Ihre Dateien dem Projekt hinzu

Schritt 3: Aktualisieren Sie die HTML-Dateien: Englisch und andere Sprachen

Schritt 4: Geben Sie die Konfigurationswerte für das Paket an

Schritt 5: Definieren Sie benutzerdefinierten Code für das Paket

Schritt 1: Erstellen Sie ein Projekt mithilfe einer Vorlage

  1. Starten Sie Microsoft Visual Studio und erstellen Sie ein neues Projekt.

  2. Im Dialogfeld Neues Projekt:

    1. Erweitern Sie in der Liste der installierten Vorlagen Visual C#, und wählen Sie Dynamics 365-SDK Vorlagen aus.

    2. Sicherstellen, dass .NET Framework 4.5.2 ausgewählt ist.

    3. Wählen Sie das Dynamics 365-Paket aus.

    4. Geben Sie den Namen und den Standort des Projekts an, und klicken Sie auf OK.

    Neues Projekt zum Erstellen eines benutzerdefinierten Pakets

Schritt 2: Fügen Sie Ihre Dateien dem Projekt hinzu

  1. Fügen Sie im Bereich Projektmappen-Explorer die Lösungen und Dateien dem Ordner PkgFolder hinzu.

  2. Setzen Sie für alle Dateien, die Sie unter dem Ordner PkgFolder, im Bereich Eigenschaften,hinzufügen, den Wert Kopie zu Ausgabeverzeichnis auf Immer kopieren. Dadurch wird sichergestellt, dass die Datei, im generierten Paket verfügbar ist.

Schritt 3: Aktualisieren Sie die HTML-Dateien: Englisch und andere Sprachen

  1. Erweitern Sie im Projektmappen-Explorer-Bereich PkgFolder > Content > en-us. Sie finden hier zwei Ordner genannt EndHTML und WelcomeHTML. Diese Ordner enthalten das HTML und die zugeordneten Dateien, mit denen Sie Informationen am ende und am Anfang des Paketbereitstellungsprozesses anzeigen können. Bearbeiten Sie die Dateien im HTML Ordner dieser Ordner, um Informationen für das Paket hinzuzufügen.

  2. Sie können in Ihrem Paket auch HTML-Dateien in anderen Sprachen hinzufügen, damit der Inhalt des HTML in der Sprache der Gebietsschemaeinstellungen der Firma des Benutzers angezeigt wird. Um dies zu tun:

    1. Erstellen Sie eine Kopie des en-us Ordners unter PkgFolder > Content.

    2. Benennen Sie den kopierten Ordner entsprechend der Sprache. Benennen Sie ihn für die spanische Sprache beispielsweise mit es-ES.

    3. Ändern Sie den Inhalt der HTML Dateien, um spanischen Inhalt hinzuzufügen.

Schritt 4: Geben Sie die Konfigurationswerte für das Paket an

  1. Definieren Sie die Paketkonfiguration, indem Sie in der Datei ImportConfig.xml, die in PkgFolder zur Verfügung steht, Informationen zum Paket hinzufügen. Doppelklicken Sie auf die Datei, um sie für die Bearbeitung zu öffnen. Die folgende Tabelle enthält Informationen zu den Parametern und Knoten in der CONFIG-Datei.

    Parameter/Knoten

    Beschreibung

    installsampledata

    True oder false. Wenn true, werden bei Dynamics 365 Beispieldaten installiert. Hierbei handelt es sich um dieselben Beispieldaten, die Sie aus dem Bereich Einstellungen > Datenverwaltung in Dynamics 365 installieren können.

    waitforsampledatatoinstall

    True oder False. Wenn true und wenn installsampledata ebenfalls auf true festgelegt ist, wird darauf gewartet, dass Beispieldaten installiert werden, bevor das Paket bereitgestellt wird.

    Hinweis

    Stellen Sie sicher, dass Sie installsampledata auf true setzen, wenn Sie waitforsampledatatoinstall auf true setzen.

    agentdesktopzipfile

    Dateiname der zu entpacken ZIP-Datei. Wenn Sie einen zip-Dateinamen angeben, wird während des Paketbereitstellungsprozesses ein Bildschirm hinzugefügt, der Sie aufgefordert, einen Speicherort auszuwählen, an dem Sie die Inhalte der Datei entpacken möchten.

    Das wird gewöhnlich zum Erstellen Paketen von Unified Service Desk für Microsoft Dynamics 365 verwendet. Weitere Informationen zu Unified Service Desk finden Sie im TechNet: Unified Service Desk-Verwaltungshandbuch.

    agentdesktopexename

    Name der .exe oder .msi Datei in der ZIP-Datei oder eine URL, die am Ende des Bereitstellungsprozesses aufgerufen wird.

    Das wird gewöhnlich zum Erstellen Paketen von Unified Service Desk verwendet.

    crmmigdataimportfile

    Dateiname der standardmäßigen Konfigurationsdatendatei (.zip), die mithilfe von Konfigurationsmigrationstool exportiert wird.

    • Sie können eine lokalisierte Version der Konfigurationsdatendatei basierend auf der Gebietsschema-ID (LCID) importieren, die unter Verwendung der neuen Laufzeiteinstellungen angegeben wird, während Package Deployer ausgeführt wird. Verwenden Sie den Knoten <cmtdatafile> (später erläutert), um die lokalisierten Versionen der Konfigurationsdatendatei in einem Paket anzugeben, und dann die Methode OverrideConfigurationDataFileLanguage (später erläutert), um die Logik für das Importieren der Konfigurationsdatendatei basierend auf der Gebietsschema-ID anzugeben, die mithilfe der Laufzeiteinstellungen angegeben wurde. Sie können nicht mehrere Konfigurationsdatendateien gleichzeitig mithilfe eines Pakets importieren.

    • Für Dynamics 365 (lokal), wenn Ihre Konfigurationsdatendatei Benutzerinformation enthält, und sowohl die Quell- als auch die Zielinstanz von Dynamics 365 in der gleichen Active Directory-Domäne sind, werden Benutzerinformation importiert zur Zielinstanz von Dynamics 365. Um Benutzerinformation in eine Dynamics 365 (lokal)-Instanz auf einer anderen Domäne zu importieren, müssen Sie die Benutzerkartendatei (.xml), erzeugt unter Verwendung von Konfigurationsmigrationstool in Ihrem Projekt mit einschließen und sie zusammen mit der Konfigurationsdatendatei unter Verwendung desusermapfilename-Attributes im<cmtdatafile> Knoten, der später erklärt wird, angeben. Benutzerinformation können nicht zu Dynamics 365 (online)-Instanzen importiert werden.

    <solutions> Knoten

    Enthält ein Array aus <configsolutionfile>-Knoten, das die zu importierenden Lösungen beschreibt. Der Reihenfolge der Lösungen unter diesem Knoten gibt die Reihenfolge an, in der die Lösungen auf der Zielinstanz von Dynamics 365 importiert werden.

    <configsolutionfile> Knoten

    Verwenden Sie diesen Knoten unter dem <solutions> Knoten, um die einzelnen Lösungen und die folgenden Informationen zu spezifizieren, damit jede Lösung importiert werden kann:

    • solutionpackagefilename: Spezifizieren Sie den .zip-Dateinamen Ihrer Lösung. Erforderlich.

    • overwriteunmanagedcustomizations: Spezifizieren Sie, ob alle nicht verwalteten Anpassungen überschrieben werden sollen, wenn Sie eine Lösung importieren, die bereits in der Zielinstanz von Dynamics 365 existiert. Dieses ist optional und wenn Sie nicht dieses Attribut spezifizieren, werden standardmäßig die nicht verwalteten Anpassungen in der vorhandenen Lösung auf dem Ziel Dynamics 365-Instanz aufrechterhalten.

    • publishworkflowsandactivateplugins: Spezifizieren Sie, ob Workflows veröffentlicht und Plug-Ins in der Ziel-Dynamics 365-Instanz nach dem Import der Lösung aktiviert werden sollen. Dieses ist optional und wenn Sie dieses Attribut nicht spezifizieren, werden standardmäßig die Arbeitsflüsse veröffentlicht und Plug-Ins aktiviert, nachdem die Lösung auf der Ziel-Dynamics 365-Instanz importiert ist.

    Sie können mehrere Lösungsdateinamen in einem Paket hinzufügen, indem Sie genauso viele <configsolutionfile> Knoten hinzufügen. Wenn also beispielsweise drei Lösungsdateien importiert werden sollen, fügen Sie sie wie folgt hinzu:

    <solutions>
    <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"
                        overwriteunmanagedcustomizations="false"
                        publishworkflowsandactivateplugins="true"/>
    <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"
                        overwriteunmanagedcustomizations="false"
                        publishworkflowsandactivateplugins="true"/>
    <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />
    </solutions>
    

    <filestoimportnode> Knoten

    Enthält ein Array von <configimportfile> und <zipimportdetails> Knoten, die verwendet werden, um die einzelnen Dateien und ZIP-Dateien zu beschreiben, die importiert werden.

    <configimportfile> Knoten

    Verwenden Sie den Knoten unter dem <configimportfile> Knoten, um eine Datei zu beschreiben, die zu Dynamics 365 importiert wird. Sie können mehrere Dateien in einem Paket hinzufügen, indem Sie genauso viele <configimportfile> Knoten hinzufügen.

    <filestoimport>
    <configimportfile filename="File.csv"
    filetype="CSV"
    associatedmap="FileMap"
    importtoentity="FileEntity"
    datadelimiter=""          fielddelimiter="comma"
    enableduplicatedetection="true"
    isfirstrowheader="true"           isrecordownerateam="false"
    owneruser=""
    waitforimporttocomplete="true" />
    <configimportfile filename="File.zip"
    filetype="ZIP"
    associatedmap="FileMapName"
    importtoentity="FileEntity"
    datadelimiter=""
    fielddelimiter="comma"
    enableduplicatedetection="true"
    isfirstrowheader="true"
    isrecordownerateam="false"
    owneruser=""
    waitforimporttocomplete="true"/>
    
    </filestoimport>
    

    Dies hat die folgenden Attribute:

    Attribut

    Beschreibung

    filename

    Name der Datei, die die importierten Daten enthält. Wenn die Datei eine ZIP-Datei ist, muss ein <zipimportdetails> Knoten mit einem <zipimportdetail> Knoten für jede Datei in der in der ZIP-Datei vorhanden sein.

    filetype

    Das kann csv, xml oder zip sein.

    associatedmap

    Name der Dynamics 365 Importdatenzuordnung, die mit dieser Datei verwendet werden soll. Wenn leer, wird versucht, der vom System bestimmte Importdatenzuordnungsname diese Datei zu verwenden.

    importtoentity

    Dies kann der Name der EXE-Datei in der ZIP-Datei, eine URL oder eine .msi Datei sein, um einen Link bereitzustellen, der am Ende des Vorgangs aufgerufen wird.

    datadelimiter

    In der Importdatei verwendeter Name des Datentrennzeichens. Gültige Werte sind singlequote oder doublequotes.

    fielddelimiter

    In der Importdatei verwendeter Name des Feldtrennzeichens. Gültige Werte sind comma, colon oder singlequote.

    enableduplicatedetection

    Gibt an, ob der Datenimport für Duplikaterkennungsregeln aktiviert wird. Gültige Werte sind true oder false.

    isfirstrowheader

    Wird verwendet, um zu bezeichnen, dass die erste Zeile der Importdatei die Feldnamen enthält. Gültige Werte sind true oder false.

    isrecordownerateam

    Gibt an, ob der Besitzer des importierten Datensatzes ein Team sein sollte. Gültige Werte sind true oder false.

    owneruser

    Gibt die Benutzer-ID an, die die Datensätze besitzen sollte. Der Standardwert ist der aktuell angemeldete Benutzer.

    waitforimporttocomplete

    Wenn true, wartet das System auf den Abschluss des Importvorgangs, bevor fortgesetzt wird. Wenn false, werden die Aufträge in Warteschlangen gegeben und es wird fortgesetzt.

    <zipimportdetails> Knoten

    Dieser Knoten enthält ein Array von <zipimportdetail>-Knoten, die die Dateien beschreiben, die in einer ZIP-Datei enthalten sind, die verwendet wird, um zu Dynamics 365 zu importieren.

    <zipimportdetail> Knoten

    Verwenden Sie den Knoten unter dem <zipimportdetails> Knoten, um Informationen zu einer einzelnen Datei in einer ZIP-Datei bereitzustellen, die im <configimportfile> Knoten angegeben ist.

    <filestoimport>
    ...
    ...
    <zipimportdetails>
    <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" />
    <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" />
    </zipimportdetails>
    </filestoimport>
    

    Dies hat die folgenden Attribute:

    Attribut

    Beschreibung

    filename

    Name der Datei, die die importierten Daten enthält.

    filetype

    Das kann csv oder xml sein.

    importtoentity

    Dies kann der Name der EXE-Datei in der ZIP-Datei, eine URL oder eine MSI-Datei sein, um einen Link bereitzustellen, der am Ende des Vorgangs aufgerufen wird.

    <filesmapstoimport> Knoten

    Dieser Knoten enthält ein Array von <configmapimportfile> Knoten für den Import. Die Reihenfolge der Zuordnungsdateien in diesem Knoten gibt die Reihenfolge an, in der sie importiert werden. Weitere Informationen zu Datenzuordnungen finden Sie unter Erstellen von Datenzuordnungen für den Import.

    <configimportmapfile> Knoten

    Verwenden Sie den Knoten unter dem <filesmapstoimport> Knoten, um Informationen zu einer einzelnen Zuordnungsdatei für den Import in Dynamics 365 bereitzustellen.

    <filesmapstoimport>
    <configimportmapfile filename="FileMap.xml" />
    </filesmapstoimport>
    

    <cmtdatafiles>

    Dieser Knoten enthält ein Array von <cmtdatafile>-Knoten, die die lokalisierten Versionen der Konfigurationsdatendatei enthalten, die importiert werden soll.

    <cmtdatafile>

    Verwenden Sie diesen Knoten unter dem <cmtdatafiles>-Knoten, um die lokalisierten Konfigurationsdatendateien sowie die Gebietsschema-ID (erforderlich) und die Zuordnungsdatei für Benutzerinformationen (optional) anzugeben. Beispiel:

    <cmtdatafiles>
    <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" />
    <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" />
    </cmtdatafiles> 
    

    Sie können Ihre benutzerdefinierte Logkik in der OverrideConfigurationDataFileLanguage-Methode definieren(später erläutert), um eine lokalisierte Konfigurationsdatendatei zu importieren statt der Standarddatei (angegeben in crmmigdataimportfile), basierend auf dem Wert der Gebietsschema-ID (LCID), der mit den Laufzeiteinstellungen angegeben wird (später erläutert).

  2. Klicken Sie auf Speichern unter.

    Das folgende stellt den Inhalt einer Beispiel ImportConfig.xml Datei dar.

    <?xml version="1.0" encoding="utf-16"?>
    <configdatastorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                       installsampledata="true"
                       waitforsampledatatoinstall="true"
                       agentdesktopzipfile=""
                       agentdesktopexename=""
                       crmmigdataimportfile="data_1033.zip">
      <solutions>
        <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"
                            overwriteunmanagedcustomizations="false"
                            publishworkflowsandactivateplugins="true"/>
        <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"
                            overwriteunmanagedcustomizations="false"
                            publishworkflowsandactivateplugins="true"/>
        <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />
      </solutions>
      <filestoimport>
        <configimportfile filename="SampleOption.csv"
                          filetype="CSV"
                          associatedmap="SampleOption"
                          importtoentity="sample_option"
                          datadelimiter=""
                          fielddelimiter="comma"
                          enableduplicatedetection="true"
                          isfirstrowheader="true"
                          isrecordownerateam="false"
                          owneruser=""
                          waitforimporttocomplete="false"/>
        <configimportfile filename="File.zip"
                          filetype="ZIP"
                          associatedmap="FileMapName"
                          importtoentity="FileEntity"
                          datadelimiter=""
                          fielddelimiter="comma"
                          enableduplicatedetection="true"
                          isfirstrowheader="true"
                          isrecordownerateam="false"
                          owneruser=""
                          waitforimporttocomplete="true"/>
        <zipimportdetails>
          <zipimportdetail filename="subfile1.csv"
                           filetype="csv"
                           importtoentity="account" />
          <zipimportdetail filename="subfile2.csv"
                           filetype="csv"
                           importtoentity="contact" />
        </zipimportdetails>
      </filestoimport>
      <filesmapstoimport>
        <configimportmapfile filename="SampleOption.xml" />
      </filesmapstoimport>
      <cmtdatafiles>
        <cmtdatafile filename="data_1033.zip"
                     lcid="1033"
                     usermapfilename="UserMap.xml" />
        <cmtdatafile filename="data_1041.zip"
                     lcid="1041"
                     usermapfilename="" />
      </cmtdatafiles>
    </configdatastorage>
    

Schritt 5: Definieren Sie benutzerdefinierten Code für das Paket

  1. Doppelklicken Sie im Projektmappen-Explorer-Bereich auf die Datei PackageTemplate.cs im Stammverzeichnis, um sie zu bearbeiten.

  2. Sie können in der PackageTemplate.cs-Datei Folgendes:

    1. Geben Sie benutzerdefinierten Code ein, der ausgeführt wird, wenn das Paket in der Definition der Überschreibenmethode von InitializeCustomExtension initialisiert wird.

      Diese Methode kann angewendet werden, um Benutzer die Ablaufparameter beim Ausführen eines Pakets verwenden zu lassen. Als Entwickler können Sie Unterstützung für jeden Ablaufparameter Ihrem Paket hinzufügen, indem Sie die Eigenschaft RuntimeSettings verwenden, solange Sie Code haben, zum sie basierend auf den Benutzereingaben zu verarbeiten.

      Zum Beispiel ermöglicht der folgende Beispielcode einem Ablaufparameter namens SkipChecks für das Paket, der zwei mögliche Werte hat: true oder false. Die Beispielcode prüft, ob der Benutzer irgendwelche Ablaufparameter beim Ausführen von CRM-Paketbereitstellungsprogramm angegeben hat (entweder per Befehlszeile oder per PowerShell) und verarbeitet die Informationen dann entsprechend. Wenn kein Ablaufparameter vom Benutzer beim Ausführen des Pakets spezifiziert wird, ist der Wert der Eigenschaft RuntimeSettings gleich null.

      public override void InitializeCustomExtension()
      {
            // Do nothing. 
      
            // Validate the state of the runtime settings object. 
            if (RuntimeSettings != null)
            {
                  PackageLog.Log(string.Format("Runtime Settings populated.  Count = {0}", RuntimeSettings.Count)); 
                  foreach (var setting in RuntimeSettings)
                  {
                        PackageLog.Log(string.Format("Key={0} | Value={1}", setting.Key, setting.Value.ToString()));
                  }
      
                  // Check to see if skip checks is present. 
                  if ( RuntimeSettings.ContainsKey("SkipChecks") )
                  {
                        bool bSkipChecks = false;
                        if (bool.TryParse((string)RuntimeSettings["SkipChecks"], out bSkipChecks))
                        OverrideDataImportSafetyChecks = bSkipChecks; 
                  }
            }
            else
                  PackageLog.Log("Runtime Settings not populated");
      }
      

      Dadurch kann der Administrator die Eingabeaufforderung oder das Import-CrmPackage Cmdlet verwenden, um anzugeben, ob die Sicherheitsprüfungen beim Ausführen des Paketbereitstellungstool zum Importieren des Pakets übersprungen werden sollen. Weitere Informationen: TechNet: Bereitstellen von Paketen mit dem CRM Package Deployer und Windows PowerShell

    2. Geben Sie kundenspezifischen Code ein, der ausgeführt wird, bevor die Lösungen in die Definition der Überschreibungsmethode von PreSolutionImport importiert werden, um zu spezifizieren, ob Anpassungen bei der Aktualisierung der spezifizierten Lösung in einer Zielinstanz von Dynamics 365 beibehalten oder überschrieben werden sollen, und ob Plug-Ins und Arbeitsflüsse automatisch aktiviert werden.

    3. Verwenden Sie die Überschreibungsmethodendefinition von RunSolutionUpgradeMigrationStep, um Datenkonvertierung oder Aktualisierung zwischen zwei Versionen einer Lösung durchzuführen. Diese Methode nur aufgerufen, wenn die Lösung, die Sie importieren, in der Zielinstanz von Dynamics 365 bereits existiert.

      Diese Funktion erwartet die folgenden Parameter:

      Parameter

      Beschreibung

      solutionName

      Der Name des Lösungsherausgebers.

      oldVersion

      Versionsnummer der alten Lösung

      newVersion

      Versionsnummer der neuen Lösung

      oldSolutionId

      GUID der alten Lösung.

      newSolutionId

      GUID der neuen Lösung.

    4. Geben Sie benutzerdefinierten Code ein, der ausgeführt wird, bevor der Lösungsimport abgeschlossen wird, in der Überschreibungsdefinition der Methode BeforeImportStage. Die Beispieldaten und einige Textdateien für die Lösungen, die in der Datei ImportConfig.xml spezifiziert werden, werden importiert, bevor der Lösungsimport abschließt.

    5. Überschreiben Sie die gegenwärtig-vorgewählte Sprache für Konfigurationsdatenimport unter Verwendung der Überschreibungsmethodendefinition von OverrideConfigurationDataFileLanguage. Wenn die spezifizierte Gebietsschema-ID (LCID) der angegebenen Sprache nicht in der Liste von verfügbaren Sprachen im Paket gefunden wird, wird die Standarddatendatei importiert.

      Sie spezifizieren die verfügbaren Sprachen für die Konfigurationsdaten im <cmtdatafiles> Knoten in derImportConfig.xml Datei. Die Standard-Konfigurationsdaten-Importdatei wird im Attribut crmmigdataimportfile in der Datei ImportConfig.xml spezifiziert.

      Überspringen der Datenfehler (OverrideDataImportSafetyChecks= wahr) kann hier effektiv sein, wenn Sie sicher sind, dass die Dynamics 365-Zielinstanz keine Daten enthält.

    6. Geben Sie benutzerdefinierten Code ein, der ausgeführt wird, nachdem der Import in der Überschreibungsdefinition der AfterPrimaryImport-Methode abgeschlossen wird. Die restlichen Textdateien, die nicht früher importiert wurden, bevor der angestellte Lösungsimport, werden jetzt importiert.

    7. Ändern Sie den Standardnamen Ihres Paketordners PkgFolder auf den Paketnamen, den Sie wünschen. Benennen Sie dazu den Ordner PkgFolder im Bereich Projektmappen-Explorer um, und bearbeiten Sie dann den Rückgabewert unter der GetImportPackageDataFolderName Eigenschaft.

      public override string GetImportPackageDataFolderName
      {
          get
          {
              // WARNING this value directly correlates to the folder name in the Solution Explorer where the ImportConfig.xml and sub content is located. 
              // Changing this name requires that you also change the correlating name in the Solution Explorer 
              return "PkgFolder";
          }
      }
      
    8. Ändern Sie den Paketnamen, indem Sie den Rückgabewert unter der GetNameOfImport Eigenschaft bearbeiten.

      public override string GetNameOfImport(bool plural)
      {
           return "Package Short Name";
      }
      

      Dies ist der Name des Pakets, der auf der Paketauswahlseite im CRM-Paketbereitstellungsprogramm Assistenten angezeigt wird.

    9. Ändern Sie die Paketbeschreibung, indem Sie den Rückgabewert unter der GetImportPackageDescriptionText Eigenschaft bearbeiten.

      public override string GetImportPackageDescriptionText
      {
             get { return "Package Description"; }
      }
      

      Dies ist die Paketbeschreibung, die neben dem Paketnamen auf der Paketauswahlseite Package Deployer-Assistenten angezeigt wird.

    10. Ändern Sie den langen Paketnamen, indem Sie den Rückgabewert unter der GetLongNameOfImport Eigenschaft bearbeiten.

      public override string GetLongNameOfImport
      {
           get { return "Package Long Name"; }
      }
      

      Der lange Paketname wird auf der nächsten Seite angezeigt, nachdem Sie das zu installierende Paket ausgewählt haben.

  3. Darüber hinaus sind die folgenden Funktionen und die Variablen für das Paket verfügbar:

    Name

    Typ

    Beschreibung

    CreateProgressItem

    Funktion

    Wird verwendet, um ein neues Statuselement in der Benutzeroberfläche (UI) zu erstellen.

    RaiseUpdateEvent

    Funktion

    Wird verwendet, um den Status zu aktualisieren, der beim Aufruf von CreateProgressItem erstellt wird.

    ProgressPanelItemStatus ist eine Enumeration:

    public enum ProgressPanelItemStatus
    {
        Working = 0,
        Complete = 1,
        Failed = 2,
        Warning = 3,
        Unknown = 4
    }

    RaiseFailEvent

    Funktion

    Wird verwendet, um den Import des aktuellen Status mit einer Ausnahmebedingungsnachricht fehlschlagen zu lassen.

    IsRoleAssoicatedWithTeam

    Funktion

    Wird verwendet, um zu ermitteln, ob eine Rolle einem bestimmten Team zugeordnet ist.

    IsWorkflowActive

    Funktion

    Wird verwendet, um zu bestimmen, ob ein angegebener Workflow aktiv ist.

    PackageLog

    Klassenzeiger

    Dies ist ein Zeiger auf die initialisierte Protokollierungs-Schnittstelle für das Paket. Diese Schnittstelle wird von einem Paket verwendet, um Nachrichten und Ausnahmen in der Paketprotokolldatei zu protokollieren.

    RootControlDispatcher

    Eigenschaft

    Dies ist eine Verteilerschnittstelle, die verwendet wird, um dem Steuerelement zu ermöglichen, während der Paketbereitstellung eine eigene Benutzeroberfläche zu rendern. Sie verwenden diese Schnittstelle, um beliebige UI-Elemente oder -Befehle einzubinden. Es ist wichtig, diese Variable vor der Nutzung auf NULL-Werte zu prüfen, da sie auf einen Wert festgelegt sein können, oder nicht.

    CrmSvc

    Eigenschaft

    Dies ist ein Zeiger auf die CrmServiceClient-Klasse, die es einem Paket ermöglicht, aus dem Paket heraus Dynamics 365 zu adressieren. Diese Klasse wird verwendet, um Dynamics 365 SDK und weitere Aktionen in den überschriebenen Methoden auszuführen.

    DataImportBypass

    Eigenschaft

    Verwenden Sie dieses, um zu spezifizieren, ob CRM-Paketbereitstellungsprogramm alle Datenimport-Operationen überspringt, wie Import von Dynamics 365-Beispieldaten, von Textdateien und von Daten, die von Konfigurationsmigrationstool exportiert werden. Geben Sie true oder false an. Der Standardwert ist false.

    OverrideDataImportSafetyChecks

    Eigenschaft

    Verwenden Sie dieses, um zu spezifizieren, ob CRM-Paketbereitstellungsprogramm einige seiner Sicherheitskontrollen überspringt, was hilft, die Importleistung zu verbessern. Geben Sie true oder false an. Der Standardwert ist false.

    Sie sollten dieses nur dann auf true setzen, wenn die Dynamics 365-Zielinstanz keine Daten enthält.

  4. Speichern Sie Ihr Projekt, und bauen Sie es auf (Aufbauen > Lösung aufbauen), um das Paket zu erstellen. Ihr Paket ist die folgenden Dateien unter dem <Project>\Bin\Debug Ordner.

    • <PackageName>-Ordner: Der Ordnername ist derselbe, den Sie für Ihren Paketordnernamen im Schritt 2.g dieses Abschnitts geändert haben (Schritt 5: Definieren Sie benutzerdefinierten Code für Ihr Paket). Dieser Ordner enthält alle Lösungen, Konfigurationsdateien, Textdateien und Inhalte für Ihr Paket.

    • <PackageName>.dll: Die Assembly enthält den benutzerdefinierten Code für das Paket. Standardmäßig ist der Name der Assemblys identisch mit Visual Studio-Projektname.

    Der nächste Schritt ist, Ihr Paket bereitzustellen.

Ein Paket bereitstellen

Nachdem Sie ein Paket erstellt haben, können Sie es auf der Instanz Dynamics 365 bereitstellen, indem Sie entweder Paketbereitstellungstool oder Windows PowerShell verwenden. Ausführliche Informationen finden Sie unter TechNet: Pakete mit CRM-Package Deployer oder Windows PowerShell bereitstellen.

Bewährte Methoden zum Erstellen und Bereitstellen von Paketen

Beim Erstellen von Paketen, müssen Entwickler sicherstellen, dass die Paketassemblys signiert sind.

Beim Bereitstellen der Pakete müssen Dynamics 365-Administratoren Folgendes durchführen:

  • Auf einer signierten Paketassembly bestehen, damit Sie eine Assembly bis zu ihrer Quelle zurück nachverfolgen können.

  • das Paket auf einer Vor-Produktionsinstanz testen, (vorzugsweise als Spiegelbild der Produktionsinstanz), bevor sie in einer Produktionsinstanz ausgeführt wird.

  • Eine Sicherungskopie der Produktionsinstanz erstellen, bevor das Paket bereitgestellt wird.

Siehe auch

Neuerungen für Entwickler: Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright