Del via


Eksempel: Importer filer som webressourcer

 

Udgivet: januar 2017

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

Når du udvikler et stort antal filer, der skal bruges som webressourcer, kan du undgå selv at skulle tilføje dem manuelt via programmet. Mange webressourcer kan udvikles og testes uden for Microsoft Dynamics 365 (online og i det lokale miljø) og derefter importeres.

Dette eksempel indeholder et forenklet eksempel på denne proces. Du kan finde et mere komplekst eksempel med et WPF-program, som du kan bruge til at importere webressourcer, under Eksempel: Webressourceværktøj.

Denne eksempelkode er for Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015.Hent SDK-pakken til Microsoft Dynamics CRM. Den findes på følgende placering i downloadpakken:

SDK\SampleCode\CS\Client\WebResources\ImportWebResources\

Krav

Du kan finde flere oplysninger om kravene til kørsel af den eksempelkode, der findes i denne SDK, under Brug eksempel- og hjælpekoden.

Eksempelkode, der findes i SDK-overførselspakken, indeholder følgende filer, der er påkrævet i dette eksempel:

  • ImportJob.xml
    Denne fil indeholder data om de webressourceposter, der oprettes. Den indeholder følgende data for hver fil:

    • path: Stien til hver fil fra mappen FilesToImport.

    • displayName: Det viste navn på webressourcen.

    • description: En beskrivelse af, hvad hver enkelt fil gør.

    • name: Det navn, der skal bruges til webressourcen.

      Bemærk

      • Hvert af disse navne begynder med et understregningstegn. Løsningsudgiverens tilpasningspræfiks står foran navnet, når webressourcen oprettes. I stedet for at bruge hard-coding af et bestemt tilpasningspræfiks registrerer dette eksempel det aktuelle tilpasningspræfiks for en udgiverpost, der allerede findes i organisationen.

      • Da hver af disse filer er udviklet uden for Microsoft Dynamics 365 og afhænger af relative stier for at få adgang til hinanden, indgår der omvendte skråstreger "/" i navnene, så der kan oprettes en virtuel mappestruktur, så de relative links fortsat fungerer i Microsoft Dynamics 365.

    • type: Angiver typen af webressource, der skal oprettes ved hjælp af heltalsværdierne, der er fundet i Webressourcetyper.

  • FilesToImport/ShowData.htm
    Denne HTML-webressource kræver, at hver af de andre filer for at kunne vise følgende tabel.

    fornavn

    efternavn,

    Apurva

    Dalia

    Ofer

    Daliot

    Jim

    Daly

    Ryan

    Danner

    Mike

    Danseglio

    Alex

    Darrow

  • FilesToImport/CSS/Styles.css
    Denne fil indeholder de CSS-typografier, der bruges i ShowData.htm.

  • FilesToImport/Data/Data.xml
    Denne fil indeholder listen over de navne, der vises i tabellen.

  • FilesToImport/Script/Script.js
    Denne fil indeholder et JScript-bibliotek, der indeholder oplysninger om den relative placering af filen Data.xml og filen Transform.xslt. Den indeholder også funktionen showData, der transformerer dataene og føjer dem til siden ShowData.htm.

  • FilesToImport/XSL/Transform.xslt
    Denne fil indeholder XSL-definitionen af, hvordan du transformerer dataene til en HTML-tabel.

Demonstrerer

Oprettelse af Web-ressourcer i forbindelse med en løsning

Webressourcer er organisationsejede poster, så de kan oprettes ved hjælp af enten IOrganizationService.Create-metoden eller ved hjælp af CreateRequest-meddelelsen og IOrganizationService.Execute-metode. I dette eksempel kan du se, hvordan du bruger den valgfrie parameter SolutionUniqueName til at knytte en webressource til en bestemt løsning, når den oprettes. Dette kræver brug af meddelelsen CreateRequest.

Overførsel af filer fra disken

Egenskaben WebResource.Content skal have en Base-64-streng, der repræsenterer det binære indhold af filen. Følgende eksempel er den metode, der bruges til at konvertere filen til den krævede type.


//Encodes the Web Resource File
static public string getEncodedFileContents(String pathToFile)
{
    FileStream fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);
    byte[] binaryData = new byte[fs.Length];
    long bytesRead = fs.Read(binaryData, 0, (int)fs.Length);
    fs.Close();
    return System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
}

Kombination af data om webressourceposter og data om filer

Filen ImportJob.xml demonstrerer, hvordan dataene om de filer, der skal importeres, og dataene om den webressource, du vil oprette, kombineres. Især skal navnet på de webressourcer, du opretter, bevare oplysninger om den relative placering af filer på disken ved hjælp af simulerede mapper i filnavnet, for at relative links mellem relaterede filer stadig kan fungere. På grund af dataene i filen ImportJob.xml oprettes alle disse relaterede webressourcefiler under en fælles virtuel mappe.

Bemærk

Det er ikke nødvendigt at offentliggøre webressourcer, når de oprettes. Det er nødvendigt at offentliggøre dem, når de opdateres.

Eksempel

Følgende del af filen ImportWebResources.cs forventer følgende variabler:

  • _customizationPrefix: Tilpasningspræfikset for Microsoft Dynamics 365 SDK-eksempler-udgiveren. Hvis udgiveren ikke findes, bruges tilpasningspræfikset for "sample".

  • _ImportWebResourcesSolutionUniqueName: Det entydige navn på den Import Web Resources Sample Solution, der er oprettet i dette eksempel. Værdien er ImportWebResourcesSample.



//Read the descriptive data from the XML file
XDocument xmlDoc = XDocument.Load("../../ImportJob.xml");

//Create a collection of anonymous type references to each of the Web Resources
var webResources = from webResource in xmlDoc.Descendants("webResource")
                   select new
                   {
                       path = webResource.Element("path").Value,
                       displayName = webResource.Element("displayName").Value,
                       description = webResource.Element("description").Value,
                       name = webResource.Element("name").Value,
                       type = webResource.Element("type").Value
                   };

// Loop through the collection creating Web Resources
int counter = 0;
foreach (var webResource in webResources)
{
    //Set the Web Resource properties
    WebResource wr = new WebResource
    {
        Content = getEncodedFileContents(@"../../" + webResource.path),
        DisplayName = webResource.displayName,
        Description = webResource.description,
        Name = _customizationPrefix + webResource.name,
        LogicalName = WebResource.EntityLogicalName,
        WebResourceType = new OptionSetValue(Int32.Parse(webResource.type))
    };

    // Using CreateRequest because we want to add an optional parameter
    CreateRequest cr = new CreateRequest
    {
        Target = wr
    };
    //Set the SolutionUniqueName optional parameter so the Web Resources will be
    // created in the context of a specific solution.
    cr.Parameters.Add("SolutionUniqueName", _ImportWebResourcesSolutionUniqueName);

    CreateResponse cresp = (CreateResponse)_serviceProxy.Execute(cr);
    // Capture the id values for the Web Resources so the sample can delete them.
    _webResourceIds[counter] = cresp.id;
    counter++;
    Console.WriteLine("Created Web Resource: {0}", webResource.displayName);
}

Det er ikke nødvendigt at offentliggøre webressourcer, når de oprettes. Det er nødvendigt at offentliggøre dem, når de opdateres.

Se også

Eksempel: Webressourceværktøj
Meddelelser og metoder for objektet WebResource
Webressourcer til Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret