Sdílet prostřednictvím


Uložení dat v rozšíření systému SharePoint projektu

Při rozšíření systému SharePoint projekt můžete uložit řetězec data, která přetrvává i po ukončení projektu SharePoint. Data jsou zpravidla spojeny s položku určitého projektu nebo samotného projektu.

Pokud máte data, která není potřeba uchovat, můžete přidat data na libovolný objekt v objektovém modelu SharePoint nástroje implementuje IAnnotatedObject rozhraní. Další informace naleznete v tématu Přidružení dat vlastní rozšíření nástroje služby SharePoint.

Ukládání dat přidružené položky projektu

Pokud máte data spojená s určitou položku SharePoint projektu, například hodnotu vlastnosti, které přidáte do položky projektu lze uložit data projektu položky v souboru .spdata. To provedete pomocí ExtensionData Vlastnost ISharePointProjectItem objektu. Přidat vlastnost data uložena do ExtensionData prvku v souboru .spdata pro položky projektu. Další informace naleznete v tématu Prvek ExtensionData.

Následující příklad kódu ukazuje, jak použít ExtensionData vlastnost k uložení hodnoty vlastnosti řetězce definovanou do vlastní SharePoint projektu položky typu. Větší příklad tohoto kódu v kontextu naleznete v tématu Postupy: Přidání vlastnosti do vlastního typu položky projektu SharePoint.

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

Přidružené ukládání dat projektu

Pokud máte data projektu jako hodnota vlastnosti přidané do projektů SharePoint můžete uložit data souboru projektu (soubor CSPROJ nebo VBPROJ soubor) nebo soubor projektu uživateli možnost (. csproj.user soubor nebo. vbproj.user soubor). Soubor, který můžete uložit data závisí na způsob údaje byly použity:

  • Pokud chcete data k dispozici všechny vývojáře, kteří SharePoint projekt otevřít, uložte data do souboru projektu. Tento soubor je vždy změnami zdroj ovládacího prvku databází tak data v tomto souboru k dispozici ostatní vývojáři, kteří projekt rezervovat.

  • Pokud chcete data k dispozici pouze pro aktuální vývojář, který projekt SharePoint otevřete v aplikaci Visual Studio, uložte data do souboru projektu uživateli možnost. Tento soubor není zaškrtnuté obvykle databází zdroj ovládacího prvku, tak data v tomto souboru není k dispozici pro ostatní vývojáři, kteří projekt rezervovat.

Ukládání dat do souboru projektu

Chcete-li uložit data do souboru projektu, převést ISharePointProject objekt na IVsBuildPropertyStorage objekt a potom IVsBuildPropertyStorage.SetPropertyValue metody. Následující příklad kódu ukazuje, jak tuto metodu použít k uložení hodnoty vlastnosti projektu do souboru projektu. V tomto příkladu v rámci větší vzorek, viz Postupy: Přidat vlastnost SharePoint projekty.

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

Další informace o převodu ISharePointProject objekty jiné typy v modelu objektu automatizace Visual Studio nebo integrace objektový model, viz Převod mezi systémovými typy projektů SharePoint a jinými typy projektů Visual Studio.

Soubor projektu uživateli možnost uložení dat

Soubor projektu uživateli možnost uložit data, použijte ProjectUserFileData Vlastnost ISharePointProject objektu. Následující příklad kódu ukazuje, jak tuto vlastnost použít soubor projektu uživateli možnost uložení hodnoty vlastnosti projektu. V tomto příkladu v rámci větší vzorek, viz Postupy: Přidat vlastnost SharePoint projekty.

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

Viz také

Koncepty

Rozšíření systému projektů služby SharePoint

Další zdroje

Přidružení dat vlastní rozšíření nástroje služby SharePoint

Převod mezi systémovými typy projektů SharePoint a jinými typy projektů Visual Studio