Del via


Oprette udvidelser til værktøjet til oprettelse af kode

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Du kan udvide funktionaliteten af værktøjet til oprettelse af kode ved at angive yderligere kommandolinjeparametre og parameterværdier. Hvis du vil angive en parameter, skal du tilføje følgende på kommandolinjen: /<parameternavnet>: <klassenavnet>,<assemblynavnet>. Bemærk, at assemblynavnet ikke indeholder udvidelsen .dll. Du kan føje den tilsvarende værdi som et alternativ til config-filen i formatet "<Tilføj nøgle ="<parameternavnet>"værdi ="<klassenavnet>,<assemblynavnet>" />".

I følgende tabel vises de parametre, du kan bruge.

Parameternavn

Grænsefladenavn

Beskrivelse

/codecustomization

ICustomizeCodeDomService

Kaldt, efter at oprettelsen af CodeDOM er afsluttet, idet standardforekomsten af ICodeGenerationService forudsættes. Det er nyttigt ved oprettelse af flere klasser som f.eks. konstanter i valglister.

/codewriterfilter

ICodeWriterFilterService

Kaldt under processen med oprettelse af CodeDOM, idet standardforekomsten af ICodeGenerationService forudsættes, for at finde ud af, om der skal oprettes et specifikt objekt eller en egenskab.

/codewritermessagefilter

ICodeWriterMessageFilterService

Kaldt under processen med oprettelse af CodeDOM, idet standardforekomsten af ICodeGenerationService forudsættes, for at finde ud af, om der skal oprettes en specifik meddelelse. Dette bør ikke bruges til anmodninger/svar, eftersom disse allerede er oprettet i Microsoft.Crm.Sdk.Proxy.dll og Microsoft.Xrm.Sdk.dll.

/metadataproviderservice

IMetadataProviderService

Kaldes for at hente metadata fra serveren. Dette kan kaldes flere gange under oprettelsesprocessen, så dataene skal cachelagres.

/codegenerationservice

ICodeGenerationService

Kerneimplementeringen af oprettelsen af CodeDOM. Hvis dette ændres, fungerer muligvis ikke de andre udvidelser på den beskrevne måde.

/namingservice

INamingService

Kaldes under oprettelsen af CodeDOM til at bestemme navnet til objekter, idet standardimplementeringen forudsættes.

Gennemførelsen af disse grænseflader skal have en af følgende konstruktører:

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

Navneområdet Microsoft.Crm.Services.Utility defineres i CrmSvcUtil.exe. Føj en reference til CrmSvcUtil.exe i dine Microsoft Visual Studio-projekter til udvidelse af kodeoprettelsesværktøjet.

Eksempeludvidelse til oprettelse af optællinger for grupperede indstillinger

Følgende eksempelkode viser, hvordan en udvidelse skrives.


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);
    }
}

Du kan finde denne eksempelkode og eksempeludvidelsen GeneratePicklistEnums i følgende mappe SampleCode\CS\CrmSvcUtilExtensions i SDK.Hent SDK-pakken til Microsoft Dynamics CRM. Eksempeludvidelsen GeneratePicklistEnums skriver en kildekodefil, der indeholder optællinger for alle grupperede indstillinger, tilstandskoder og statuskoder. Se et eksempel på, hvordan du bruger disse optællinger, i SampleCode\CS\QuickStart-eksemplet.

Se også

Opret klasser for tidligt bundne objekter med værktøjet til oprettelse af kode (CrmSvcUtil.exe)
Bruge de tidligt bundne objektklasser til oprettelse, opdatering og sletning
Tip til fejlfinding
Kørsel af et simpelt program ved hjælp af Microsoft Dynamics 365 webtjenester

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret