Créer une colonne à incrémentation automatique dans SharePoint

Comment créer une colonne à incrémentation automatique dans SharePoint pour avoir un numéro d’ordre qui s’incrémente automatiquement pour chaque nouvel élément d’une liste. Par exemple, pour avoir un numéro de facture différent à chaque facture, ou pour des commandes, etc.

Le mécanisme proposé dans ce tutoriel ne nécessite aucun codage ou développement. Il utilise le navigateur et SharePoint Designer pour créer un flux de travail. Vous devez disposer au minimum des droits de conception.

Procédure de création du chrono

Cette procédure est détaillée dans l’article sur les colonnes-calculées.

Alors, la première étape est de créer une liste qui contiendra le chrono des autres listes. Vous nommerez cette liste Chrono.

Outre la colonne Titre, cette liste personnalisée doit avoir 2 autres colonnes. Une colonne de type Nombre, intitulée NumeroSuivant et une colonne calculée, intitulée NumeroAvenir.

Dans cet exemple, NumeroSuivant contiendra la valeur du prochain numéro à utiliser.

Par ailleurs, NumeroAvenir est une simple incrémentation de NumeroSuivant. Elle permet de faire une addition qui ne peut pas être faite simplement dans le flux de travail. Cette colonne sera donc utilisée dans le flux de travail, comme NumeroSuivant.

De plus, la colonne NumeroAvenir a pour formule:

= NumeroSuivant+1

Le résultat renvoyé est de type Nombre.

Ajout d’un nouvel élément dans la liste Chrono

Ensuite, ajoutez un nouvel élément qui servira pour la liste Commandes. Vous créerez la liste Commandes plus tard. La numérotation des commandes commencent à 1000.

De plus, comme la liste Chrono peut contenir plusieurs éléments, c’est grâce à la valeur du titre de l’élément (« Commandes » dans cet exemple) que vous retrouverez dans le flux de travail l’élément correspondant

Par ailleurs, si vous le voulez, vous pouvez aussi ajouter un autre élément pour les factures :

Élément Liste Factures afficher
Élément Liste Factures afficher

Création de la colonne à incrémentation automatique

Tout d’abord, vous allez créer une liste intitulée Commandes. Dans cet exemple, il s’agit d’une liste personnalisée mais cela fonctionne de la même façon avec une liste de type annonces ou une bibliothèque.

Par ailleurs, vous pouvez aussi créer une liste Factures. La procédure est complètement symétrique pour la liste Factures. Pour des raisons de clarté, seule la procédure de la liste Commandes sera développée en entier.

Ensuite, dans la liste Commandes, créez une colonne de type nombre, nommée NumeroOrdre. Il s’agit de la colonne à incrémentation automatique.

Colonne à incrémentation automatique
Colonne à incrémentation automatique NumeroOrdre à créer

Création d’une colonne de calcul

Puis, créez une nouvella colonne. Elle est de type valeur calculée et elle s’intitule NumeroCde. Vous l’alimentez avec la formule :

=CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000 »;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))

Par ailleurs, elle renvoie des données de type texte.

Champ NumeroCde à créer
Champ NumeroCde à créer

Ajouter un nouvel élément dans la liste Commandes

Ensuite, pour vérifier le bon fonctionnement des formules, vous ajoutez un nouvel élément dans la liste. Pour l’instant, vous renseignez manuellement la colonne à incrémentation automatique NumeroOrdre. Lorsque le flux de travail sera terminé, ce champ sera alimenté automatiquement.

Élément Liste Commandes à alimenter
Élément Liste Commandes à alimenter

Le résultat donne :

Élément Liste Commandes affiché
Élément Liste Commandes affiché

Création du flux de travail avec SharePoint Designer

Ouvrez SharePoint Designer. Puis ouvrez votre site SharePoint dans SharePoint Designer. Patientez quelques secondes, le temps que SharePoint Designer récupère les informations du site SharePoint.

Dans SharePoint Designer, cliquez sur Flux de travail dans le menu de gauche.

Dans le menu du haut, cliquez sur Flux de travail de liste et sélectionnez la liste Commandes: La fenêtre Créer un flux de travail de liste s’ouvre.

Nommez votre flux de travail AutoInc puis cliquez sur le bouton OK.

Dans le menu du haut, cliquez sur Condition et ajoutez la condition Si le champ de l’élément actif est égal à la valeur.

Cette condition vous permet de tester que la colonne à incrémentation automatique NumeroOrdre est bien vide avant de l’alimenter.

Cliquez sur la première zone champ. Dans la liste déroulante qui s’ouvre, sélectionnez la colonne à incrémentation automatique NumeroOrdre.

Cliquez sur la zone est égal. Dans la liste déroulante, sélectionnez est inférieur ou égal à.

Ensuite, cliquez sur la zone valeur et tapez 0.

Test du champ NumeroCde
Test du champ NumeroCde

Débugger le workflow

SharePoint Designer n’offre pas d’outils simples pour débugger l’écriture du flux de travail. Pour vous aider à vérifier le bon fonctionnement du flux de travail, vous allez directement consigner les événements du flux de travail dans son historique.

Pour cela, cliquez dans la zone intitulée Commencez à taper ou utiliser le groupe Insertion dans le ruban, puis dans le ruban du haut, cliquez sur le bouton Action. Dans la liste déroulante, sélectionnez l’action Consigner dans l’historique qui se trouve sous la section Actions principales.

Cliquez sur la zone intitulée ce message: une petite fenêtre s’ouvre. Directement dans la petite fenêtre, tapez le message NumeroOrdre est vide. Lorsque que le flux de travail s’exécutera vous pourrez ainsi vérifier son fonctionnement. Vous verrez comment concrètement plus tard.

Consigner les messages

Si la colonne à incrémentation automatique NumeroOrdre n’est pas vide, il serait aussi intéressant de le savoir pour comprendre ce qui s’est passé au moment de l’exécution du flux de travail.

Pour le savoir, vous cliquez sur le bouton Branche Sinon-Si dans le ruban. Si vous le bouton Branche Sinon-Si est grisé, cliquez sous l’action que vous venez d’ajouter.

De manière générale, vous devez être très attentif à l’endroit où vous cliquez pour éviter des erreurs. Toutefois, il est possible de déplacer les actions quand elles ont été mal positionnées. Ce n’est pas le cas avec les conditions.

Sous la branche Else, vous allez ajouter l’événement que NumeroOrdre n’est pas vide dans l’historique.

Si vous cliquez à nouveau sur le bouton Action, vous remarquerez que les dernières actions sont regroupées sous la section Actions récentes (en haut de la liste). Ainsi, vous pouvez plus rapidement retrouver les actions que vous manipuler le plus.

Cliquez sur Consigner dans l’historique. Cliquez sur la zone intitulée ce message. Dans la petite fenêtre, tapez le message NumeroOrdre n’est pas vide.

Test du champ NumeroCde
Test du champ NumeroCde

Modifier le nom de l’étape

La tâche suivante est facultative. Vous allez modifier le titre de l’étape de Étape 1 en Calcul.

Cliquez directement sur le sur le titre Étape 1: le texte s’affiche dans une petite fenêtre. Dans cette fenêtre, remplacer Étape 1 par Calcul.

Test champ NumeroCde
Test champ NumeroCde

Maintenant, il faut successivement mettre à jour la colonne NumeroOrdre de la liste Commandes puis la colonne NumeroSuivant de la liste Chrono.

Mise à jour de la colonne NumeroOrdre

Cliquez sous Consigner NumeroOrdre est vide dans l’historique du flux de travail. Ensuite, cliquez sur le bouton Action du ruban. Dans la liste déroulante, sélectionnez Mettre à jour l’élément de la liste sous la section Actions de liste.

Flux de travail modifié
Flux de travail modifié

Dans cette action, cliquez sur la zone cette liste.

Modification de la colonne à incrémentation automatique NumeroOrdre
Modification de la colonne à incrémentation automatique NumeroOrdre

Il faut indiquer à SharePoint Designer, la colonne à mettre à jour. Pour cela, cliquez sur le bouton Ajouter.

Modification de la colonne à incrémentation automatique NumeroOrdre
Modification de la colonne à incrémentation automatique NumeroOrdre

Sous la zone Appliquer à ce champ, sélectionnez la colonne NumeroOrdre.

Pour spécifier la valeur à assigner à NumeroOrdre, cliquez sur le bouton fx.

La fenêtre qui s’ouvre va vous permettre d’indiquer à SharePoint Designer, la colonne qui sera utilisée pour alimenter NumeroOrdre.

Dans cette fenêtre, cliquez sur la liste déroulante en face de Source de données puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas. C’est normal, vous allez bientôt comprendre pourquoi.

Pour l’instant, en face de Champ de la source, sélectionnez NumeroSuivant.

Récapitulatif intermédiaire des manipulations précédentes

Arrivé à ce stade, qu’avez-vous fait ?

1) Vous avez indiqué que la colonne NumeroOrdre (liste: Commandes) doit être mise à jour
2) Vous venez d’indiquer que la colonne NumeroOrdre sera mise à jour à partir de la colonne NumeroSuivant (liste: Chrono)
Vous pourriez penser que c’est suffisant et que la boite supplémentaire de dialogue supplémentaire est inutile.

Sélection du bon élément dans la liste Chrono

Cependant, la liste Chrono peut avoir de nombreux éléments, il est donc nécessaire d’indiquer à SharePoint Designer quel élément de la liste Chrono doit être sélectionné. C’est l’objectif de la boite de dialogue supplémentaire.

La sélection se fait en indiquant un critère (rôle de la zone Champ) et une valeur (zone Valeur). Dans champ, vous indiquez Titre et dans valeur vous tapez Commandes.

« Commandes » est le nom de l’élément créé plus haut dans la liste Chrono.

Modification de la colonne à incrémentation automatique NumeroOrdre
Modification de la colonne à incrémentation automatique NumeroOrdre

Cliquez sur le bouton OK.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs. Le workflow utilisera systématiquement la première valeur, qu’il en existe une ou plusieurs. Vous savez qu’il n’y en a qu’une mais SharePoint Designer n’en sait rien.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Modification de la colonne à incrémentation automatique NumeroOrdre
Modification de la colonne à incrémentation automatique NumeroOrdre

Cliquez sur le bouton OK: la fenêtre Mettre à jour les éléments de liste mise à jour apparait:

Modification de la colonne à incrémentation automatique NumeroOrdre
Modification de la colonne à incrémentation automatique NumeroOrdre

Cliquez sur le bouton OK.

Flux de travail modifié
Flux de travail modifié

Mettre à jour la colonne NumeroSuivant

Maintenant, il ne reste plus qu’à mettre à jour la colonne NumeroSuivant de la liste Chrono avec NumeroAvenir de la liste Chrono aussi.

Cliquez sous Mettre à jour l’élément dans Élément en cours. Ensuite, cliquez sur le bouton Action du ruban. Sélectionnez Mettre à jour l’élément de la liste sous la section Actions récentes (en haut).

Dans cette action, cliquez sur la zone cette liste.

En face de Liste, cliquez sur la liste déroulante puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas.

Cliquez sur le bouton Ajouter.

Sous la zone Appliquer à ce champ, sélectionnez la colonne NumeroSuivant.

Pour spécifier la valeur à assigner à NumeroSuivant, cliquez sur le bouton fx.

La fenêtre qui s’ouvre va vous permettre d’indiquer à SharePoint Designer, la colonne qui sera utilisée pour alimenter NumeroSuivant.

Dans cette fenêtre, cliquez sur la liste déroulante en face de Source de données puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas.

Pour l’instant, en face de Champ de la source, sélectionnez NumeroAvenir.

Dans champ, vous indiquez Titre et dans valeur vous tapez Commandes. « Commandes » est le nom de l’élément créé plus haut dans la liste Chrono.

Cliquez sur le bouton OK.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs et que dans ce cas, seule la première sera utilisée.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Modification du champ NumeroSuivant
Modification du champ NumeroSuivant

Cliquez sur le bouton OK: la fenêtre Mettre à jour les éléments de liste apparaît partiellement mise à jour:

Modification du champ NumeroSuivant
Modification du champ NumeroSuivant

Second récapitulatif des manipulations précédentes

Arrivé à ce stade, qu’avez-vous fait ?

1) Vous avez indiqué que la colonne NumeroSuivant (liste: Chrono) doit être mise à jour
2) Vous venez d’indiquer que la colonne NumeroSuivant sera mise à jour à partir de la colonne NumeroAvenir (liste: Chrono)
3) Vous avez même précisé le critère de sélection (Titre= »Commandes ») pour savoir de quel élément, la valeur de NumeroAvenir sera obtenue.

Mise à jour du bon élément

Cependant, vous devez aussi indiquer de quel élément la valeur de NumeroSuivant doit être mise à jour. C’est le rôle de la boite de dialogue Rechercher l’élément de liste.

En face de Champ, cliquez sur la liste déroulante et sélectionnez Titre. Dans valeur, tapez Commandes.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs et que dans ce cas, seule la première sera utilisée.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Modification du champ NumeroSuivant
Modification du champ NumeroSuivant

Cliquez sur le bouton OK.

Flux de travail à jour

Le flux de travail devient:

Flux de travail modifié
Flux de travail modifié

Dans le ruban, cliquez sur le bouton Enregistrer (ou faites CTRL+S).

Dans le fil d’Ariane:

Etape de calcul
Etape de calcul

Cliquez sur AutoInc pour accéder aux paramètres du flux de travail.

Sous Options de démarrage, cochez la case Démarrer automatiquement le flux de travail lorsqu’un élément est créé.

Options de démarrage
Options de démarrage

Cette option permettra un démarrage systématique du flux de travail, et donc une mise à jour automatique du NumeroOrdre.

Puis, dans le ruban, cliquez sur le bouton Enregistrer (ou faites CTRL+S).

Publication du flux de travail

Ensuite, cliquez sur le bouton Publier.

Si vous ne publier pas votre workflow, il ne s’exécutera pas et il n’apparaîtra pas dans les Paramètres du flux de travail de la liste.

Ensuite, patientez quelques instants.

Enfin, fermez SharePoint Designer puis retournez sur le navigateur.

Ajout de nouveaux éléments dans la liste Commandes

Avec le navigateur, ouvrez la liste Commandes. Éventuellement, supprimez les éléments présents dans la liste.

Puis, ajoutez un nouvel élément : ne renseignez pas la colonne à incrémentation automatique NumeroOrdre.

Nouvel élément de la liste Commandes
Nouvel élément de la liste Commandes

Ensuite, cliquez sur le bouton Enregistrer pour valider votre saisie.

Pour rafraîchir l’affichage du navigateur, faites CTRL+F5 (n’oubliez pas d’appuyer sur la touche CTRL !). En effet, le CTRL+F5 permet de forcer le navigateur Internet Explorer à faire u,e nouvelle demande au serveur sans utiliser son cache local.

Affichage du nouvel élément de la liste Commandes
Affichage du nouvel élément de la liste Commandes

Selon la charge de votre serveur, le flux de travail sera soit en cours, soit terminé.

Ensuite, faites CTRL+F5 pour rafraîchir l’écran.

Affichage du nouvel élément de la liste Commandes
Affichage du nouvel élément de la liste Commandes

En effet, vous constatez que le workflow a bien mis à jour la colonne NumeroCde.

Vérification de la mise à jour de liste Chrono

Ensuite, à titre de vérification, cliquez sur la liste Chrono pour savoir les valeurs contenues:

Affichage de la liste Chrono
Affichage de la liste Chrono

L’élément Commandes s’incrémente correctement tandis que l’élément Factures ne change pas.

Maintenant vous retournez sur la liste Commandes et saisissez 2 ou 3 commandes supplémentaires et vérifiez que le NumeroCde s’alimente correctement:

Affichage de la liste Commandes
Affichage de la liste Commandes

Ensuite, après avoir vérifié que tout fonctionne bien, dans un souci d’esthétique, vous pouvez modifier l’affichage pour cacher la colonne NumeroOrdre.

Vous pouvez aussi cliquer sur une valeur Terminé sous AutoInc. En effet, sous la section Historique des flux de travail, vous verrez uniquement indiqué dans la colonne Description : NumeroOrdre est vide.

Vérifiez à nouveau Chrono:

Affichage de la liste Chrono
Affichage de la liste Chrono

Maintenant, vous savez comment créer un flux de travail qui alimente une colonne à incrémentation automatique, comme par exemple un numéro d’ordre.

Comprendre les formules des colonnes calculées SharePoint

Le principe de fonctionnement des colonnes calculées SharePoint est simple et il se comprend facilement. La valeur d’une colonne calculée utilise les valeurs d’autres colonnes pour effectuer des opérations dessus.

Les opérations mises en oeuvre concernent les formules conditionnelles, les formules de manipulation de date et heure, les formules mathématiques en général et les formules de texte.

Exemple de colonnes calculées SharePoint

Sur votre site SharePoint de démonstration, créez une liste personnalisée nommée Chrono.

Puis créez une nouvelle colonne de type Nombre nommé NumeroSuivant.

Colonnes calculées SharePoint
Nouvelle colonne de type Nombre

Ensuite, créez une colonne calculée appelée NumeroAvenir avec la formule :

= NumeroSuivant +1

Le résultat renvoyé est de type Nombre.

Colonnes calculées SharePoint
Colonne calculée appelée NumeroAvenir avec la formule

Ensuite, ajoutez un  nouvel élément dans la liste:

Ajouter un nouvel élément dans la liste
Ajouter un nouvel élément dans la liste

Vérifiez que la colonne NumeroAvenir vaut bien 1001:

Nouvel élément ajouté dans la liste
Nouvel élément ajouté dans la liste

La seule difficulté est de trouver la liste exhaustive des formules autorisées, notamment pour les sites SharePoint en français. Toutefois, si vous êtes familier avec l’anglais, vous pouvez utiliser sans crainte les formules en anglais car elles seront automatiquement traduites en français.

SharePoint utilise la même syntaxe que celle des fonctions de Microsoft Excel. Cependant, SharePoint ne comprend pas toutes les fonctions d’Excel.

Dans Formules de champ calculé, vous trouverez toutes les formules disponibles. L’aide en ligne relatif aux exemples de formules courantes de SharePoint Server 2007 et Windows SharePoint Services 3.0 fournit les mêmes informations.

Il est aussi important de penser à utiliser le point-virgule (« ; ») comme séparateur dans les syntaxes en français. L’utilisation de la virgule (« , ») comme séparateur dans les formules des champs calculés sur un site de langue française génère une erreur de type « Runtime Error« . L’utilisation d’une colonne inexistante dans votre formule de calcul génère aussi une erreur de type « Runtime Error ».

Comprendre les Commandes PowerShell SharePoint

Les commandes PowerShell SharePoint permettent d’exécuter automatiquement les tâches administratives liées à SharePoint. Un bon exemple d’application est celui de pouvoir créer de nouvelles listes sur les sites grâce à des commandes PowerShell SharePoint.

Commandes PowerShell SharePoint

Lors de la création d’une nouvelle liste, vous devez d’abord indiquer à SharePoint le modèle à utiliser. Aussi, pour lister tous les modèles, ouvrez SharePoint Management Shell puis tapez les commandes suivantes :

$Web=Get-SPWeb http://ged.nova.ad/sites/primeur/
$Web.ListTemplates | Select Name, Description

Commandes PowerShell SharePoint - Liste de Modèles
Commandes PowerShell SharePoint – Liste de Modèles

Ainsi, vous obtenez le nom et le début de la description de tous les modèles disponibles dans votre collection de sites.

Créer la liste SharePoint

Ensuite, choisissez le modèle que vous vous voulez et créez la liste avec la méthode Add().

$Template=$Web.ListTemplates[« Liste personnalisée »]
$Web.Lists.Add(« Commandes », »Liste des commandes »,$Template)

En cas de succès, SharePoint renvoie l’identifiant interne unique de la liste sur 32 caractères, le GUID.

Commandes PowerShell SharePoint - Liste personnalisée
Commandes PowerShell SharePoint – Liste personnalisée

Ensuite, une fois la liste créée, il est pratiquement indispensable de rajouter des colonnes.

Ajouter une nouvelle colonne

Donc, vous indiquez à SharePoint la liste sur laquelle vous travaillez. Puis vous indiquez le type de la colonne et son nom, toujours avec la méthode Add().

$List=$web.Lists.TryGetList(« Commandes »)
$varFieldTypeTexte=[Microsoft.SharePoint.SPFieldType]::Text
$List.Fields.Add(« FruitID »,$varFieldTypeTexte,$false)

En réalité, la colonne a bien été ajoutée, mais vous ne la voyez pas !

Commandes PowerShell SharePoint - Ajout colonne
Commandes PowerShell SharePoint – Ajout colonne

Pour la voir, vous allez dans les paramètres de la liste, et sous Colonnes, vous retrouvez bien FruitID .

Commandes PowerShell SharePoint - Nouvelle colonne
Commandes PowerShell SharePoint – Nouvelle colonne

Modifier l’affichage de la liste

L’ajout de colonnes ne modifie (heureusement !) pas par défaut les affichages. En effet, c’est à vous de le faire. Il vous reste donc à modifier l’affichage par défaut

$View=$web.GetViewFromUrl(« http://ged.nova.ad/sites/primeur/Lists/Commandes/AllItems.aspx »)
$Field=$List.Fields[« FruitID »]
$View.ViewFields.Add($Field)
$View.Update()

Commandes PowerShell SharePoint - Affichage modifié
Commandes PowerShell SharePoint – Affichage modifié

Voilà pour les principes.

Vous trouverez ci-dessous un script PowerShell complet à télécharger.

Ce script créé une liste intitulée « Commandes » avec 4 colonnes (« FruitID », « FruitNom », « DateAchat », « Quantite »).

L’affichage par défaut (« AllItems.aspx ») de la liste est modifié pour faire apparaître les 4 colonnes.

SPListeCreer_V1_0_0.zip

Enfin, si vous désirez un accompagnement pour vous aider à concevoir le contenu de vos sites Sharepoint, ou pour installer, configurer, auditer SharePoint, allez sur la page de contact.

Assembly du PowerShell SharePoint et développement .Net

Les premières lignes des scripts PowerShell SharePoint débutent par une ligne ou deux qui ressemblent plus ou moins à :

Add-PSSnapin « Microsoft.SharePoint.PowerShell »

ou bien à:

[Reflection.Assembly]::LoadWithPartialName(« Microsoft.SharePoint »)

Ces deux instructions chargent les fonctions de l’assembly du PowerShell SharePoint.

Si vous êtes un développeur .Net, vous savez déjà ce qu’est un assembly. Pour un administrateur récemment converti au PowerShell SharePoint, c’est certainement moins évident.

L’objet de cet article est de présenter très succinctement le rôle et l’intérêt d’un assembly pour un public de débutant en matière de développement Net.

Principes généraux de l’assembly

Physiquement, un assembly est un fichier .DLL ou .EXE. L’idée derrière l’assembly est de mettre à disposition un code partageable entre différentes applications. C’est le même principe que pour les anciens fichiers DLL des systèmes d’exploitations Windows qui n’utilisent pas le Framework .Net.

Toutefois, la comparaison s’arrête là car les différences sont nombreuses.

En effet, les assemblies présentent de nombreux avantages supplémentaires notamment en matière de sécurité, fiabilité et robustesse. Des fonctionnalités supplémentaires, comme par exemple le déploiement côte-à-côte (vu plus bas), permettent aussi de pallier aux faiblesses des anciennes DLL.

Dans la plupart des cas, l’assembly est physiquement dans le Global Assembly Cache (GAC). Le rôle du GAC est de partager les assemblies entre les applications. Une assembly qui n’est pas présente dans le GAC peut fonctionner parfaitement pour une application donnée.

Si le développeur veut partager son travail, son assembly devra être dans le GAC afin de communiquer avec des applications d’autres domaines, d’autres processus ou d’autres ordinateurs.

Bien évidemment, l’assembly peut être appelé par un script PowerShell SharePoint, un programme écrit dans du code géré (C# ou VB Net), etc.

Common Language Runtime (CLR)

Cette communication est faite sous le contrôle du Common Language Runtime NET (CLR).

Nativement, l’explorateur Windows ne permet pas d’afficher les dossiers du GAC comme d’habitude. Pour avoir un affichage classique du contenu du GAC, ouvrez une invite de commande en tant qu’administrateur et tapez:

regsvr32 /u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

Si shfusion.dll se trouve dans le dossier v2.0.50727 qui correspond à la version du socle .Net : c’est probablement le cas.

Une fois la commande exécutée avec succès, vous pouvez explorer les dossiers du GAC avec l’explorateur Windows classique. Les dossiers principaux du GAC sont:

  • C:Windows\assembly
  • C:Windows\Microsoft.NET

Pour revenir ensuite à un affichage natif, tapez dans une invite de commande:

regsvr32 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

Pour connaître la liste précise des assemblies chargées au moment de l’exécution d’une commande PowerShell, ouvrez une invite de commande PowerShell en tant qu’Administrateur puis tapez la commande:

[appdomain]::currentdomain.getassemblies()

Microsoft Intermediate Language (MSIL)

Un fichier d’assembly englobe des ressources. En particulier, le manifeste et le code Microsoft Intermediate Language (MSIL).

Le manifeste est un fichier qui décrit l’assembly à travers des métadonnées comme par exemple le nom de l’assembly, sa version, sa culture, les autorisations de sécurité sous lesquelles l’assembly doit s’exécuter ou la liste des assemblies dépendants.

La culture concerne les usages en termes de formatage de dates, de monnaies, etc (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx).

Un programme peut utiliser une version d’un assembly tandis qu’un autre programme peut s’appuyer sur une version différente du même assembly sur le même ordinateur. C’est le déploiement côte à côte.

Le code MSIL n’est pas directement exécutable par un système d’exploitation comme Windows. Il doit être compilé en code natif pour être compris par le système d’exploitation.

Cette compilation peut être faite au fur et à mesure de l’appel des méthodes grâce à un compilateur Jusi-In-Time (JIT) fourni par le Common Language Runtime NET (CLR).

Le code natif peut aussi être généré par anticipation en une fois afin d’améliorer les performances de l’application.

Code source C#

Voici un exemple d’un code source en C#. Bien évidemment, vous pouvez aussi prendre un script en PowerShell SharePoint.

PowerShell SharePoint
Hello World C#

Le résultat en MSIL (extrait):

PowerShell SharePoint
Hello World MSIL

Aller plus loin avec le Net et le PowerShell SharePoint

Il est difficile de faire un tri dans toutes les ressources proposées sur le socle Net tant elles sont nombreuses et bien faites.

Toutefois, vous trouverez, dans les pointeurs ci-dessous, des informations pour démarrer en douceur un développement Net mais sur des bases solides:

Pour mettre en pratique, vous pouvez aussi suivre notre tutoriel qui explique, pas à pas, comment créer un WebPart Hello World avec Visual Studio.

Vous pouvez aussi consulter l’article suivant qui est spécifique au PowerShell SharePoint Découvrir comment utiliser PowerShell avec SharePoint.