Enregistrer les données dans les extensions du système de projet SharePointSave data in extensions of the SharePoint project system

Lorsque vous étendez le système de projet SharePoint, vous pouvez enregistrer les données de chaîne qui persiste après la fermeture d’un projet SharePoint.When you extend the SharePoint project system, you can save string data that persists after a SharePoint project is closed. Les données sont généralement associé à un élément de projet particulier ou le projet lui-même.The data is typically associated with a particular project item or with the project itself.

Si vous avez des données que vous ne souhaitez pas conserver, vous pouvez ajouter les données à n’importe quel objet dans le modèle objet des outils SharePoint qui implémente le IAnnotatedObject interface.If you have data that does not need to persist, you can add the data to any object in the SharePoint tools object model that implements the IAnnotatedObject interface. Pour plus d’informations, consultez associer des données personnalisées à SharePoint extensions d’outils.For more information, see Associate custom data with SharePoint tools extensions.

Enregistrer les données qui sont associées à un élément de projetSave data that is associated with a project item

Lorsque vous avez des données qui sont associées à un élément de projet SharePoint particulier, telles que la valeur d’une propriété que vous ajoutez à un élément de projet, vous pouvez enregistrer les données à la .spdata fichier pour l’élément de projet.When you have data that is associated with a particular SharePoint project item, such as the value of a property that you add to a project item, you can save the data to the .spdata file for the project item. Pour ce faire, utilisez le ExtensionData propriété d’un ISharePointProjectItem objet.To do this, use the ExtensionData property of an ISharePointProjectItem object. Les données que vous ajoutez à cette propriété sont enregistrées dans le ExtensionData élément dans le .spdata fichier pour l’élément de projet.Data that you add to this property is saved in the ExtensionData element in the .spdata file for the project item. Pour plus d’informations, consultez ExtensionData, élément.For more information, see ExtensionData Element.

L’exemple de code suivant montre comment utiliser le ExtensionData propriété pour enregistrer la valeur d’une propriété de chaîne qui est définie dans un type d’élément de projet SharePoint personnalisé.The following code example demonstrates how to use the ExtensionData property to save the value of a string property that is defined in a custom SharePoint project item type. Pour voir cet exemple dans le contexte d’un exemple plus complet, consultez Comment : ajouter une propriété à un type d’élément de projet SharePoint personnalisé.To see this example in the context of a larger example, see How to: Add a property to a custom SharePoint project item type.

Private Const TestPropertyId As String = "Contoso.ExampleProperty"
Private Const PropertyDefaultValue As String = "This is an example property."

<DisplayName("Example Property")> _
<DescriptionAttribute("This is an example property for 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
private const string PropertyId = "Contoso.ExampleProperty";
private const string PropertyDefaultValue = "This is an example property.";

[DisplayName("Example Property")]
[DescriptionAttribute("This is an example property for 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);
        }
    }
}

Enregistrer les données qui sont associées à un projetSave data that is associated with a project

Si vous avez des données au niveau du projet, telles que la valeur d’une propriété que vous ajoutez à des projets SharePoint, vous pouvez enregistrer les données dans le fichier projet (le .csproj fichier ou .vbproj fichier) ou l’option d’utilisateur de projet fichier (le . csproj.user fichier ou . vbproj.user fichier).When you have project-level data, such as the value of a property that you add to SharePoint projects, you can save the data to the project file (the .csproj file or .vbproj file) or the project user option file (the .csproj.user file or .vbproj.user file). Le fichier que vous choisissez d’enregistrer les données dans dépend de la façon dont vous souhaitez les données à utiliser :The file you choose to save the data in depends on how you want the data to be used:

  • Si vous souhaitez que les données soient disponibles pour tous les développeurs qui ouvrent le projet SharePoint, enregistrer les données dans le fichier projet.If you want the data to be available to all developers who open the SharePoint project, save the data to the project file. Ce fichier est archivé toujours aux bases de données du contrôle source, par conséquent, les données dans ce fichier seront disponibles à d’autres développeurs qui extraient le projet.This file is always checked in to source control databases, so the data in this file is available to other developers who check out the project.

  • Si vous souhaitez que les données soient disponibles uniquement pour les développeurs en cours qui a le projet SharePoint ouvert dans Visual Studio, enregistrer les données dans le fichier projet des options utilisateur.If you want the data to be available only to the current developer who has the SharePoint project open in Visual Studio, save the data to the project user option file. Ce fichier est généralement désactivée aux bases de données du contrôle source, les données dans ce fichier n’est pas disponibles à d’autres développeurs qui extraient le projet.This file is not typically checked in to source control databases, so the data in this file is not available to other developers who check out the project.

Enregistrer les données dans le fichier projetSave data to the project file

Pour enregistrer les données dans le fichier projet, vous devez convertir un ISharePointProject de l’objet à un IVsBuildPropertyStorage objet, puis utiliser le SetPropertyValue (méthode).To save data to the project file, convert an ISharePointProject object to an IVsBuildPropertyStorage object, and then use the SetPropertyValue method. L’exemple de code suivant montre comment utiliser cette méthode pour enregistrer la valeur d’une propriété de projet dans le fichier projet.The following code example demonstrates how to use this method to save the value of a project property to the project file. Pour voir cet exemple dans le contexte d’un exemple plus complet, consultez Comment : ajouter une propriété à des projets SharePoint.To see this example in the context of a larger sample, see How to: Add a property to SharePoint projects.

Private sharePointProject As ISharePointProject
Private projectStorage As IVsBuildPropertyStorage
Private Const ProjectFilePropertyId As String = "ContosoCustomProjectFileProperty"
Private Const ProjectFilePropertyDefaultValue As String = "Default"

Public Sub New(ByVal myProject As ISharePointProject)
    sharePointProject = myProject
    projectStorage = sharePointProject.ProjectService.Convert(Of ISharePointProject, IVsBuildPropertyStorage)(sharePointProject)
End Sub

<DisplayName("Custom Project File Property")> _
<DescriptionAttribute("This property is saved to the .csproj/.vbproj file.")> _
<DefaultValue(ProjectFilePropertyDefaultValue)> _
Public Property CustomProjectFileProperty As String
    Get
        Dim propertyValue As String = String.Empty
        Dim hr As Integer = projectStorage.GetPropertyValue(ProjectFilePropertyId, String.Empty, _
            CUInt(_PersistStorageType.PST_PROJECT_FILE), propertyValue)

        ' Try to get the current value from the project file; if it does not yet exist, return a default value.
        If Not ErrorHandler.Succeeded(hr) Or String.IsNullOrEmpty(propertyValue) Then
            propertyValue = ProjectFilePropertyDefaultValue
        End If
        Return propertyValue
    End Get
    Set(ByVal value As String)
        ' Do not save the default value.
        If value <> ProjectFilePropertyDefaultValue Then
            projectStorage.SetPropertyValue(ProjectFilePropertyId, String.Empty, _
                CUInt(_PersistStorageType.PST_PROJECT_FILE), value)
        End If
    End Set
End Property
private ISharePointProject sharePointProject;
private IVsBuildPropertyStorage projectStorage;
private const string ProjectFilePropertyId = "ContosoCustomProjectFileProperty";
private const string ProjectFilePropertyDefaultValue = "Default";

public CustomProjectProperties(ISharePointProject myProject)
{
    sharePointProject = myProject;
    projectStorage = sharePointProject.ProjectService.Convert<ISharePointProject, IVsBuildPropertyStorage>(sharePointProject);
}

[DisplayName("Custom Project File Property")]
[DescriptionAttribute("This property is saved to the .csproj/.vbproj file.")]
[DefaultValue(ProjectFilePropertyDefaultValue)]
public string CustomProjectFileProperty
{
    get
    {
        string propertyValue;
        int hr = projectStorage.GetPropertyValue(ProjectFilePropertyId, string.Empty, 
            (uint)_PersistStorageType.PST_PROJECT_FILE, out propertyValue);

        // Try to get the current value from the project file; if it does not yet exist, return a default value.
        if (!ErrorHandler.Succeeded(hr) || String.IsNullOrEmpty(propertyValue))
        {
            propertyValue = ProjectFilePropertyDefaultValue;
        }

        return propertyValue;
    }

    set
    {
        // Do not save the default value.
        if (value != ProjectFilePropertyDefaultValue)
        {
            projectStorage.SetPropertyValue(ProjectFilePropertyId, string.Empty, 
                (uint)_PersistStorageType.PST_PROJECT_FILE, value);
        }
    }
}

Pour plus d’informations sur la conversion ISharePointProject objets à d’autres types dans le modèle objet automation Visual Studio ou le modèle objet d’intégration, consultez effectuer des conversions entre types de système de projet SharePoint et d’autres types de projet Visual Studio.For more information about converting ISharePointProject objects to other types in the Visual Studio automation object model or integration object model, see Convert between SharePoint project system types and other Visual Studio project types.

Enregistrer les données dans le fichier projet des options utilisateurSave data to the project user option file

Pour enregistrer les données dans le fichier d’options de projet utilisateur, utilisez la ProjectUserFileData propriété d’un ISharePointProject objet.To save data to the project user option file, use the ProjectUserFileData property of an ISharePointProject object. L’exemple de code suivant montre comment utiliser cette propriété pour enregistrer la valeur d’une propriété de projet dans le fichier projet des options utilisateur.The following code example demonstrates how to use this property to save the value of a project property to the project user option file. Pour voir cet exemple dans le contexte d’un exemple plus complet, consultez Comment : ajouter une propriété à des projets SharePoint.To see this example in the context of a larger sample, see How to: Add a property to SharePoint projects.

Private Const UserFilePropertyId As String = "ContosoCustomUserFileProperty"
Private Const UserFilePropertyDefaultValue As String = "Default"

<DisplayName("Custom Project User File Property")> _
<DescriptionAttribute("This property is saved to the .user file.")> _
<DefaultValue(UserFilePropertyDefaultValue)> _
Public Property CustomUserFileProperty As String
    Get
        Dim propertyValue As String = String.Empty
        ' Try to get the current value from the .user file; if it does not yet exist, return a default value.
        If Not sharePointProject.ProjectUserFileData.TryGetValue(UserFilePropertyId, propertyValue) Then
            propertyValue = UserFilePropertyDefaultValue
        End If
        Return propertyValue
    End Get
    Set(ByVal value As String)
        ' Do not save the default value.
        If value <> UserFilePropertyDefaultValue Then
            sharePointProject.ProjectUserFileData(UserFilePropertyId) = value
        End If
    End Set
End Property
private const string UserFilePropertyId = "ContosoCustomUserFileProperty";
private const string UserFilePropertyDefaultValue = "Default";

[DisplayName("Custom Project User File Property")]
[DescriptionAttribute("This property is saved to the .user file.")]
[DefaultValue(UserFilePropertyDefaultValue)]
public string CustomUserFileProperty
{
    get
    {
        string propertyValue = string.Empty;
        
        // Try to get the current value from the .user file; if it does not yet exist, return a default value.
        if (!sharePointProject.ProjectUserFileData.TryGetValue(UserFilePropertyId, out propertyValue))
        {
            propertyValue = UserFilePropertyDefaultValue; 
        }

        return propertyValue; 
    }
    
    set
    {
        // Do not save the default value.
        if (value != UserFilePropertyDefaultValue)
        {
            sharePointProject.ProjectUserFileData[UserFilePropertyId] = value;
        }
    }
}                

Voir aussiSee also

Étendre le système de projet SharePoint Extend the SharePoint project system
Associer des données personnalisées avec les extensions d’outils SharePoint Associate custom data with SharePoint tools extensions
Effectuer une conversion entre les types de système de projet SharePoint et d’autres types de projet Visual StudioConvert between SharePoint project system types and other Visual Studio project types