Partager via


Exemple : Importer des fichiers en tant que ressources Web

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Lorsque vous développez un grand nombre de fichiers à utiliser comme ressources Web, vous pouvez éviter de les ajouter manuellement via l’application. De nombreuses ressources Web peuvent être développées et testées en dehors de Microsoft Dynamics 365 (Online et local), puis importées.

Cet exemple fournit un exemple simplifié de ce processus. Pour un exemple plus complexe qui fournit une application WPF que vous pouvez utiliser pour importer des ressources Web, consultez Exemple : utilitaire de ressources Web.

Cet exemple de code est pour Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015.Téléchargez le package Kit de développement logiciel (SDK) de Microsoft Dynamics CRM. Il se trouve à l'emplacement suivant dans le package de téléchargement :

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

Configuration requise

Pour plus d'informations sur les conditions requises pour l'exécution de l'exemple de code fourni dans ce Kit de développement logiciel (SDK), consultez la rubrique Utiliser l’exemple de code et le code d’assistance.

L’exemple de code inclus dans le package de téléchargement du Kit de développement logiciel (SDK) contient les fichiers suivants requis par cet exemple :

  • ImportJob.xml
    Ce fichier contient des données sur les enregistrements de ressource Web qui seront créés. Pour chaque fichier, il contient les données suivantes :

    • path : chemin d’accès à chaque fichier dans le dossier FilesToImport.

    • displayName : nom complet de la ressource Web.

    • description : description du rôle de chaque fichier.

    • name : nom utilisé pour la ressource Web.

      Notes

      • Chacun de ces noms commence par un trait de soulignement. Le préfixe de personnalisation de l’éditeur de solutions est ajouté au nom lorsque la ressource Web est créée. Au lieu de coder en dur un préfixe de personnalisation spécifique, cet exemple détecte le préfixe de personnalisation actuel pour un enregistrement d’éditeur qui peut déjà exister dans l’organisation.

      • Étant donné que chacun de ces fichiers a été développé en dehors de Microsoft Dynamics 365 et dépend des chemins d’accès relatifs pour permettre un accès mutuel, les noms contiennent des barres obliques inverses « / » pour créer une structure de dossier virtuelle afin que les liens relatifs continuent à fonctionner dans Microsoft Dynamics 365.

    • type : spécifie le type de ressource Web à créer à l’aide des valeurs d’entier disponibles dans Types de ressource Web.

  • FilesToImport/ShowData.htm
    Cette ressource Web HTML nécessite que chacun des autres fichiers affiche le tableau suivant.

    prénom

    le nom

    Apurva

    Dalia

    Ofer

    Daliot

    Jim

    Daly

    Ryan

    Danner

    Mike

    Danseglio

    Alex

    Darrow

  • FilesToImport/CSS/Styles.css
    Ce fichier contient les styles CSS utilisés dans ShowData.htm.

  • FilesToImport/Data/Data.xml
    Ce fichier contient la liste des noms affichés dans le tableau.

  • FilesToImport/Script/Script.js
    Ce fichier contient une bibliothèque JScript qui contient des informations sur l’emplacement relatif du fichier Data.xml et du fichier Transform.xslt. Il contient également la fonction showData qui transforme les données et les ajoute à la page ShowData.htm.

  • FilesToImport/XSL/Transform.xslt
    Ce fichier contient la définition XSL de la transformation des données dans un tableau HTML.

Démontre

Création de ressources Web dans le contexte d’une solution

Les ressources Web sont des enregistrements appartenant à l'organisation pouvant être créées en utilisant soit IOrganizationService. méthode Create ou en utilisant le message CreateRequest et IOrganizationService. Méthode Execute. Cet exemple explique comment utiliser le paramètre facultatif SolutionUniqueName pour associer une ressource Web à une solution spécifique lors de sa création. Vous devez utiliser le message CreateRequest.

Téléchargement de fichiers à partir du disque

La propriété WebResource.Content nécessite une chaîne en base 64 représentant le contenu binaire du fichier. L’exemple suivant est la méthode utilisée pour convertir le fichier dans le type requis.


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

Association des données d’enregistrement de ressources Web aux données de fichier

Le fichier ImportJob.xml montre comment les données relatives aux fichiers importés et les données relatives à la ressource Web à créer sont associées. En particulier, pour que les liens relatifs entre les fichiers associés continuent à fonctionner, le nom des ressources Web que vous créez doit conserver les informations sur la position relative des fichiers sur le disque à l’aide des répertoires simulés dans le nom de fichier. En raison des données du fichier ImportJob.xml, tous ces fichiers de ressource Web associés sont créés dans un dossier virtuel commun.

Notes

Il n’est pas nécessaire de publier les ressources Web lors de leur création. Vous devez les publier lors de leur mise à jour.

Exemple

La partie suivante du fichier ImportWebResources.cs attend les variables suivantes :

  • _customizationPrefix : Le préfixe de personnalisation de l'éditeur Exemples SDK Microsoft Dynamics 365. Si cet éditeur n’existe pas, il est créé avec le préfixe de personnalisation « exemple ».

  • _ImportWebResourcesSolutionUniqueName : nom unique de l’exemple de solution d’importation de ressources Web créé dans cet exemple. La valeur est 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);
}

Il n’est pas nécessaire de publier les ressources Web lors de leur création. Vous devez les publier lors de leur mise à jour.

Voir aussi

Exemple : utilitaire de ressources Web
Messages et méthodes de l’entité WebResource
Ressources Web pour Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright