Reducir el tamaño del ensamblaje del flujo de trabajo
Frecuentes
Visto 261 equipos
0
¿Cómo se puede reducir el tamaño (MB) de un conjunto de flujo de trabajo?
Un ensamblado con 4 actividades de flujo de trabajo personalizadas ocupa 2.5 MB con la clase que crmcsvutil.exe genera desde CRM; ¡el mismo ensamblaje es de 18 KB cuando la clase generada no está incluida en el proyecto!
El registro del complemento a menudo falla después de que se agota el tiempo de espera, por lo que realmente me gustaría reducir el tamaño del ensamblaje.
Intenté colocar la clase generada en un ensamblaje separado y hacer referencia a él, y colocar el ensamblaje en el GAC, pero aparece un error.
Aquí es cuando el ensamblado se registra en el sandbox (que realmente prefiero):
Assembly 'Tinkerbell.Workflows, Version=2.0.3.4, Culture=neutral, PublicKeyToken=692195edcbe6b163' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted.'
Esto es cuando el ensamblado se registra fuera de la zona de pruebas:
'Object of type 'Microsoft.Xrm.Sdk.Entity' cannot be converted to type 'BusinessUnit'.'
¿Cuáles son las opciones aquí?
No estoy dispuesto a renunciar a las clases obligatorias tempranas.
2 Respuestas
2
Puede generar solo las entidades vinculadas tempranas que necesita, con esta utilidad Filtrado de entidades generadas con CrmSvcUtil.
Solo necesita especificar un xml con las entidades deseadas:
<filter>
<entities>
<entity>systemuser</entity>
<entity>team</entity>
<entity>role</entity>
<entity>businessunit</entity>
</entities>
</filter>
Respondido 12 Feb 14, 10:02
1
Puede editar manualmente el archivo de clase que genera CRM para eliminar todas las entidades que necesita, excepto las que necesita, pero eso sería un poco molesto y tendría que volver a hacerlo si alguna vez regenera el archivo de clase de CRM.
¿Hay alguna razón por la que no quieras abandonar las clases tempranas? El límite tardío tiene algunas ventajas y es un poco más rápido. Si desea mantener la sensación de límite inicial, puede escribir sus propias clases y luego escribir funciones de mapeo que se traduzcan de sus clases a entidades.
Respondido 12 Feb 14, 08:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas dynamics-crm-2011 dynamics-crm dynamics-crm-2013 or haz tu propia pregunta.
No quiero renunciar a Linq por CRM. ¿Puedo seguir usando Linq sin las clases generadas? - Bvrce
Realmente no, tendría que usar algunos de los otros métodos para obtener datos de CRM, una vez que tenga esos datos, aún puede usar LINQ to Objects. Personalmente, uso QueryExpression a menos que necesite hacer agregados, luego uso FetchXML. Luego escribo mis propias clases para contener mi lógica de negocios y finalmente mapeo funciones para traducir entre los dos. Si desea seguir con LINQ to CRM, tendrá que recortar el archivo generado por CRM. - Kevin Ross
Necesitaría una cortadora de césped industrial para recortar ese archivo. Gracias por la información sobre cómo consultar CRM. Soy consciente de que existen beneficios de rendimiento para FetchXML y QueryExpression, pero la legibilidad y la facilidad de uso de Linq to CRM son excelentes. - Bvrce
¿Tiene alguna idea de por qué aparece ese error al registrar el ensamblado fuera de la zona de pruebas? Me gustaría tener la clase generada en un ensamblado en el GAC, pero sigo recibiendo ese error o similar dependiendo de la entidad. - Bvrce
Lo siento pero no puedo ayudarte en eso. Con el único complemento que tengo que usa clases de Early Bound, he incluido el archivo de clase dentro de la DLL del complemento para que no tenga que intentar obtenerlo del GAC. - Kevin Ross