Criar pacotes para Dynamics 365 Package Deployer

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

O Microsoft Dynamics CRM Package Deployerpermite que os administradores implantem pacotes no Microsoft Dynamics 365 (online) e nas instâncias do Dynamics 365 (local). Um "pacote" pode consistir de todos ou qualquer um dos seguintes:

  • Um ou mais arquivos de solução do Dynamics 365.

  • Arquivos de dados simples ou exportados de configuração do Ferramenta de Migração de Configuração. Para obter mais informações sobre a ferramenta, consulte TechNet: Gerenciar dados de configuração.

  • Um código personalizado que pode ser executado antes, durante ou depois do pacote ser implantado na instância do Dynamics 365.

  • Um conteúdo HTML específico para o pacote que pode ser exibido no início e no final do processo de implantação. Isso pode ser útil para fornecer uma descrição das soluções e dos arquivos que são implantados no pacote.

O Microsoft Dynamics 365 fornece um modelo do Visual Studio para criar esses pacotes que podem ser usados com a Ferramenta de Implantação de Pacotes para implantá-los em uma instância do Dynamics 365.

Observação

Com a versão do CRM Online 2016 Update 1 e do CRM 2016 Service Pack 1 (local), o modelo do Visual Studio para criar pacotes do Dynamics 365 foi aperfeiçoado para adicionar suporte a novos recursos, como suporte ao parâmetro em tempo de execução, importação de arquivos de configuração de vários idiomas usando um único pacote, habilidade para controlar se a personalização deve ser substituída ou mantida ao atualizar soluções e muito mais. Os projetos de pacotes existentes podem ser atualizados para tirar proveito do novo conjunto de recursos por meio da atualização dos assemblies do Implantação de Pacotes do CRM que usam NuGet para a versão 8.1 ou posterior.

Neste tópico

Pré-requisitos

Crie um pacote

Implantar um pacote

Práticas recomendadas para a criação e implantação de pacotes

Pré-requisitos

  • Verifique se você tem as soluções e os arquivos prontos que deseja incluir no pacote.

  • Microsoft .NET Framework 4.5.2

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

  • Gerenciador de Pacotes NuGet para Visual Studio 2012, Visual Studio 2013 ou Visual Studio 2015

  • Modelos do SDK do Microsoft Dynamics 365 para o Visual Studio que contém o modelo de pacote. É possível obter um com as seguintes opções:

Crie um pacote

Siga as cinco etapas a seguir para criar um pacote:

1ª Etapa: Crie um projeto usando o modelo

2ª Etapa: Adicione os arquivos ao projeto

3ª Etapa: Atualize os arquivos HTML: inglês e outros idiomas

4ª Etapa: Especifique os valores de configuração do pacote

5ª Etapa: Defina o código personalizado para o pacote

1ª Etapa: Crie um projeto usando o modelo

  1. Inicie o Microsoft Visual Studio e crie um novo projeto.

  2. Na caixa de diálogo Novo projeto:

    1. Na lista de modelos instalados, expanda Visual C# e selecione Modelos do SDK do Dynamics 365.

    2. Verifique se o .NET Framework 4.5.2 está selecionado.

    3. Selecionar Dynamics 365 Package.

    4. Especifique o nome e o local do projeto e clique em OK.

    Novo projeto para criar um pacote personalizado

2ª Etapa: Adicione os arquivos ao projeto

  1. No painel do Explorador da solução, adicione as soluções e arquivos na pasta PkgFolder.

  2. Para cada arquivo adicionado da pasta PkgFolder, no painel Propriedades, defina o valor de Copiar para diretório de saída para Sempre copiar. Isso garante que o arquivo estará disponível no pacote gerado.

3ª Etapa: Atualize os arquivos HTML: inglês e outros idiomas

  1. No painel do Explorador da solução, expanda PkgFolder > Content > en-us. Você encontrará duas pastas chamadas WelcomeHTML e EndHTML. Essas pastas contêm o arquivo HTML e os arquivos associados que permitem exibir as informações no final e no início do processo de implantação do pacote. Edite os arquivos da pasta HTML desses arquivos para adicionar informações ao pacote.

  2. Também é possível adicionar os arquivos HTML do pacote em outros idiomas, para que o conteúdo no HTML seja exibido no idioma com base nas configurações da localidade do computador do usuário. Para fazer isto:

    1. Crie uma cópia da pasta en-us em PkgFolder > Content.

    2. Renomeie a pasta copiada para o idioma adequado. Por exemplo, para o idioma espanhol, renomeie-a para es-ES.

    3. Modifique o conteúdo dos arquivos HTML para adicionar o conteúdo em espanhol.

4ª Etapa: Especifique os valores de configuração do pacote

  1. Defina a configuração do pacote adicionando informações sobre o pacote no arquivo ImportConfig.xml, disponível em PkgFolder. Clique duas vezes no arquivo para abri-lo para edição. A tabela a seguir lista as informações sobre cada parâmetro e nó do arquivo de configuração.

    Parâmetro/Nó

    Descrição

    installsampledata

    True ou false. Se true, instala dados de exemplo na instância do Dynamics 365. Esses são os mesmos dados de exemplo que você pode instalar na área Configurações > Gerenciamento de Dados no Dynamics 365.

    waitforsampledatatoinstall

    True ou false. Se true e se installsampledata também for configurado para true, aguarda a instalação dos dados de exemplo antes da implantação do pacote.

    Observação

    Defina installsampledata como true se estiver definindo waitforsampledatatoinstall como true.

    agentdesktopzipfile

    Nome do arquivo .zip que será desempacotado. Se você especificar um nome de arquivo .zip aqui, ele adiciona uma tela durante o processo de implantação do pacote que solicita a seleção de um local onde você deseja desempacotar o conteúdo do arquivo.

    Isso é geralmente usado para a criação de pacotes para o Unified Service Desk for Microsoft Dynamics 365. Para obter informações sobre a Unified Service Desk, consulte TechNet: Guia de Administração do Unified Service Desk.

    agentdesktopexename

    Nome do arquivo .exe ou .msi do arquivo .zip ou uma URL que será invocada no final do processo de implantação.

    Isso é geralmente usado para a criação de pacotes para a Unified Service Desk.

    crmmigdataimportfile

    Nome do arquivo de dados de configuração (.zip) padrão exportados com a Ferramenta de Migração de Configuração.

    • Você também pode importar uma versão localizada de dados de configuração com base na ID de localidade (LCID) usando novas definições especificadas em tempo de execução (durante a execução do package deployer. Use o nó de <cmtdatafile> (explicado posteriormente) para especificar as versões localizadas de dados de configuração em um pacote e depois usar o método OverrideConfigurationDataFileLanguage (explicado posteriormente) para especificar a lógica para importar o arquivo de dados de configuração com base na ID de localidade especificada usando as configurações em tempo de execução. Não é possível importar mais de um arquivo de dados de configuração usando um pacote de cada vez.

    • No Dynamics 365(local), se seu arquivo de dados de configuração contiver informações de usuários e as instâncias de origem e de destino do Dynamics 365 estiverem no mesmo Domínio do Active Directory, as informações dos usuários serão importadas para a instância de destino do Dynamics 365. Para importar informações de usuários em uma instância do Dynamics 365(local) em outro domínio, você deve incluir o arquivo de mapa de usuário (.xml) gerado com o Ferramenta de Migração de Configuração em seu projeto e especifique-o junto com o arquivo de dados de configuração com o atributo usermapfilename no nó <cmtdatafile> explicado posteriormente. As informações de usuário não podem ser importadas em instâncias do Dynamics 365 (online).

    nó de <solutions>

    Contém uma matriz de nós do <configsolutionfile> que descreve as soluções que serão importadas. A ordem das soluções nesse nó indica a ordem em que as soluções serão importadas na instância de destino do Dynamics 365.

    nó de <configsolutionfile>

    Use esse nó no nó <solutions> para especificar as soluções individuais e as seguintes informações de cada solução a ser importada:

    • solutionpackagefilename: especifique o nome de arquivo .zip da sua solução. Necessário.

    • overwriteunmanagedcustomizations: especifique se as personalizações não gerenciadas devem ser substituídas ao importar uma solução já existente na instância de destino do Dynamics 365. Isso é opcional, e se você não especificar esse atributo, as personalizações não gerenciadas na solução existente serão mantidas na instância de destino do Dynamics 365 por padrão.

    • publishworkflowsandactivateplugins: especifique se os fluxos de trabalho devem ser publicados e se os plug-ins devem ser ativados na instância de destino do Dynamics 365 depois que a solução for importada. Isso é opcional, e se você não especificar esse atributo, os fluxos de trabalho serão publicados e os plug-ins serão ativados por padrão depois que a solução for importada na instância de destino do Dynamics 365.

    É possível adicionar vários nomes de arquivo da solução em um pacote, adicionando vários nós do <configsolutionfile>. Por exemplo, se desejar importar três arquivos da solução, adicione-os da seguinte forma:

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

    <nó de filestoimportnode>

    Contém uma matriz de nós do <configimportfile> e <zipimportdetails> usados para descrever os arquivos individuais e os arquivos .zip, respectivamente, que serão importados.

    nó de <configimportfile>

    Use este nó no nó do <configimportfile> para descrever um arquivo que será importado para o Dynamics 365. É possível adicionar vários arquivos em um pacote, adicionando vários nós do <configimportfile>.

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

    Ele tem os seguintes atributos:

    Atributo

    Descrição

    filename

    Nome do arquivo que contém os dados de importação. Se o arquivo for um arquivo .zip, o nó de <zipimportdetails> deve estar presente com um nó de <zipimportdetail> para cada arquivo do arquivo .zip.

    filetype

    Ele pode ser csv, xml ou zip.

    associatedmap

    Nome do mapa de dados de importação do Dynamics 365 que será usado com este arquivo. Se estiver em branco, fará uma tentativa de usar o nome do mapa de dados de importação determinado pelo sistema para este arquivo.

    importtoentity

    Pode ser o nome do .exe no arquivo .zip, uma URL ou um arquivo .msi que fornece um link para invocar o final do processo.

    datadelimiter

    Nome do delimitador de dados usado no arquivo de importação. Os valores válidos são singlequote ou doublequotes.

    fielddelimiter

    Nome do delimitador de campos usado no arquivo de importação. Os valores válidos são comma, colon ou singlequote.

    enableduplicatedetection

    Indica se as regras de detecção de duplicidades devem ser habilitadas durante a importação de dados. Os valores válidos são true ou false.

    isfirstrowheader

    Usado para indicar se a primeira linha do arquivo de importação contém os nomes dos campos. Os valores válidos são true ou false.

    isrecordownerateam

    Indica se o proprietário do registro da importação precisa ser uma equipe. Os valores válidos são true ou false.

    owneruser

    Indica o ID de usuário que deve ser o proprietário dos registros. O valor padrão é o usuário atualmente conectado.

    waitforimporttocomplete

    Se true, o sistema aguarda a conclusão da importação antes de continuar. Se false, ele coloca os trabalhos na fila e continua.

    nó de <zipimportdetails>

    Este nó contém uma matriz de nós de <zipimportdetail> que descreve os arquivos incluídos em um arquivo .zip que será usado para a importação para o Dynamics 365.

    nó de <zipimportdetail>

    Use este nó no nó de <zipimportdetails> para fornecer informações sobre um arquivo individual em um arquivo .zip que é especificado no nó de <configimportfile>.

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

    Ele tem os seguintes atributos:

    Atributo

    Descrição

    filename

    Nome do arquivo que contém os dados de importação.

    filetype

    Ele pode ser csv ou xml.

    importtoentity

    Pode ser o nome do .exe no arquivo .zip, uma URL ou um arquivo .msi que fornece um link para invocar o final do processo.

    nó de <filesmapstoimport>

    Este nó contém uma matriz de nós de <configmapimportfile> que serão importados. A ordem dos arquivos do mapa neste nó indica a ordem na qual são importados. Para obter mais informações sobre mapas de dados, consulte Criar mapas de dados para importação.

    nó de <configimportmapfile>

    Use este nó no nó de <filesmapstoimport> para fornecer informações sobre um arquivo de mapa individual que será importado no Dynamics 365.

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

    <cmtdatafiles>

    Esse nó contém uma matriz de nós de <cmtdatafile> que contém versão localizada dos arquivos de dados de configuração a serem importados.

    <cmtdatafile>

    Use esse nó no nó de <cmtdatafiles> para especificar os arquivos de dados de configuração encontrados no arquivo de mapa das informações de identificação de localidade (necessário) e usuário (opcional). Por exemplo:

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

    Você pode configurar o método na lógica personalizada em OverrideConfigurationDataFileLanguage (explicado posteriormente) para importar dados de um arquivo que pode ser encontrado em vez de configuração do padrão (especificado em crmmigdataimportfile) baseado no valor de LCID (ID de localidade) usando as configurações do tempo de execução (explicado posteriormente).

  2. Clique em Salvar todos.

    O seguinte representa o conteúdo de um arquivo ImportConfig.xml de exemplo.

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

5ª Etapa: Defina o código personalizado para o pacote

  1. No painel do Explorador da solução, clique duas vezes no arquivo PackageTemplate.cs na raiz para editá-lo.

  2. No arquivo PackageTemplate.cs, é possível.

    1. Digite o código personalizado que será executado quando o pacote é inicializado na definição do método de substituição de InitializeCustomExtension.

      Esse método pode ser usado para permitir que os usuários usem os parâmetros em tempo de execução ao executar um pacote. Como desenvolvedor, você pode adicionar suporte a todos os parâmetros em tempo de execução a seu pacote usando a propriedade RuntimeSettings desde que você tenha código para processá-los com base na entrada do usuário.

      Por exemplo, o código de exemplo a seguir permite um parâmetro em tempo de execução chamado SkipChecks para o pacote que contém dois valores possíveis: true ou false. O código de exemplo verifica se o usuário especificou os parâmetros em tempo de execução ao executar Implantação de Pacotes do CRM (usando a linha de comandos ou o PowerShell) e, em seguida, processa as informações de forma adequada. Se nenhum parâmetro em tempo de execução for especificado pelo usuário durante a execução do pacote, o valor da propriedade RuntimeSettings será 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");
      }
      

      Isso permite que o administrador use a linha de comandos ou o cmdlet Import-CrmPackage para especificar se as verificações de segurança devem ser ignoradas ao executar o Ferramenta de Implantação de Pacotes para importar o pacote. Mais informações: TechNet: Implantar pacotes usando o CRM Package Deployer e o Windows PowerShell

    2. Digite o código personalizado a ser executado antes de as soluções serem importadas na definição do método de substituição PreSolutionImport para especificar se as personalizações devem ser mantidas ou substituídas ao atualizar a solução especificada em uma instância de destino do Dynamics 365 e se os plug-ins e os fluxos de trabalho devem ser ativados automaticamente.

    3. Use a definição do método de substituição de RunSolutionUpgradeMigrationSteppara executar a transformação de dados ou para a atualização entre duas versões de uma solução. Esse método é chamado apenas se a solução que você está importando já estiver presente na instância de destino do Dynamics 365.

      Esta função espera os seguintes parâmetros:

      Parâmetro

      Descrição

      solutionName

      Nome do fornecedor da solução

      oldVersion

      Número de versão da solução antiga

      newVersion

      Número de versão da nova solução

      oldSolutionId

      GUID da solução antiga.

      newSolutionId

      GUID da nova solução.

    4. Digite o código personalizado a ser executado antes da conclusão da importação da solução na definição da substituição do método BeforeImportStage. Os dados de exemplo e alguns arquivos simples para soluções especificadas no arquivo ImportConfig.xml são importados antes da importação da solução ser concluída.

    5. Substitua o idioma atual selecionado para a importação dos dados de configuração usando a definição do método de substituição OverrideConfigurationDataFileLanguage. Se a LCID (identificação de localidade) do idioma especificado não for encontrada na lista de idiomas disponíveis no pacote, o arquivo de dados padrão será importado.

      Especifique os idiomas disponíveis para os dados de configuração no nó <cmtdatafiles> no arquivo ImportConfig.xml. O arquivo de importação de dados de configuração padrão é especificado no atributo crmmigdataimportfile no arquivo ImportConfig.xml.

      Ignorar as verificações de dados (OverrideDataImportSafetyChecks = true) pode ser eficaz aqui se você tiver certeza de que a instância de destino do Dynamics 365 não contém nenhum dado.

    6. Digite o código personalizado a ser executado depois da conclusão da importação na definição da substituição do método AfterPrimaryImport. Os arquivos simples restantes que não foram importados anteriormente, antes do início da importação da solução, agora são importados.

    7. Altere o nome padrão da pasta do pacote de PkgFolder para o nome de pacote desejado. Para fazer isso, renomeie a pasta PkgFolderno painel do Gerenciador de Soluções e edite o valor de retorno na propriedade GetImportPackageDataFolderName.

      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. Altere o nome do pacote editando o valor de retorno na propriedade GetNameOfImport.

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

      Este é o nome do pacote que será exibido na página de seleção do pacote no assistente do Implantação de Pacotes do CRM.

    9. Altere a descrição do pacote editando o valor de retorno na propriedade GetImportPackageDescriptionText.

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

      Esta é a descrição do pacote que será exibida com o nome do pacote na página de seleção do pacote no assistente do Package Deployer.

    10. Altere o nome longo do pacote editando o valor de retorno na propriedade GetLongNameOfImport.

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

      O nome longo do pacote é exibido na página seguinte, após a seleção do pacote que será instalado.

  3. Além disso, as seguintes funções e variáveis estão disponíveis para o pacote:

    Nome

    Tipo

    Descrição

    CreateProgressItem

    Função

    Usada para criar um novo item de progresso na interface do usuário (IU).

    RaiseUpdateEvent

    Função

    Usada para atualizar o progresso criado pela chamada para CreateProgressItem.

    ProgressPanelItemStatus é uma enumeração:

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

    RaiseFailEvent

    Função

    Usada para causar uma falha na importação do status atual com uma mensagem de exceção.

    IsRoleAssoicatedWithTeam

    Função

    Usada para determinar se uma função é associada a uma equipe especificada.

    IsWorkflowActive

    Função

    Usada para determinar se um fluxo de trabalho especificado está ativo.

    PackageLog

    Ponteiro de classes

    Este é o ponteiro na interface de log inicializada do pacote. Esta interface é utilizada por um pacote para registrar em log as mensagens e exceções no arquivo de log do pacote.

    RootControlDispatcher

    Propriedade

    Esta é uma interface de distribuidor utilizada para permitir que o controle renderize sua própria interface do usuário durante a implantação do pacote. Utilize esta interface para encapsular os elementos ou comandos da interface do usuário. É importante verificar esta variável para valores nulos antes de usá-lo como pode ou não pode ser definido para um valor.

    CrmSvc

    Propriedade

    É um ponteiro para a classe CrmServiceClient que permite que um pacote enderece o Dynamics 365 a partir do pacote. Use para executar o SDK do Dynamics 365 e outras ações nos métodos substituídos.

    DataImportBypass

    Propriedade

    Use para especificar se o Implantação de Pacotes do CRM ignora todas as operações de importação de dados, como a importação de dados de exemplo do Dynamics 365, dados de arquivos simples e dados exportados do Ferramenta de Migração de Configuração. Especifique true ou false. O padrão é false.

    OverrideDataImportSafetyChecks

    Propriedade

    Use para especificar se o Implantação de Pacotes do CRM ignorará algumas de suas verificações de segurança, o que ajuda a melhorar o desempenho da importação. Especifique true ou false. O padrão é false.

    Defina como true apenas se a instância de destino do Dynamics 365 não contiver nenhum dado.

  4. Salve o projeto e compile-o (Compilação > Compilar solução) para criar o pacote. Seu pacote são os seguintes arquivos na pasta <Project>\Bin\Debug.

    • Pasta <PackageName>: o nome da pasta é igual ao nome que você alterou para a pasta do pacote na etapa 2.g desta seção (Etapa 5: Defina o código personalizado para o pacote.) Essa pasta contém todas as soluções, os dados de configuração, os arquivos simples e o conteúdo de seu pacote.

    • <PackageName>.dll: o assembly contém o código personalizado de seu pacote. Por padrão, o nome do assembly será igual ao nome do seu projeto do Visual Studio.

    A próxima etapa é implantar o pacote.

Implantar um pacote

Depois de criar um pacote, é possível implantá-lo na instância do Dynamics 365 usando a Ferramenta de Implantação de Pacotes ou o Windows PowerShell. Para obter informações detalhadas, consulte TechNet: Implantar pacotes usando o Package Deployer do CRM ou o Windows PowerShell.

Práticas recomendadas para a criação e implantação de pacotes

Ao criar pacotes, os desenvolvedores devem verificar se os assemblies do pacote estão conectados.

Durante a implantação dos pacotes, os administradores do Dynamics 365 devem:

  • Insista em um assembly de pacote assinado para que você possa rastrear um assembly de volta para sua origem.

  • Teste o pacote em uma instância pré-produção (preferivelmente uma imagem espelhada da instância de produção) antes de executar em uma instância de produção.

  • Faça o backup da instância de produção antes de implantar o pacote.

Confira Também

Novidades para desenvolvedores: Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais