Zapisywanie danych w rozszerzeniach systemu projektu programu SharePoint
Podczas rozszerzania systemu projektu programu SharePoint można zapisać dane ciągu, który pozostawałby po zamknięciu projektu programu SharePoint.Dane są zazwyczaj skojarzone z elementem konkretnego projektu lub w samym projekcie.
Jeśli masz dane, które utrzymują się nie jest konieczne, można dodać dane do dowolnego obiektu w modelu obiektów programu SharePoint narzędzi, który implementuje IAnnotatedObject interfejsu.Aby uzyskać więcej informacji, zobacz Kojarzenie danych niestandardowy z rozszerzeniami narzędzia programu SharePoint.
Zapisywanie danych, który jest skojarzony z elementem projektu
Gdy dane, które są skojarzone z określonym elementem projektu programu SharePoint, takich jak wartość właściwości, które można dodać do elementu projektu, można zapisać danych do pliku .spdata dla elementu projektu.Aby to zrobić, użyj ExtensionData właściwość ISharePointProjectItem obiektu.Dane, które można dodać do tej właściwości jest zapisywany w ExtensionData elementu w pliku .spdata dla elementu projektu.Aby uzyskać więcej informacji, zobacz ExtensionData Element.
Poniższy przykład kodu pokazuje sposób użycia ExtensionData właściwość, aby zapisać wartości właściwości ciągu, która jest zdefiniowana w polu Typ niestandardowy element projektu programu SharePoint.Aby wyświetlić ten przykład w kontekście przykład większych, zobacz Jak: Dodawanie właściwości do niestandardowy typ elementu projektu programu 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);
}
}
}
Zapisywanie danych, który jest skojarzony z projektu
Gdy dane poziomu projektu, takie jak wartość właściwości, które można dodać do projektów programu SharePoint, można zapisać danych do pliku projektu (plik .csproj lub .vbproj pliku) lub pliku projektu użytkownika opcji (. plik csproj.user lub. vbproj.user pliku).Plik, który chcesz zapisać dane w zależy od tego, w jaki sposób dane mają być używane:
Jeśli chcesz, aby dane, które mają być dostępne dla wszystkich deweloperów, którzy Otwórz projekt programu SharePoint, należy zapisać dane w pliku projektu.Ten plik zawsze jest sprawdzane w baz danych kontroli źródła, więc dane w tym pliku jest udostępniana innym producentom, którzy wyewidencjonować projekt.
Jeśli chcesz, aby dane, które mają być dostępne tylko dla bieżącego deweloper, który ma projekt programu SharePoint Otwórz w programie Visual Studio, zapisać dane w pliku opcji użytkownika projektu.Ten plik nie jest zazwyczaj wyewidencjonowany bazach danych kontroli źródła, więc dane w tym pliku nie jest dostępne dla innych programistów, którzy wyewidencjonować projekt.
Zapisywanie danych w pliku projektu
Aby zapisać dane w pliku projektu, należy przekonwertować ISharePointProject obiektu do IVsBuildPropertyStorage obiekt, a następnie użyj IVsBuildPropertyStorage.SetPropertyValue metody.Poniższy przykład kodu pokazuje sposób użycia tej metody do zapisania wartości właściwości projektu do pliku projektu.Aby wyświetlić ten przykład w kontekście większą próbkę, zobacz Jak: Dodawanie właściwości do projektów programu 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);
}
}
}
Aby uzyskać więcej informacji o konwertowaniu ISharePointProject obiekty do innych typów w modelu obiektowym automatyzacji programu Visual Studio lub integracji modelu obiektowego, zobacz Konwersja między typami systemu projektu programu SharePoint i rodzajami projektu programu Visual Studio.
Zapisywanie danych w pliku projektu użytkownika opcji
Aby zapisać dane w pliku projektu użytkownika opcji, należy użyć ProjectUserFileData właściwość ISharePointProject obiektu.Poniższy przykład kodu demonstruje, jak właociwooci tej można użyć do zapisania wartości właściwości projektu do pliku projektu użytkownika opcji.Aby wyświetlić ten przykład w kontekście większą próbkę, zobacz Jak: Dodawanie właściwości do projektów programu 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;
}
}
}
Zobacz też
Koncepcje
Rozszerzenia systemu projektu programu SharePoint
Kojarzenie danych niestandardowy z rozszerzeniami narzędzia programu SharePoint