Partager via


Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, première partie

Les projets SharePoint sont des conteneurs pour un ou plusieurs éléments de projet SharePoint.Vous pouvez étendre le système de projet SharePoint dans Visual Studio en créant vos propres types d'éléments de projet SharePoint et en les associant à un modèle de projet.Dans cette procédure pas à pas, vous allez définir un type d'élément de projet pour créer une colonne de site, puis vous créerez un modèle de projet qui pourra être utilisé pour créer un projet contenant un élément de projet de la colonne de site.

Cette procédure pas à pas présente les tâches suivantes :

  • Création d'une extension Visual Studio qui définit un nouveau type d'élément de projet SharePoint pour une colonne de site.Le type d'élément de projet comprend une propriété personnalisée simple qui s'affiche dans la fenêtre Propriétés.

  • Création d'un modèle de projet pour l'élément de projet dans Visual Studio.

  • Génération d'un package VSIX (Visual Studio Extension) pour déployer le modèle de projet et l'assembly d'extension.

  • Débogage et test de l'élément de projet.

Il s'agit d'une procédure pas à pas autonome.Après avoir exécuté cette procédure pas à pas, vous pouvez améliorer l'élément de projet en ajoutant un Assistant au modèle de projet.Pour plus d’informations, consultez Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, deuxième partie.

[!REMARQUE]

Vous pouvez télécharger une instance qui contient les projets remplis, de code et d'autres fichiers pour cette procédure pas-à-pas de l'emplacement suivant : https://go.microsoft.com/fwlink/?LinkId=191369.

Composants requis

Vous avez besoin des composants suivants sur l'ordinateur de développement pour terminer cette procédure pas à pas :

Une connaissance du concept suivant est utile, mais pas obligatoire, pour effectuer cette procédure pas à pas :

Création du projet

Pour exécuter cette procédure pas à pas, vous devez créer trois projets :

  • Un projet VSIX.Ce projet crée le package VSIX pour déployer l'élément de projet de la colonne de site et le modèle de projet.

  • Un projet de modèle de projet.Ce projet crée un modèle de projet pouvant être utilisé pour créer un projet SharePoint qui contient l'élément de projet de la colonne de site.

  • Un projet de bibliothèque de classes.Ce projet implémente une extension Visual Studio qui définit le comportement de l'élément de projet de la colonne de site.

Démarrez la procédure pas à pas en créant les projets.

Pour créer le projet VSIX

  1. Démarrez Visual Studio.

  2. Dans la barre de menus, sélectionnez Fichier, Nouveau, Projet.

  3. En haut de la boîte de dialogue Nouveau projet , assurez -vous que .NET Framework 4,5 est sélectionnez dans la liste des versions du .NET Framework.

  4. Développez les nœuds Visual Basic ou Visual C# , puis sélectionnez le nœud Extensibilité .

    [!REMARQUE]

    Le nœud Extensibilité est disponible uniquement si vous installez le Kit de développement Visual Studio 2012 SDK.Pour plus d'informations, consultez la section des composants requis plus haut dans cette rubrique.

  5. Dans la liste des modèles de projet, choisissez projet VSIX.

  6. Dans la zone Nom , entrez SiteColumnProjectItem, puis choisissez le bouton OK .

    Visual Studio ajoute le projet SiteColumnProjectItem à l'Explorateur de solutions.

Pour créer le projet de modèle de projet

  1. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud de solution, choisissez Ajouter, puis choisissez Nouveau projet.

    [!REMARQUE]

    Dans les projets Visual Basic, le nœud de la solution s'affiche dans l'Explorateur de solutions à condition d'avoir activé la case à cocher Toujours afficher la solution dans la General, Projects and Solutions, Options Dialog Box.

  2. En haut de la boîte de dialogue Nouveau projet , assurez -vous que .NET Framework 4,5 est sélectionnez dans la liste des versions du .NET Framework.

  3. Développez le nœud Visual C# ou Visual Basic , puis sélectionnez le nœud Extensibilité .

  4. Dans la liste des modèles de projet, choisissez le modèle Modèle de projet C# ou Modèle de projet Visual Basic .

  5. Dans la zone Nom , entrez SiteColumnProjectTemplate, puis choisissez le bouton OK .

    Visual Studio ajoute le projet SiteColumnProjectTemplate à la solution.

  6. Supprimez le fichier de code Class1 du projet.

  7. Si vous avez créé un projet Visual Basic, supprimez également les fichiers suivants du projet :

    • MyApplication.Designer.vb

    • MyApplication.myapp

    • Resources.Designer.vb

    • Resources.resx

    • Settings.Designer.vb

    • Settings.settings

Pour créer le projet d'extension

  1. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud de solution, choisissez Ajouter, puis choisissez Nouveau projet.

  2. En haut de la boîte de dialogue Nouveau projet , assurez -vous que .NET Framework 4,5 est sélectionnez dans la liste des versions du .NET Framework.

  3. Développez les nœuds Visual C# ou Visual Basic , sélectionnez le nœud Fenêtres , puis choisissez le modèle Bibliothèque de classes .

  4. Dans la zone Nom , entrez ProjectItemTypeDefinition puis choisissez le bouton OK .

    Visual Studio ajoute le projet ProjectItemTypeDefinition à la solution et ouvre le fichier de code Class1 par défaut.

  5. Supprimez le fichier de code Class1 du projet.

Configuration du projet d'extension

Ajoutez des fichiers de code et des références d'assembly pour configurer le projet d'extension.

Pour configurer le projet

  1. Dans le projet ProjectItemTypeDefinition, ajoutez un fichier de code nommé SiteColumnProjectItemTypeProvider.

  2. Dans la barre de menus, sélectionnez Projet, Ajouter une référence.

  3. Dans la boîte de dialogue gestionnaire de référence - ProjectItemTypeDefinition , développez le nœud Assemblys , sélectionnez le nœud framework , puis activez la case à cocher System.ComponentModel.Composition.

  4. Sélectionnez le nœud Extensions , activez la case à cocher en regard de l'assembly Microsoft.VisualStudio.SharePoint, puis choisissez le bouton OK .

Définition du nouveau type d'élément de projet SharePoint

Créez une classe qui implémente l'interface ISharePointProjectItemTypeProvider pour définir le comportement du nouveau type d'élément de projet.Implémentez cette interface chaque fois que vous souhaitez définir un nouveau type d'élément de projet.

Pour définir le nouveau type d'élément de projet SharePoint

  • Dans SiteColumnProjectItemTypeProvider fichier de code, remplacez le code par défaut par le code suivant, puis enregistrez le fichier.

    Imports System
    Imports System.Diagnostics
    Imports System.ComponentModel
    Imports System.ComponentModel.Composition
    Imports Microsoft.VisualStudio.SharePoint
    
    Namespace Contoso.SharePointProjectItems.SiteColumn
    
        ' Export attribute: Enables Visual Studio to discover and load this extension.
        ' SharePointProjectItemType attribute: Specifies the ID for the new project item type. This string must match the value of the 
        '     Type attribute of the ProjectItem element in the .spdata file for the project item.
        ' SiteColumnProjectItemTypeProvider class: Defines a new type of project item.
        <Export(GetType(ISharePointProjectItemTypeProvider))> _
        <SharePointProjectItemType("Contoso.SiteColumn")> _
        Partial Friend Class SiteColumnProjectItemTypeProvider
            Implements ISharePointProjectItemTypeProvider
    
            Private WithEvents projectItemTypeDefinition As ISharePointProjectItemTypeDefinition
    
            ' Configures the behavior of the project item type.
            Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
                Implements ISharePointProjectItemTypeProvider.InitializeType
    
                projectItemTypeDefinition.SupportedDeploymentScopes = _
                    SupportedDeploymentScopes.Site Or SupportedDeploymentScopes.Web
                projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All
                Me.projectItemTypeDefinition = projectItemTypeDefinition
            End Sub
    
            ' Creates a custom property for this project item.
            Private Sub ProjectItemPropertiesRequested(ByVal Sender As Object,
                ByVal e As SharePointProjectItemPropertiesRequestedEventArgs) _
                Handles projectItemTypeDefinition.ProjectItemPropertiesRequested
    
                Dim properties As SiteColumnProperties = Nothing
    
                ' If the properties object already exists, get it from the project item's annotations.
                If False = e.ProjectItem.Annotations.TryGetValue(properties) Then
                    ' Otherwise, create a new properties object and add it to the annotations.
                    properties = New SiteColumnProperties(e.ProjectItem)
                    e.ProjectItem.Annotations.Add(properties)
                End If
                e.PropertySources.Add(properties)
            End Sub
        End Class
    
        Friend Class SiteColumnProperties
            Private projectItem As ISharePointProjectItem
            Private Const TestPropertyId As String = "Contoso.SiteColumnProperty"
            Private Const PropertyDefaultValue As String = "Default custom property value."
    
            Friend Sub New(ByVal projectItem As ISharePointProjectItem)
                Me.projectItem = projectItem
            End Sub
    
            'The property gets or sets a simple string value. 
            <DisplayName("Example Property")> _
            <DescriptionAttribute("This is an example property for site column project items.")> _
            <DefaultValue(PropertyDefaultValue)> _
            Public Property ExampleProperty As String
                Get
                    Dim propertyValue As String = Nothing
    
                    ' Get the current property value if it already exists; otherwise, return a default value.
                    If False = projectItem.ExtensionData.TryGetValue(TestPropertyId, propertyValue) Then
                        propertyValue = PropertyDefaultValue
                    End If
                    Return propertyValue
                End Get
                Set(ByVal value As String)
                    If value <> PropertyDefaultValue Then
                        ' Store the property value in the ExtensionData property of the project item.
                        ' Data in the ExtensionData property persists when the project is closed.
                        projectItem.ExtensionData(TestPropertyId) = value
                    Else
                        ' Do not save the default value.
                        projectItem.ExtensionData.Remove(TestPropertyId)
                    End If
                End Set
            End Property
        End Class
    End Namespace
    
    using System;
    using System.Diagnostics;
    using System.ComponentModel;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.SharePoint;
    
    namespace Contoso.SharePointProjectItems.SiteColumn
    {
        // Enables Visual Studio to discover and load this extension.
        [Export(typeof(ISharePointProjectItemTypeProvider))]
    
        // Specifies the ID for the new project item type. This string must match the value of the 
        // Type attribute of the ProjectItem element in the .spdata file for the project item.
        [SharePointProjectItemType("Contoso.SiteColumn")]
    
        // Defines a new type of project item.
        internal class SiteColumnProjectItemTypeProvider : ISharePointProjectItemTypeProvider
        {
            // Implements IProjectItemTypeProvider.InitializeType. Configures the behavior of the project item type.
            public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
            {
                projectItemTypeDefinition.SupportedDeploymentScopes =
                   SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web;
                projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All;
    
                // Handle event to create a custom property for this project item.
                projectItemTypeDefinition.ProjectItemPropertiesRequested +=
                    projectItemTypeDefinition_ProjectItemPropertiesRequested;
            }
    
            // Creates a custom property for this project item.
            void projectItemTypeDefinition_ProjectItemPropertiesRequested(object sender,
                SharePointProjectItemPropertiesRequestedEventArgs e)
            {
                SiteColumnProperties properties = null;
    
                // If the Properties object already exists, get it from the project item's annotations.
                if (!e.ProjectItem.Annotations.TryGetValue(out properties))
                {
                    // Otherwise, create a new Properties object and add it to the annotations.
                    properties = new SiteColumnProperties(e.ProjectItem);
                    e.ProjectItem.Annotations.Add(properties);
                }
    
                e.PropertySources.Add(properties);
            }
        }
    
        internal class SiteColumnProperties
        {
            // This class defines the property behavior.
            private ISharePointProjectItem projectItem;
            private const string propertyId = "Contoso.SiteColumnProperty";
            private const string propertyDefaultValue = "Default custom property value.";
    
            internal SiteColumnProperties(ISharePointProjectItem projectItem)
            {
                this.projectItem = projectItem;
            }
    
            // The property gets or sets a simple string value. 
            [DisplayName("Example Property")]
            [DescriptionAttribute("This is an example property for site column project items.")]
            [DefaultValue(propertyDefaultValue)]
            public string ExampleProperty
            {
                get
                {
                    string propertyValue;
    
                    // Get the current property value if it already exists; otherwise, return a default value.
                    if (!projectItem.ExtensionData.TryGetValue(propertyId, out propertyValue))
                    {
                        propertyValue = propertyDefaultValue;
                    }
                    return propertyValue;
                }
                set
                {
                    if (value != propertyDefaultValue)
                    {
                        // Store the property value in the ExtensionData property of the project item. 
                        // Data in the ExtensionData property persists when the project is closed.
                        projectItem.ExtensionData[propertyId] = value;
                    }
                    else
                    {
                        // Do not save the default value.
                        projectItem.ExtensionData.Remove(propertyId);
                    }
                }
            }
        }
    }
    

Création d'un modèle de projet Visual Studio

En créant un modèle de projet, vous permettez à d'autres développeurs de créer des projets sharepoint qui contiennent des éléments de projet colonne de site.Un modèle de projet SharePoint inclut les fichiers requis pour tous les projets dans Visual Studio, tels que les fichiers .csproj ou .vbproj et .vstemplate, et les fichiers spécifiques aux projets sharepoint.Pour plus d’informations, consultez Création de modèles d'élément et de modèles de projet pour les éléments de projet SharePoint.

Dans cette procédure, vous créez un projet SharePoint vide de générer des fichiers spécifiques aux projets sharepoint.Vous ajoutez ensuite ces fichiers dans le projet SiteColumnProjectTemplate afin qu'ils soient inclus dans le modèle généré à partir de ce projet.Vous configurez également le fichier projet SiteColumnProjectTemplate pour spécifier où le modèle de projet s'affiche dans la boîte de dialogue Nouveau projet .

Pour créer les fichiers pour le modèle de projet

  1. Démarrez une deuxième instance d' Visual Studio avec les informations d'identification d'administration.

  2. Créez un projet SharePoint 2010 nommé BaseSharePointProject.

    Important

    Dans Assistant personnalisation de SharePoint, n'activez pas la case d'option Déployer une solution de batterie .

  3. Ajoutez un élément vide au projet, puis nommez l'élément Field1.

  4. Enregistrez le projet, puis fermez la deuxième instance d' Visual Studio.

  5. Dans l'instance d' Visual Studio dans laquelle la solution SiteColumnProjectItem ouverte, dans Explorateur de solutions, ouvrez le menu contextuel du nœud de projet SiteColumnProjectTemplate , choisissez Ajouter, puis choisissez élément existant.

  6. Dans la boîte de dialogue Ajouter un élément existant , ouvrez la liste d'extensions de fichier, puis choisissez tous les fichiers (*.*).

  7. Dans le dossier qui contient le projet BaseSharePointProject, sélectionnez le fichier key.snk, puis choisissez le bouton Ajouter .

    [!REMARQUE]

    Dans cette procédure pas - à - pas, le modèle de projet que vous créez utilise le même fichier key.snk pour signer chaque projet créé à l'aide de le modèle.Pour savoir comment développer cet exemple pour créer un autre fichier key.snk pour chaque instance de projet, consultez Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, deuxième partie.

  8. Répétez les étapes 5 à 8 pour ajouter les fichiers suivants des sous-dossiers spécifiés dans le dossier BaseSharePointProject :

    • \Field1\Elements.xml

    • \Field1\SharePointProjectItem.spdata

    • \Features\Feature1\Feature1.feature

    • \Features\Feature1\Feature1.Template.xml

    • \Package\Package.package

    • \Package\Package.Template.xml

    Ajoutez ces fichiers directement au projet SiteColumnProjectTemplate ; ne recréez pas les sous-dossiers Field1 de, de fonctionnalités, ou du module dans le projet.Pour plus d'informations sur ces fichiers, consultez Création de modèles d'élément et de modèles de projet pour les éléments de projet SharePoint.

