建立碼產生工具擴充功能
發行︰ 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. 著作權所有,並保留一切權利。 著作權