Compartir a través de


Crear las clases de entidad con enlace en tiempo de compilación con la herramienta de generación de código

Importante

Si está utilizando Dataverse, debe usar el comando pac modelbuilder build de Power Platform CLI. CrmSvcUtil.exe sigue funcionando con Dataverse, pero recomendamos usar el pac modelbuilder build comando debido a la experiencia mejorada y las nuevas características que se agregarán. Obtenga más información sobre cómo generar clases de enlace en tiempo de compilación para el SDK para .NET con Dataverse.

Dado que la CLI de Power Platform no está disponible para Dynamics 365 Customer Engagement (on-premises), debe usar CrmSvcUtil.exe.

CrmSvcUtil.exe es una herramienta de generación de código de línea de comandos para su uso con Dynamics 365 for Customer Engagement. Esta herramienta genera clases de enlace en tiempo de compilación de .NET Framework que representan el modelo de datos de la entidad usado por Dynamics 365 Customer Engagement (on-premises).

La herramienta de generación de código (CrmSvcUtil.exe) se distribuye como parte del paquete NuGet Microsoft.CrmSdk.CoreTools . Para obtener información sobre cómo descargar la herramienta de generación de código (CrmSvcUtil.exe), consulte Herramientas de desarrollo de Dataverse.

Generar clases de entidad

La herramienta CrmSvcUtil crea un archivo de salida de Microsoft Visual C# o Visual Basic .NET que contiene clases fuertemente tipadas para las tablas de su entorno. Esto incluye tablas y columnas personalizadas. Este archivo de salida contiene una clase derivada de Entity para cada tabla, lo que proporciona un enlace temprano y compatibilidad con IntelliSense en Visual Studio para ayudarle a escribir código. Las clases generadas son clases parciales que se pueden ampliar con lógica de negocios personalizada en archivos separados. También puede escribir extensiones para esta herramienta para personalizar su funcionalidad. Para obtener más información, consulte Creación de extensiones para la herramienta de generación de código.

Generación de una clase OrganizationServiceContext

La herramienta también se puede utilizar para generar una clase derivada de la OrganizationServiceContext clase que actúa como contenedor de entidad en el EDM. Este contexto de servicio proporciona las facilidades para realizar un seguimiento de los cambios y administrar las identidades, la simultaneidad y las relaciones. Esta clase también expone un SaveChanges() método que escribe inserciones, actualizaciones y eliminaciones de filas de tabla en Dynamics 365 Customer Engagement (on-premises). Para obtener más información, vea Usar OrganizationServiceContext.

Usar clases generadas

Las clases creadas por la herramienta de generación de código están diseñadas para integrarse en una biblioteca de clases a la que pueden hacer referencia los proyectos que usan Dynamics 365 Customer Engagement (on-premises). Una vez que haya generado los archivos de clase con la herramienta, debe agregarlos al proyecto de Visual Studio. También debe agregar referencias a varios ensamblados de los que dependan las clases generadas.

A continuación se enumeran los ensamblados a los que se debe hacer referencia en el proyecto cuando se utiliza el archivo de código generado.

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

Estos ensamblados forman parte del paquete NuGet Microsoft.CrmSdk.CoreAssemblies o Microsoft.PowerPlatform.Dataverse.Client . Use uno de estos paquetes NuGet para agregar los ensamblados necesarios al proyecto de Visual Studio.

Ejecutar la herramienta de generación de código

La herramienta de generación de código toma varios parámetros que determinan el contenido del archivo que se crea. Los parámetros se pueden pasar desde la línea de comandos al ejecutar la herramienta o en un archivo de configuración de una aplicación conectada a .NET.

Ejecute la CrmSvcUtil.exe aplicación desde la carpeta donde está instalada. Si ejecuta la herramienta desde otra ubicación de carpeta, asegúrese de que haya una copia del Microsoft.Xrm.Sdk.dll ensamblado en esa misma carpeta.

