使用OrderClose类时无法编译代码

我正在尝试构建一个在销售订单上执行某些操作的插件。 我还必须将订单设置为已履行。 我在SDK文档中找到了必须用于以正确方式完成订单的提取

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

问题是代码无法编译,因为MVS说“无法找到类型或命名空间名称’OrderClose’(你是否缺少using指令或程序集引用?)”。 右键单击“new OrderClose”(OrderClose带有红色下划线)我看不到菜单中的Resolve部分。 我也尝试过这种方式:

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

如何编写代码(并希望有效)?

由于OrderClose不是类,而是属性的名称,因此无法使用new创建它。

由于属性是Entity类型,您需要创建一个Entity实例,如下所示:

 request.OrderClose = new Entity(); 

OrderClose在程序集“Microsoft.Crm.Sdk.Proxy”中(在Microsoft.Crm.Sdk.Proxy.dll中)

您是否添加了Microsoft.Crm.Sdk.Proxy.dll作为参考? 不只是

 using Microsoft.Crm.Sdk.Messages; 

但实际上转到解决方案资源管理器窗格并右键单击引用>添加引用并选择Microsoft.Crm.Sdk.Proxy.dll。

编辑:右键单击红色波浪状的东西并选择“Resolve”将无效,除非引用了正确的程序集。

听起来好像示例代码假定您已为组织生成了早期绑定代码。 如果您在项目中包含早期绑定代码,则此引用将得到解决。 看到这个链接:

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

CrmSvcUtil.exe是CRM SDK的一部分。 这是一个如何使用它的模板:

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

这是一个早期绑定请求,这就是为什么你不能编译,如果你没有使用CrmScvUtil。

这是后期绑定请求的示例:

需要此命名空间。

 using Microsoft.Xrm.Sdk.Messages; 

这是代码。

 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是Complete的状态代码。

如果要处理响应,请使用变量来接收答案。