建立碼產生工具擴充功能

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

您可以指定其他命令列參數和參數值擴充碼產生工具功能。 若要指定參數,新增至下列命令:/<參數名稱>:<類別名稱>,<組件名稱>。 注意組件名稱 (assembly name) 不可以包括 .dll 擴充功能。 此外,您可以將量值以此格式加入 "<add key="<parametername>"value="<class name>,<assembly name>"/>"。

下表列出可使用的參數。

參數名稱

介面名稱

描述

/codecustomization

ICustomizeCodeDomService

在 CodeDOM 產生完成之後呼叫,假設 ICodeGenerationService 的預設執行個體。 在產生其他類別非常實用,例如挑選清單中的報表。

/codewriterfilter

ICodeWriterFilterService

在 CodeDOM 產生的過程中呼叫,假設 ICodeGenerationService 的預設執行個體,以決定是否應該發生特定物件或屬性。

/codewritermessagefilter

ICodeWriterMessageFilterService

在 CodeDOM 產生的過程中呼叫,假設 ICodeGenerationService 的預設執行個體,以決定是否應該發生特定訊息。 這不應該用於要求/回應,因為此兩項目已產生於 Microsoft.Xrm.Sdk.dll 和 Microsoft.Crm.Sdk.Proxy.dll 中。

/metadataproviderservice

IMetadataProviderService

呼叫伺服器擷取中繼資料。 這可能會在過程中多次呼叫,因此應該快取此資料。

/codegenerationservice

ICodeGenerationService

產生的 CodeDOM 核心實作。 如果變更,其他擴充功能不支援在執行描述之方法。

/namingservice

INamingService

在 CodeDOM 產生時決定物件名稱,假設預設實作。

這些介面實作必須有下列建構函式其中一項:

MyNamingService()
MyNamingService(INamingServicedefaultService)
MyNamingService(IDictionary<string, string> parameters)
MyNamingService(INamingServicedefaultService, IDictionary<string, string> parameters)

Microsoft.Crm.Services.Utility 名稱空間會在 CrmSvcUtil.exe 中定義。 在您的 Microsoft Visual Studio 碼產生工具擴充專案中新增 CrmSvcUtil.exe 的參照。

用於為選項組產生列舉的範例擴充功能

下列範例程式碼示範如何編寫擴充功能。


using System;

using Microsoft.Crm.Services.Utility;
using Microsoft.Xrm.Sdk.Metadata;

/// <summary>
/// Sample extension for the CrmSvcUtil.exe tool that generates early-bound
/// classes for custom entities.
/// </summary>
public sealed class BasicFilteringService : ICodeWriterFilterService
{
    public BasicFilteringService(ICodeWriterFilterService defaultService)
    {
        this.DefaultService = defaultService;
    }

    private ICodeWriterFilterService DefaultService { get; set; }

    bool ICodeWriterFilterService.GenerateAttribute(AttributeMetadata attributeMetadata, IServiceProvider services)
    {
        return this.DefaultService.GenerateAttribute(attributeMetadata, services);
    }

    bool ICodeWriterFilterService.GenerateEntity(EntityMetadata entityMetadata, IServiceProvider services)
    {
        if (!entityMetadata.IsCustomEntity.GetValueOrDefault()) { return false; }
        return this.DefaultService.GenerateEntity(entityMetadata, services);
    }

    bool ICodeWriterFilterService.GenerateOption(OptionMetadata optionMetadata, IServiceProvider services)
    {
        return this.DefaultService.GenerateOption(optionMetadata, services);
    }

    bool ICodeWriterFilterService.GenerateOptionSet(OptionSetMetadataBase optionSetMetadata, IServiceProvider services)
    {
        return this.DefaultService.GenerateOptionSet(optionSetMetadata, services);
    }

    bool ICodeWriterFilterService.GenerateRelationship(RelationshipMetadataBase relationshipMetadata, EntityMetadata otherEntityMetadata,
    IServiceProvider services)
    {
        return this.DefaultService.GenerateRelationship(relationshipMetadata, otherEntityMetadata, services);
    }

    bool ICodeWriterFilterService.GenerateServiceContext(IServiceProvider services)
    {
        return this.DefaultService.GenerateServiceContext(services);
    }
}

您可以找到此範例程式碼和 GeneratePicklistEnums 範例延伸模組 (在 SDK 的下列資料夾 SampleCode\CS\CrmSvcUtilExtensions)。下載 Microsoft Dynamics CRM SDK 套件。GeneratePicklistEnums 範例擴充輸出包含所有選項組、狀態碼與狀態碼的列舉原始碼資料。 如需範例說明如何使用這些列舉,請參閱 SampleCode\CS\QuickStart 範例。

另請參閱

使用程式碼產生工具 (CrmSvcUtil.exe) 建立早期繫結實體類別
使用早期繫結實體類別,進行建立、更新和刪除
疑難排解提示
使用 Microsoft Dynamics CRM 2015 Web 服務執行簡單的程式

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權