Pour configurer la façon dont les développeurs découvrent le modèle de projet dans la boîte de dialogue nouveau projet

  1. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud de projet SiteColumnProjectTemplate , puis choisissez Décharger le projet.Si vous êtes invité à enregistrer les modifications apportées aux fichiers, choisissez le bouton oui .

  2. Ouvrez le menu contextuel du nœud SiteColumnProjectTemplate de nouveau, puis choisissez modification SiteColumnProjectTemplate.csproj ou modification SiteColumnProjectTemplate.vbproj.

  3. Dans le fichier projet, localisez l'élément suivant de VSTemplate .

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
    
  4. Remplacez cet élément par le code XML suivant.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
      <OutputSubPath>SharePoint\SharePoint14</OutputSubPath>
    </VSTemplate>
    

    L'élément OutputSubPath spécifie des dossiers supplémentaires dans le chemin d'accès où le modèle de projet est créé lorsque vous générez le projet.Les dossiers spécifiés ici garantissent que le modèle de projet sera disponible uniquement lorsque les clients ouvrez la boîte de dialogue Nouveau projet , développez le nœud SharePoint , puis sélectionnez le nœud 2010 .

  5. Enregistrez et fermez le fichier.

  6. Dans Explorateur de solutions, ouvrez le menu contextuel du projet SiteColumnProjectTemplate , puis choisissez Recharger le projet.

Modification des fichiers du modèle de projet

Dans le projet SiteColumnProjectTemplate, modifiez les fichiers suivants pour définir le comportement du modèle de projet :

  • AssemblyInfo.cs ou AssemblyInfo.vb

  • Elements.xml

  • SharePointProjectItem.spdata

  • Feature1.feature

  • Package.package

  • SiteColumnProjectTemplate.vstemplate

  • ProjectTemplate.csproj ou ProjectTemplate.vbproj

Dans les procédures suivantes, vous ajouterez des paramètres remplaçables à certains de ces fichiers.Un paramètre remplaçable est un jeton qui commence et se termine par le signe dollar ($).Lorsqu'un utilisateur utilise ce modèle de projet pour créer un projet, Visual Studio remplace automatiquement ces paramètres dans le projet par des valeurs spécifiques.Pour plus d’informations, consultez Paramètres remplaçables.

