共用方式為


建立碼產生工具擴充功能

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

您可以指定其他命令列參數和參數值擴充碼產生工具功能。 若要指定參數,新增至下列命令:/<參數名稱>:<類別名稱>,<組件名稱>。 注意組件名稱 (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 365 Web 服務執行簡單的程式

Microsoft Dynamics 365

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