En el ejemplo siguiente se muestra el formato para ejecutar la herramienta desde la línea de comandos con Dynamics 365 Customer Engagement (on-premises). Para utilizar un inicio de sesión de entorno interactivo, simplemente puede proporcionar estas opciones:

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

Cuando ejecute la herramienta con la opción interactivelogin (acceso directo il) se abrirá un cuadro de diálogo y podrá especificar sus credenciales de inicio de sesión y el servidor con el que desea conectarse.

También puede especificar los parámetros que desea pasar directamente en la línea de comandos o a través de un archivo por lotes (.bat) que puede ejecutar para generar nuevas clases.

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

Por ejemplo:

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

Nota:

En los ejemplos se utiliza el carácter de quilates (^) para dividir la lista de parámetros para facilitar la lectura. Puede redactar los parámetros del comando con argumentos mediante el bloc de notas y, a continuación, pegarlo en la línea de comandos.

  • Para los parámetros username y password, escriba el nombre de usuario y la contraseña que se usan para iniciar sesión en la configuración de Dynamics 365 Customer Engagement instalado localmente.
  • Para el url parámetro, puede buscar la dirección URL correcta en Power Apps o en la aplicación web heredada seleccionando Configuración, navegando a Personalizaciones y, a continuación, eligiendo Recursos para desarrolladores. La dirección URL se muestra en Servicio de organización.

Autenticación basada en declaraciones

En los ejemplos siguientes se muestra cómo utilizar la herramienta de generación de código con la autenticación basada en notificaciones. Tenga en cuenta que el nombre de usuario y la contraseña son parámetros opcionales. Si las credenciales para el servidor de Dynamics 365 Customer Engagement (on-premises) de destino están almacenadas en el almacén de credenciales de Windows, no es necesario que las proporcione para ejecutar la herramienta de generación de código.

Active Directory

En el ejemplo siguiente se muestra cómo ejecutar la herramienta de generación de código mediante la autenticación basada en declaraciones en Active Directory. Tenga en cuenta el uso de https porque este servidor de ejemplo utiliza la seguridad de la capa de transporte (TLS) o la capa de sockets seguros (SSL).

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

Implementación con conexión a Internet (IFD)

En el ejemplo siguiente se muestra cómo ejecutar la herramienta de generación de código mediante la autenticación de notificaciones con IFD.

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

Parámetros

Para ver los parámetros de línea de comandos admitidos más recientes, use el siguiente comando.

CrmSvcUtil.exe /?  

En la tabla siguiente se enumeran los parámetros de la herramienta de generación de código en el momento en que se actualizó por última vez este tema y se proporciona una breve descripción del uso de parámetros de comando.