Pour modifier le fichier AssemblyInfo.cs ou AssemblyInfo.vb

  1. Dans le projet SiteColumnProjectTemplate, ouvrez le fichier AssemblyInfo.cs ou AssemblyInfo.vb, puis ajoutez l'instruction suivante au début de celui-ci :

    Imports System.Security
    
    using System.Security;
    

    Lorsque la propriété Sandboxed Solution d'un projet SharePoint a la valeur True, Visual Studio ajoute l'attribut System.Security.AllowPartiallyTrustedCallersAttribute au fichier de code AssemblyInfo.Toutefois, le fichier de code AssemblyInfo dans le modèle de projet n'importe pas l'espace de noms d' System.Security par défaut.Vous devez ajouter cette instruction using ou Imports pour éviter les erreurs de compilation.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier Elements.xml

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier Elements.xml par le code XML suivant.

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <Field ID="{$guid5$}" 
          Name="$safeprojectname$" 
          DisplayName="$projectname$" 
          Type="Text" 
          Group="Custom Columns">
      </Field>
    </Elements>
    

    Le nouveau XML ajoute un élément Field qui définit le nom de la colonne de site, son type de base et le groupe dans lequel la colonne de site peut être répertoriée dans la galerie.Pour plus d'informations sur le contenu de ce fichier, consultez Définitions de champ.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier SharePointProjectItem.spdata

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier SharePointProjectItem.spdata par le code XML suivant.

    <?xml version="1.0" encoding="utf-8"?>
    <ProjectItem Type="Contoso.SiteColumn" DefaultFile="Elements.xml" 
                 xmlns="https://schemas.microsoft.com/VisualStudio/2010/SharePointTools/SharePointProjectItemModel">
      <Files>
        <ProjectItemFile Source="Elements.xml" Target="$safeprojectname$\" Type="ElementManifest" />
      </Files> 
    </ProjectItem>
    

    Le nouveau XML apporte les modifications suivantes au fichier :

    • Remplace l'attribut d' Type de l'élément d' ProjectItem par la chaîne passée à SharePointProjectItemTypeAttribute sur la définition de l'élément de projet (classe d' SiteColumnProjectItemTypeProvider que vous avez créée précédemment dans cette procédure).

    • Supprime les attributs d' SupportedTrustLevels et d' SupportedDeploymentScopes de l'élément d' ProjectItem .Ces valeurs d'attribut sont inutiles, étant donné que les niveaux de confiance et portées de déploiement sont spécifiés dans la classe SiteColumnProjectItemTypeProvider dans le projet ProjectItemTypeDefinition.

    Pour plus d'informations sur le contenu des fichiers .spdata, consultez Référence du schéma d'élément de projet SharePoint.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier Feature1.feature

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier Feature1.feature par le code XML suivant.

    <?xml version="1.0" encoding="utf-8"?>
    <feature xmlns:dm0="https://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" Id="$guid4$" featureId="$guid4$" 
             imageUrl="" solutionId="00000000-0000-0000-0000-000000000000" title="Site Column Feature1" version=""
             deploymentPath="$SharePoint.Project.FileNameWithoutExtension$_$SharePoint.Feature.FileNameWithoutExtension$"
             xmlns="https://schemas.microsoft.com/VisualStudio/2008/SharePointTools/FeatureModel">
      <projectItems>
        <projectItemReference itemId="$guid2$" />
      </projectItems>
    </feature>
    

    Le nouveau XML apporte les modifications suivantes au fichier :

    • Modifie les valeurs des attributs d' Id et d' featureId de l'élément d' feature par $guid4$.

    • Modifie les valeurs de l'attribut d' itemId de l'élément d' projectItemReference par $guid2$.

    Pour plus d'informations sur les fichiers .feature, consultez Création de modèles d'élément et de modèles de projet pour les éléments de projet SharePoint.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier Package.package

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier Package.package par le code XML suivant.

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns:dm0="https://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" 
             Id="$guid3$" solutionId="$guid3$" resetWebServer="false" name="$safeprojectname$" 
             xmlns="https://schemas.microsoft.com/VisualStudio/2008/SharePointTools/PackageModel">
      <features>
        <featureReference itemId="$guid4$" />
      </features>
    </package>
    

    Le nouveau XML apporte les modifications suivantes au fichier :

    • Modifie les valeurs des attributs d' Id et d' solutionId de l'élément d' package par $guid3$.

    • Modifie les valeurs de l'attribut d' itemId de l'élément d' featureReference par $guid4$.

    Pour plus d'informations sur les fichiers .package, consultez Création de modèles d'élément et de modèles de projet pour les éléments de projet SharePoint.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier SiteColumnProjectTemplate.vstemplate

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier SiteColumnProjectTemplate.vstemplate par l'une des sections suivantes XML.

    • Si vous créez un modèle de projet visual C#, utilisez la syntaxe XML suivante.
    <?xml version="1.0" encoding="utf-8"?>
    <VSTemplate Version="3.0.0" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
      <TemplateData>
        <Name>Site Column</Name>
        <Description>Creates a new site column in SharePoint</Description>
        <FrameworkVersion>3.5</FrameworkVersion>
        <ProjectType>CSharp</ProjectType>
        <CreateNewFolder>true</CreateNewFolder>
        <CreateInPlace>true</CreateInPlace>
        <ProvideDefaultName>true</ProvideDefaultName>
        <DefaultName>SiteColumn</DefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <PromptForSaveOnCreation>true</PromptForSaveOnCreation>
        <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
        <Icon>SiteColumnProjectTemplate.ico</Icon>
        <SortOrder>1000</SortOrder>
      </TemplateData>
      <TemplateContent>
        <Project TargetFileName="SharePointProject1.csproj" File="ProjectTemplate.csproj" ReplaceParameters="true">
          <ProjectItem ReplaceParameters="true" TargetFileName="Properties\AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.feature">Feature1.feature</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.Template.xml">Feature1.template.xml</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.package">Package.package</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.Template.xml">Package.Template.xml</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Field1\SharePointProjectItem.spdata">SharePointProjectItem.spdata</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Field1\Elements.xml" OpenInEditor="true">Elements.xml</ProjectItem>
          <ProjectItem ReplaceParameters="false" TargetFileName="key.snk">key.snk</ProjectItem>
        </Project>
      </TemplateContent>
    </VSTemplate>
    
    • Si vous créez un modèle de projet Visual Basic, utilisez le code XML suivant.
    <?xml version="1.0" encoding="utf-8"?>
    <VSTemplate Version="3.0.0" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
      <TemplateData>
        <Name>Site Column</Name>
        <Description>Creates a new site column in SharePoint</Description>
        <FrameworkVersion>3.5</FrameworkVersion>
        <ProjectType>VisualBasic</ProjectType>
        <CreateNewFolder>true</CreateNewFolder>
        <CreateInPlace>true</CreateInPlace>
        <ProvideDefaultName>true</ProvideDefaultName>
        <DefaultName>SiteColumn</DefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <PromptForSaveOnCreation>true</PromptForSaveOnCreation>
        <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
        <Icon>SiteColumnProjectTemplate.ico</Icon>
        <SortOrder>1000</SortOrder>
      </TemplateData>
      <TemplateContent>
        <Project TargetFileName="SharePointProject1.vbproj" File="ProjectTemplate.vbproj" ReplaceParameters="true">
          <ProjectItem ReplaceParameters="true" TargetFileName="My Project\AssemblyInfo.vb">AssemblyInfo.vb</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.feature">Feature1.feature</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.Template.xml">Feature1.template.xml</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.package">Package.package</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.Template.xml">Package.Template.xml</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Field1\SharePointProjectItem.spdata">SharePointProjectItem.spdata</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Field1\Elements.xml" OpenInEditor="true">Elements.xml</ProjectItem>
          <ProjectItem ReplaceParameters="false" TargetFileName="key.snk">key.snk</ProjectItem>
        </Project>
      </TemplateContent>
    </VSTemplate>
    

    Le nouveau XML apporte les modifications suivantes au fichier :

    • Définit l'élément d' Name à la valeur Recherchez la colonne.(Ce nom apparaît dans la boîte de dialogue Nouveau projet ).

    • Ajoute des éléments d' ProjectItem pour chaque les filethat inclus dans chaque instance de projet.

    • Utilise l'espace de noms « https://schemas.microsoft.com/developer/vstemplate/2005 ».D'autres fichiers projet dans cette solution utilisent l'espace de noms « https://schemas.microsoft.com/developer/msbuild/2003 ».Par conséquent, les messages d'avertissement de schéma XML sont générés, mais vous pouvez les ignorer dans cette procédure pas - à - pas.

    Pour plus d'informations sur le contenu des fichiers .vstemplate, consultez Référence du schéma de modèle Visual Studio.

  2. Enregistrez et fermez le fichier.

