Enregistrement des données dans les extensions du système de projet SharePointSaving 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é liée 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 à des Extensions d’outils SharePoint.For more information, see Associating Custom Data with SharePoint Tools Extensions.

L’enregistrement de données qui est associé avec un élément de projetSaving Data That is Associated with a Project Item

Lorsque vous disposez de données qui sont associées à un élément de projet SharePoint particulier, tel que la valeur d’une propriété que vous ajoutez à un élément de projet, vous pouvez enregistrer les données dans le fichier .spdata 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 fichier .spdata 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 personnalisé SharePoint.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);
        }
    }
}

L’enregistrement de données qui est associé un projetSaving Data That is Associated with a Project

Lorsque vous disposez 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 pour le fichier de projet (le fichier .csproj ou .vbproj) ou le fichier d’options utilisateur projet (la. fichier de csproj.user 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 comment vous souhaitez que 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 de 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 le nom du développeur qui a le projet SharePoint dans Visual Studio d’ouvrir, enregistrer les données dans le fichier projet d’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, donc les données dans ce fichier ne sont 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.

L’enregistrement de données dans le fichier de projetSaving 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 à d’autres types dans le modèle objet automation Visual Studio ou le modèle objet d’intégration, voir conversion entre système de Types 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 Converting Between SharePoint Project System Types and Other Visual Studio Project Types.

L’enregistrement des données au fichier projet utilisateur OptionSaving Data to the Project User Option File

Pour enregistrer les données au fichier projet utilisateur option, utilisez le 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 d’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

Extension du système de projet SharePoint Extending the SharePoint Project System
Associer des données personnalisées à des Extensions d’outils SharePoint Associating Custom Data with SharePoint Tools Extensions
Conversion entre des types d’un système de projet SharePoint et d’autres types de projets Visual StudioConverting Between SharePoint Project System Types and Other Visual Studio Project Types