Salvar dados em extensões do sistema de projeto do SharePoint

Quando você estende o sistema de projeto do SharePoint, você pode salvar os dados de seqüência persistir depois de um projeto do SharePoint é fechado. Os dados são geralmente associados a um item de projeto específico ou o próprio projeto.

Se você tiver dados que não precisam persistir, você pode adicionar dados a qualquer objeto no modelo de objeto SharePoint ferramentas que implementa o IAnnotatedObject interface. Para obter mais informações, consulte A associação de dados personalizados com extensões de ferramentas do SharePoint.

Salvando os dados que está associada com um Item de projeto

Quando você tiver dados que está associados um item de projeto específico do SharePoint, como, por exemplo, o valor de uma propriedade que você adicionar a um item de projeto, você pode salvar os dados para o arquivo .spdata para o item de projeto. Para fazer isso, use o ExtensionData propriedade de um ISharePointProjectItem objeto. Os dados que você adicionar a esta propriedade é salvo no ExtensionData o elemento no arquivo .spdata para o item de projeto. Para obter mais informações, consulte Elemento de ExtensionData.

O exemplo de código a seguir demonstra como usar o ExtensionData propriedade para salvar o valor de uma propriedade de seqüência de caracteres que é definido em um personalizado SharePoint project item tipo. Para ver este exemplo no contexto de um exemplo maior, consulte Como: Adicionar uma propriedade para um tipo de Item de projeto do SharePoint personalizado.

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

Salvando os dados que está associada com um projeto

Quando você tiver dados em nível de projeto, como, por exemplo, o valor de uma propriedade que você adicionar a projetos do SharePoint, você pode salvar os dados para o arquivo de projeto (arquivo. csproj ou arquivo. vbproj) ou o arquivo de opção do usuário do projeto (a. arquivo de csproj.User ou. arquivo de vbproj.User). O arquivo que você optar por salvar os dados depende de como você deseja que os dados a ser usado:

  • Se desejar que os dados estejam disponíveis para todos os desenvolvedores que abra o projeto do SharePoint, salve os dados no arquivo de projeto. Este arquivo sempre é verificado bancos de dados de controle de origem, para que os dados deste arquivo estão disponíveis para outros desenvolvedores que o check-out do projeto.

  • Se desejar que os dados estejam disponíveis apenas para o desenvolvedor atual, que abriu o projeto do SharePoint no Visual Studio, salve os dados para o arquivo de opção do usuário do projeto. Este arquivo não é normalmente verificado bancos de dados de controle de origem, para que os dados neste arquivo não estão disponíveis para outros desenvolvedores que o check-out do projeto.

Salvar dados no arquivo de projeto

Para salvar dados no arquivo de projeto, converter uma ISharePointProject o objeto para um IVsBuildPropertyStorage de objeto e use o IVsBuildPropertyStorage.SetPropertyValue método. O exemplo de código a seguir demonstra como usar esse método para salvar o valor da propriedade de um projeto no arquivo de projeto. Para ver este exemplo no contexto de uma amostra maior, consulte Como: Adicionar uma propriedade para projetos do SharePoint.

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

Para obter mais informações sobre a conversão de ISharePointProject objetos a outros tipos de modelo de objeto de automação de Visual Studio ou do modelo de objeto de integração, consulte Conversão entre tipos de sistema do projeto do SharePoint e outros tipos de projeto de Visual Studio.

Salvando dados para o arquivo de opção do usuário de projeto

Para salvar os dados para o arquivo de opção do usuário de projeto, use o ProjectUserFileData propriedade de um ISharePointProject objeto. O exemplo de código a seguir demonstra como usar essa propriedade para salvar o valor de uma propriedade de projeto para o arquivo de opção do usuário do projeto. Para ver este exemplo no contexto de uma amostra maior, consulte Como: Adicionar uma propriedade para projetos do SharePoint.

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

Consulte também

Conceitos

Estendendo o sistema de projeto do SharePoint

Outros recursos

A associação de dados personalizados com extensões de ferramentas do SharePoint

Conversão entre tipos de sistema do projeto do SharePoint e outros tipos de projeto de Visual Studio