Pour modifier le fichier de ProjectTemplate.csproj ou ProjectTemplate.vbproj

  1. Dans le projet SiteColumnProjectTemplate, remplacez le contenu du fichier ProjectTemplate.csproj ou ProjectTemplate.vbproj du fichier par l'une des sections suivantes XML.

    • Si vous créez un modèle de projet visual C#, utilisez la syntaxe XML suivante.
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <SchemaVersion>2.0</SchemaVersion>
        <ProjectGuid>{$guid1$}</ProjectGuid>
        <OutputType>Library</OutputType>
        <AppDesignerFolder>Properties</AppDesignerFolder>
        <RootNamespace>$safeprojectname$</RootNamespace>
        <AssemblyName>$safeprojectname$</AssemblyName>
        <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
        <FileAlignment>512</FileAlignment>
        <ProjectTypeGuids>{BB1F664B-9266-4fd6-B973-E1E44974B511};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <UseVSHostingProcess>false</UseVSHostingProcess>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <DefineConstants>TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
      </PropertyGroup>
      <PropertyGroup>
        <SignAssembly>true</SignAssembly>
        <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
      </PropertyGroup>
      <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Core" />
        <Reference Include="System.Data" />
        <Reference Include="System.Data.DataSetExtensions" />
        <Reference Include="System.Web" />
        <Reference Include="System.Xml" />
        <Reference Include="System.Xml.Linq" />
        <Reference Include="Microsoft.SharePoint" />
        <Reference Include="Microsoft.SharePoint.Security" />
      </ItemGroup>
      <ItemGroup>
        <Compile Include="Properties\AssemblyInfo.cs" />
      </ItemGroup>
      <ItemGroup>
        <None Include="Field1\SharePointProjectItem.spdata">
          <SharePointProjectItemId>{$guid2$}</SharePointProjectItemId>
        </None>
        <None Include="Field1\Elements.xml" />
      </ItemGroup>
      <ItemGroup>
        <None Include="key.snk" />
        <None Include="Package\Package.package">
          <PackageId>{$guid3$}</PackageId>
        </None>
        <None Include="Package\Package.Template.xml">
          <DependentUpon>Package.package</DependentUpon>
        </None>
        <None Include="Features\Feature1\Feature1.feature">
          <FeatureId>{$guid4$}</FeatureId>
        </None>
        <None Include="Features\Feature1\Feature1.Template.xml">
          <DependentUpon>Feature1.feature</DependentUpon>
        </None>
      </ItemGroup>
      <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
      <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" />
    </Project>
    
    1. Si vous créez un modèle de projet Visual Basic, utilisez le code XML suivant.
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProductVersion>
        </ProductVersion>
        <SchemaVersion>
        </SchemaVersion>
        <ProjectGuid>{$guid1$}</ProjectGuid>
        <OutputType>Library</OutputType>
        <RootNamespace>$safeprojectname$</RootNamespace>
        <AssemblyName>$safeprojectname$</AssemblyName>
        <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
        <FileAlignment>512</FileAlignment>
        <ProjectTypeGuids>{BB1F664B-9266-4fd6-B973-E1E44974B511};{D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
        <OptionExplicit>On</OptionExplicit>
        <OptionCompare>Binary</OptionCompare>
        <OptionStrict>Off</OptionStrict>
        <OptionInfer>On</OptionInfer>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <DefineDebug>true</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <OutputPath>bin\Debug\</OutputPath>
        <WarningLevel>4</WarningLevel>
        <UseVSHostingProcess>false</UseVSHostingProcess>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <DefineDebug>false</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <UseVSHostingProcess>false</UseVSHostingProcess>
      </PropertyGroup>
      <PropertyGroup>
        <SignAssembly>true</SignAssembly>
        <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
      </PropertyGroup>
      <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Core" />
        <Reference Include="System.Data" />
        <Reference Include="System.Data.DataSetExtensions" />
        <Reference Include="System.Xml" />
        <Reference Include="System.Xml.Linq" />
        <Reference Include="Microsoft.SharePoint" />
        <Reference Include="Microsoft.SharePoint.Security" />
      </ItemGroup>
      <ItemGroup>
        <Import Include="Microsoft.VisualBasic" />
        <Import Include="System" />
        <Import Include="System.Collections" />
        <Import Include="System.Collections.Generic" />
        <Import Include="System.Data" />
        <Import Include="System.Diagnostics" />
        <Import Include="System.Linq" />
        <Import Include="System.Xml.Linq" />
        <Import Include="Microsoft.SharePoint" />
        <Import Include="Microsoft.SharePoint.Security" />
      </ItemGroup>
      <ItemGroup>
        <Compile Include="My Project\AssemblyInfo.vb" />
      </ItemGroup>
      <ItemGroup>
        <AppDesigner Include="My Project\" />
      </ItemGroup>
      <ItemGroup>
        <None Include="Features\Feature1\Feature1.feature">
          <FeatureId>{$guid4$}</FeatureId>
        </None>
        <None Include="Field1\SharePointProjectItem.spdata">
          <SharePointProjectItemId>{$guid2$}</SharePointProjectItemId>
        </None>
        <None Include="key.snk" />
        <None Include="Package\Package.package">
          <PackageId>{$guid3$}</PackageId>
        </None>
        <None Include="Package\Package.Template.xml">
          <DependentUpon>Package.package</DependentUpon>
        </None>
      </ItemGroup>
      <ItemGroup>
        <None Include="Features\Feature1\Feature1.Template.xml">
          <DependentUpon>Feature1.feature</DependentUpon>
        </None>
        <None Include="Field1\Elements.xml" />
      </ItemGroup>
      <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
      <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" />
    </Project>
    

    Le nouveau XML apporte les modifications suivantes au fichier :

    • Utilise l'élément d' TargetFrameworkVersion pour spécifier le .NET Framework 3.5, et non 4,5.

    • Ajoute SignAssembly et des éléments d' AssemblyOriginatorKeyFile pour signer la sortie de projet.

    • Ajoute des éléments d' Reference pour les références d'assembly que les projets sharepoint utilisent.

    • Ajoute des éléments pour chaque fichier par défaut dans le projet, tel que Elements.xml et SharePointProjectItem.spdata.

  2. Enregistrez et fermez le fichier.

Création d'un package VSIX pour déployer le modèle de projet

Pour déployer l'extension, utilisez le projet VSIX dans la solution SiteColumnProjectItem pour créer un package VSIX.En premier lieu, configurez le package VSIX en modifiant le fichier source.extension.vsixmanifest qui est inclus dans le projet VSIX.Ensuite, créez le package VSIX en générant la solution.

Pour configurer et créer le package VSIX

  1. Dans Explorateur de solutions, dans le projet SiteColumnProjectItem , ouvrez le fichier source.extension.vsixmanifest dans l'éditeur de manifeste.

    Le fichier source.extension.vsixmanifest est la base du fichier extension.vsixmanifest que tous les packages VSIX ont besoin.Pour plus d'informations sur ce fichier, consultez Référence de schéma d'extensions VSIX.

  2. Dans la zone nom de produit , entrez colonne de site.

  3. Dans la zone Author , entrez Contoso.

  4. Dans la zone Description , entrez Un projet SharePoint pour la création des colonnes de site.

  5. Sélectionnez l'onglet Composants , puis choisissez le bouton Nouveau .

    La boîte de dialogue ajoutez le nouveau ressource s'ouvre.

  6. Dans la liste Type , choisissez Microsoft.VisualStudio.ProjectTemplate.

    [!REMARQUE]

    Cette valeur correspond à l'élément ProjectTemplate dans le fichier extension.vsixmanifest.Cet élément identifie le sous-dossier du package VSIX qui contient le modèle de projet.Pour plus d’informations, consultez ProjectTemplate Element (VSX Schema).

  7. Dans la liste Source , choisissez un projet dans la solution actuelle.

  8. Dans la liste Projet , puis choisissez SiteColumnProjectTemplate, puis choisissez le bouton OK .

  9. Choisissez le bouton Nouveau de nouveau.

    La boîte de dialogue ajoutez le nouveau ressource s'ouvre.

  10. Dans la liste Type , choisissez Microsoft.VisualStudio.MefComponent.

    [!REMARQUE]

    Cette valeur correspond à l'élément MefComponent dans le fichier extension.vsixmanifest.Cet élément spécifie le nom d'un assembly d'extension dans le package VSIX.Pour plus d’informations, consultez MEFComponent Element.

  11. Dans la liste Source , choisissez un projet dans la solution actuelle.

  12. Dans la liste Projet , choisissez ProjectItemTypeDefinition, puis choisissez le bouton OK .

  13. Dans la barre de menus, sélectionnez Générer, Générer la solution, puis vérifiez que le projet se compile sans erreurs.

Test du modèle de projet

Vous êtes maintenant prêt à tester le modèle de projet.Commencez à déboguer la solution SiteColumnProjectItem dans l'instance expérimentale de Visual Studio.Testez ensuite le projet Colonne de site dans l'instance expérimentale de Visual Studio.Enfin, générez et exécutez le projet SharePoint pour vous assurer que la colonne de site fonctionne comme prévu.

Pour commencer à déboguer la solution

  1. Redémarrez Visual Studio avec les informations d'identification d'administration, puis ouvrez la solution SiteColumnProjectItem.

  2. Dans le code SiteColumnProjectItemTypeProvider le fichier, ajoutez un point d'arrêt sur la première ligne de code dans la méthode d' InitializeType , puis choisissez la clé F5 pour démarrer le débogage.

    Visual Studio installe l'extension sous %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Site Column\1.0 et démarre une instance expérimentale de Visual Studio.Vous testerez l'élément de projet dans cette instance de Visual Studio.

Pour tester le projet dans Visual Studio

  1. Dans l'instance expérimentale de Visual Studio, dans le menu, choisissez Fichier, Nouveau, Projet.

  2. Développez le nœud Visual C# ou Visual Basic (selon le langage qui pris en charge par votre modèle de projet), développez le nœud SharePoint , puis sélectionnez le nœud 2010 .

  3. Dans la liste des modèles de projet, choisissez le modèle Recherchez la colonne .

  4. Dans la zone Nom , entrez SiteColumnTest puis choisissez le bouton OK .

    Dans Explorateur de solutions, un nouveau projet s'affiche avec un élément de projet nommé Field1.

  5. Vérifiez que le code dans l'autre instance de Visual Studio s'arrête au point d'arrêt que vous avez défini précédemment dans la méthode d' InitializeType , puis sélectionne la clé F5 pour continuer à déboguer le projet.

  6. Dans Explorateur de solutions, sélectionnez le nœud Field1 , puis choisissez la clé F4 .

    Cela a pour effet d'ouvrir la fenêtre Propriétés.

  7. Dans la liste des propriétés, vérifiez que la propriété propriété d'exemple s'affiche.

Pour tester la colonne de site dans SharePoint

  1. Dans Explorateur de solutions, sélectionnez le nœud SiteColumnTest .

  2. Dans la fenêtre Propriétés , dans la zone de texte en regard de la propriété URL de site , entrez https://localhost.

    Cette étape spécifie le site SharePoint local sur l'ordinateur de développement que vous souhaitez utiliser pour le débogage.

    [!REMARQUE]

    La propriété URL de site est vide par défaut car le modèle de projet colonne de site ne fournit pas d'assistant pour collecter cette valeur lorsque le projet est créé.Pour en savoir plus sur l'ajout d'un Assistant qui invite le développeur à spécifier cette valeur, puis configure cette propriété dans le nouveau projet, consultez Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, deuxième partie.

  3. Choisissez la clé F5 .

    La colonne de site est empaquetée et déployée sur le site SharePoint spécifié dans la propriété Recherchez l'URL du projet.Le navigateur web s'ouvre à la page par défaut de ce site.

    [!REMARQUE]

    Si la boîte de dialogue Débogage de script est désactivé s'affiche, cliquez sur le bouton oui pour continuer à déboguer le projet.

  4. Dans le menu actions de site , choisissez Paramètres de site.

  5. Dans la page Recherchez les paramètres , dans la liste galeries , cliquez sur le lien colonnes de site .

  6. Dans la liste des colonnes de site, vérifiez qu'un groupe colonnes personnalisées contient une colonne nommée SiteColumnTest.

  7. Fermez le navigateur web.

Nettoyage de l'ordinateur de développement

Une fois le test du projet terminé, supprimez le modèle de projet de l'instance expérimentale de Visual Studio.

Pour nettoyer l'ordinateur de développement

  1. Dans l'instance expérimentale de Visual Studio, dans le menu, choisissez Outils, Extensions et mises à jour.

    La boîte de dialogue Extensions et mises à jour s'ouvre.

  2. Dans la liste d'extensions, sélectionnez l'extension Recherchez la colonne , puis choisissez le bouton Désinstaller .

  3. Dans la boîte de dialogue qui s'affiche, cliquez sur le bouton oui pour confirmer que vous voulez désinstaller l'extension.

  4. Choisissez le bouton Fermer pour terminer la désinstallation.

  5. Fermez les deux instances de Visual Studio (l'instance expérimentale et l'instance de Visual Studio dans laquelle la solution SiteColumnProjectItem est ouverte).

Étapes suivantes

Après avoir terminé cette procédure pas à pas, vous pouvez ajouter un Assistant au modèle de projet.Lorsqu'un utilisateur crée un projet Colonne de site, l'Assistant invite l'utilisateur à indiquer l'URL du site à utiliser pour le débogage et lui demande si la nouvelle solution est un bac à sable (sandbox), puis l'Assistant configure le projet avec ces informations.L'Assistant collecte également des informations sur la colonne (par exemple le type de base et le groupe dans lequel la colonne peut être répertoriée dans la galerie des colonnes de site) et ajoute ces informations dans le fichier Elements.xml du nouveau projet.Pour plus d’informations, consultez Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, deuxième partie.

Voir aussi

Tâches

Procédure pas à pas : création d'un élément de projet de colonnes de sites avec un modèle de projet, deuxième partie

Concepts

Définition de types d'éléments de projet SharePoint personnalisés

Création de modèles d'élément et de modèles de projet pour les éléments de projet SharePoint

Enregistrement des données dans les extensions du système de projet SharePoint

Association de données personnalisées à des extensions d'outils SharePoint