将CRM代理类生成为单独的文件

时间:2014-02-04 05:18:33

标签: c# proxy dynamics-crm-2011 dynamics-crm-4

我一直在使用引用Dynamics CRM租户的旧程序集。程序集包含(除其他外)租户的代理类。我需要将代理类更新到最新版本。

我过去曾使用crmsvcutil.exe为租户生成代理类文件,但在此程序集中,每个类都在各自的单独文件中。例如,有一个'person'c-sharp文件,其中包含person实体和get / set方法的变量。

当前文件采用以下格式:

using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;
namespace CRM2011.Proxy.Organisation
{
    [GeneratedCode("System.Xml", "4.0.30319.1"), DesignerCategory("code"), DebuggerStepThrough, XmlType(Namespace = "http://schemas.microsoft.com/crm/2007/WebServices")]
    [Serializable]
public class thr_offer : BusinessEntity
{
    private Lookup createdbyField;
    private CrmDateTime createdonField;
    //More variables here
    public Lookup createdby
    {
        get
        {
            return this.createdbyField;
        }
        set
        {
            this.createdbyField = value;
        }
    }
    public CrmDateTime createdon
    {
        get
        {
            return this.createdonField;
        }
        set
        {
            this.createdonField = value;
        }
    }
    //More get/set methods here
}

这些似乎是由工具生成的,但我不知道有任何工具可以执行此操作。如果我可以生成这些文件而不是crmsvcutil.exe生成的怪异文件,那么它将使开发变得更加容易。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用CRM 4.0 SDK生成文件(CrmDateTime响铃)。

使用CRM 4.0 SDK中的CrmSvcUtil.exe,可以生成单独的文件,如下所示:

http://msdn.microsoft.com/en-us/library/ff681563.aspx

  

/ out参数

     

确定.cs或.xml输出文件的名称以及是否存在   是一个文件或每个实体一个。它可能包括完整路径。如果你   指定一个不以.cs或.xml结尾的名称,CrmSvcUtil将   为系统中的每个实体写一个单独的.cs文件   您指定的文件夹。例如,/ out:MyClasses输出一个类文件   (.cs)为每个实体提供一个名为MyClasses的文件夹。但是,   /out:MyClasses.cs输出包含的类文件(MyClasses.cs)   所有实体。

此“功能”已从CRM 2011 SDK中删除(如果您尝试指定不带文件扩展名的名称,它仍会生成单个文件)

答案 1 :(得分:1)

您必须创建一个拼接器,在它们生成单个文件后为您拼接实体,或创建CrmSvcUtil扩展,为您执行此基本行为更改。

编辑 XrmToolBox中的早期绑定生成器通过配置执行。