Impossible de comstackr le code lors de l’utilisation de la classe OrderClose

J’essaie de construire un plugin qui effectue certaines opérations sur une commande client. Je dois également définir un ordre comme rempli. J’ai trouvé dans la documentation du SDK un extrait qui doit être utilisé pour exécuter la commande correctement

var request = new FulfillSalesOrderRequest { OrderClose = new OrderClose { SalesOrderId = new EntityReference { LogicalName = orderEntityName, Id = orderId } }, Status = new OptionSetValue(newStatus) }; 

Le problème est que le code ne peut pas être compilé car MVS indique “Le nom du type ou de l’espace de nom ‘OrderClose’ est introuvable (vous manquez une directive using ou une référence d’assembly?)”. Clic droit sur “new OrderClose” (OrderClose est souligné en rouge) Je ne vois pas la section Résoudre dans le menu. J’ai aussi essayé de cette façon:

  var request = new FulfillSalesOrderRequest(); request.OrderClose = new OrderClose(); request.OrderClose.LogicalName = orderEntityName; request.OrderClose.Id = orderId; request.Status = new OptionSetValue(newStatus); 

Comment faire pour que le code soit compilé (et fonctionne, espérons-le)?

OrderClose n’étant pas une classe, mais le nom d’une propriété, vous ne pouvez pas la créer avec new .

Comme la propriété est de type Entity , vous devez créer une instance de Entity comme ceci:

 request.OrderClose = new Entity(); 

OrderClose est dans l’assembly “Microsoft.Crm.Sdk.Proxy” (dans Microsoft.Crm.Sdk.Proxy.dll)

Avez-vous ajouté Microsoft.Crm.Sdk.Proxy.dll comme référence? Pas seulement

 using Microsoft.Crm.Sdk.Messages; 

mais dans le volet de l’explorateur de solutions, cliquez avec le bouton droit de la souris sur Références> Ajouter une référence et choisissez Microsoft.Crm.Sdk.Proxy.dll.

Edit: Un clic droit sur quelque chose qui est rougi et choisir “Résoudre” ne fonctionnera que si le bon assemblage est référencé.

Il semble que l’exemple de code suppose que vous avez généré le code à liaison anticipée pour votre organisation. Si vous avez inclus le code de la première liaison dans votre projet, cette référence sera résolue. Voir ce lien:

https://msdn.microsoft.com/en-us/library/gg327844.aspx

CrmSvcUtil.exe fait partie du SDK CRM. Voici un modèle d’utilisation:

 CrmSvcUtil.exe /url:http:////XRMServices/2011/Organization.svc /out:.cs /username: /password: /domain: /namespace: /serviceContextName: 

C’est une demande liée tôt, c’est pourquoi vous ne pouvez pas comstackr si vous n’utilisez pas CrmScvUtil.

Voici un exemple de demande à liaison tardive:

Cet espace de noms est nécessaire.

 using Microsoft.Xrm.Sdk.Messages; 

Et c’est le code.

 var request = new FulfillSalesOrderRequest(); request.OrderClose = new Entity("orderclose"); request.OrderClose["salesorderid"] = new EntityReference("salesorder", new Guid("YOURGUID")); request.Status = new OptionSetValue(100001); service.Execute(request); 

100001 est le code de statut pour Terminé.

Si vous souhaitez gérer la réponse, utilisez une variable pour recevoir la réponse.