Parámetro Acceso directo Descripción
url La dirección URL del servicio de la organización. Obligatorio, a menos que use interactivelogin
out o El nombre de archivo del código generado. Obligatorio
language l El idioma en el que se va a generar el código. Puede ser "CS" o "VB". El valor predeterminado es "CS".
namespace n El espacio de nombres para el código generado. El valor predeterminado es el espacio de nombres global.
username u El nombre de usuario que se utilizará cuando se conecte al servidor para la autenticación.
password p La contraseña que se usará cuando se conecte al servidor para la autenticación.
domain d El dominio en el que se va a autenticar cuando se conecta a un servidor local.
servicecontextname Nombre de la clase de contexto generada. Si no se proporciona ningún valor, no se crea ningún contexto de servicio.
help ? Mostrar información de uso.
nologo Suprima el banner en tiempo de ejecución.
generateActions Genere clases de solicitud y respuesta para acciones personalizadas.
interactivelogin il Cuando se usa, se muestra un cuadro de diálogo para iniciar sesión en el servicio Dynamics 365 Customer Engagement (on-premises). Se ignoran todos los demás parámetros relacionados con la conexión especificados en la línea de comandos.
connectionstring connstr Contiene información, proporcionada como una sola cadena, para conectarse a una organización de Dynamics 365 Customer Engagement (on-premises). Se ignoran todos los demás parámetros relacionados con la conexión especificados en la línea de comandos. Para obtener más información, consulte Uso de cadenas de conexión en herramientas XRM.
suppressGeneratedCodeAttribute sgca Suprime GeneratedCodeAttribute en todas las clases
emitfieldsclasses emitfc Genere una clase Fields por entidad que contenga todos los nombres de campo en el momento de la generación del código
entitynamesfilter Filtra la lista de entidades recuperadas al leer datos de Dynamics 365 Customer Engagement (on-premises). Se pasa como una lista separada por punto y coma con el formato <entitylogicalname>;<entitylogicalname>;...
messagenamesfilter Filtra la lista de mensajes que se recuperan al leer datos de Dynamics 365 Customer Engagement (on-premises). Se pasa como una lista separada por punto y coma. Los mensajes requeridos (Crear, Actualizar, Eliminar, Recuperar, Recuperar varios, Asociar y Desasociar) siempre se incluyen. Un * se puede usar para continuar o seguir un mensaje, permitiendo todos los mensajes que comienzan con una cadena o que terminan con ella. La lista toma la forma <messagename>;<nombre del mensaje>;...
splitfiles Divide la salida en archivos por tipo, organizados por entidad, mensaje y conjuntos de opciones. Cuando se habilita, la out propiedad se omite y outdirectory es obligatoria en su lugar
outdirectory outdir Escriba archivos de entidad, mensaje y conjunto de opciones en un directorio de salida especificado. Válido solo con la splitfiles opción
entitytypesfolder Nombre de la carpeta que contendrá las entidades. El nombre de carpeta predeterminado es "Entidades". Válido solo con la splitfiles opción.
messagestypesfolder Nombre de la carpeta que contendrá los mensajes. El nombre predeterminado es "Mensajes". Válido solo con la splitfiles opción
optionsetstypesfolder Nombre de la carpeta que contendrá los conjuntos de opciones. El nombre predeterminado es "OptionSets". Válido solo con splitfiles opción
generateGlobalOptionSets Emita todos los conjuntos de opciones globales. Nota: si una entidad contiene una referencia a un conjunto de opciones globales, se emitirá incluso si no está presente este conmutador.
legacyMode Deshabilite la emisión de conjuntos de opciones y muchas características de código más recientes para admitir la compatibilidad con extensiones personalizadas más antiguas

Utilice el archivo de configuración

El archivo de configuración CrmSvcUtil.exe.config debe estar en la misma carpeta que la herramienta CrmSvcUtil.exe. El archivo de configuración utiliza los pares clave/valor estándar de la appSettings sección. Sin embargo, si introduce un valor en la línea de comandos, se utilizará ese valor en lugar del que figura en el archivo de configuración. Se ignoran los pares clave-valor encontrados en el archivo de configuración de la aplicación que no coincidan con ninguno de los parámetros esperados.

No incluya los url parámetros y namespace en el archivo de configuración. Estos deben introducirse desde la línea de comandos cuando se ejecuta la herramienta CrmSvcUtil.exe.

En el ejemplo siguiente se muestra cómo configurar el archivo de salida y los parámetros de nombre de dominio en el archivo de configuración de la aplicación mediante teclas de método abreviado.

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

Habilitar seguimiento

Para habilitar el seguimiento al ejecutar la herramienta, agregue las siguientes líneas al archivo de configuración:

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

Para obtener más información sobre las opciones de seguimiento admitidas, consulte Configurar el seguimiento para herramientas XRM.

Herramientas de la comunidad

Early Bound Generator es una herramienta de la comunidad XrmToolbox. Consulte el tema Herramientas y recursos para desarrolladores para obtener más información sobre las herramientas desarrolladas por la comunidad.

Nota:

Las herramientas de la comunidad no son un producto de Microsoft y no amplían el soporte técnico a las herramientas de la comunidad. Si tiene alguna duda relacionada con la herramienta, póngase en contacto con el Editor. Más información: XrmToolBox.

Véase también

Herramientas de desarrollo para Dynamics 365 Customer Engagement (on-premises)
Creación de extensiones para la herramienta de generación de código
Programación en tiempo de ejecución y en tiempo de compilación