2012-01-25 16 views
12

estoy usando CrmSvUtil esta manera:CrmSvcUtil es sólo la creación derivants OrganizationServiceContext (debe ser CrmOrganizationServiceContext)

crmsvcutil.exe /url:http://crm2011/MyTestOrg/XRMServices/2011/Organization.svc /out:GeneratedCode.cs /namespace:Xrm /serviceContextName:XrmDataContext 

Y la salida contiene miles de objetos de negocio y esta clase de contexto:

[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9688.1533")] 
public partial class XrmDataContext : Microsoft.Xrm.Sdk.Client.OrganizationServiceContext 

Pero mirando las muestras (es decir. \ Sdk \ walkthroughs \ portal \ consoleappwalkthrough) claramente puedo ver que la clase de contexto debe derivarse de una subclase más poderosa de Org anizationServiceContext -> CrmOrganizationServiceContext:

[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9688.583")] 
public partial class XrmServiceContext : Microsoft.Xrm.Client.CrmOrganizationServiceContext 

Definitivamente necesito CrmOrganizationServiceContext porque sólo entonces tengo los constructores que necesito. Entonces, ¿qué estoy haciendo mal o qué configuración perdí?

+3

Esto causará problemas si usa el código generado en un plugin/actividad personalizada ya que toma una dependencia en microsoft.xrm.client.dll. Esta DLL no está incluida en la instalación del servidor por defecto y deberá asegurarse de que la DLL esté presente en el servidor (dev/qa/prod). Decidí no usar el/codecustomization flag por ese motivo y decidí seguir con la clase derivada "OrganizationContext". –

+0

Bueno saberlo. Mi caso de uso actual eran herramientas externas de importación/exportación de datos (consola-aplicaciones) que acceden a CRM en la red local. – springy76

+0

Hola, gracias Springy76 por plantearme la pregunta exacta que tuve, y gracias Abhijeet Patel por publicar la respuesta; sin embargo, estoy atascado con una pregunta más sobre cuándo usar uno de los métodos mencionados anteriormente. ¿Hay alguna ventaja de una sobre la otra, que no sea la dll que está disponible en el servidor de prod? – Jaya

Respuesta

14

Consulte los parámetros dados en el web version de esa muestra de SDK. Generarán la clase que estás buscando.

CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" /out:Xrm\Xrm.cs /url:http://Crm/Contoso/XRMServices/2011/Organization.svc /domain:CONTOSO /username:administrator /password:[email protected] /namespace:Xrm /serviceContextName:XrmServiceContext 
+2

Me encantan los parámetros de la CLI "indocumentados". ¿Tal vez haya alguno para crear una clase por archivo como fue posible con v4? R # está muriendo en estos archivos C# 5MB. – springy76

+0

Como se mencionó, puede filtrar el archivo 'Xrm.cs' predeterminado para incluir únicamente las entidades que le interesan con cierto grado de satisfacción. Menciono algunas maneras de hacer esto en una pregunta reciente que hice. http://stackoverflow.com/questions/8946223/how-can-i-make-crmsvcutil-exe-generate-unduplicated-error-free-early-bound-opti –

+0

@ springy76: Y sí, estas características indocumentadas me están matando . No veo las especificaciones para el parámetro '/ codeCustomization' en ningún lado, pero son cosas como esta las que necesitamos. –

1

Uso del Early Bound Generator y seleccione comprobar la casilla de verificación "Cliente Uso Xrm". Generará el contexto con la clase base que estás esperando.

Cuestiones relacionadas