Metoda IVsUserSettings.ImportSettings — (String, IVsSettingsReader, UInt32, Int32)
Data opublikowania: październik 2016
Pobiera konfigurację VSPackage przy użyciu Visual Studio mechanizm ustawień, gdy użytkownik wybierze opcję Importuj importowania i eksportowania ustawień funkcji IDE narzędzia menu.
Przestrzeń nazw: Microsoft.VisualStudio.Shell.Interop
Zestaw: Microsoft.VisualStudio.Shell.Interop.8.0 (w Microsoft.VisualStudio.Shell.Interop.8.0.dll)
Składnia
int ImportSettings(
string pszCategoryGUID,
IVsSettingsReader pSettings,
uint flags,
ref int pfRestartRequired
)
int ImportSettings(
String^ pszCategoryGUID,
IVsSettingsReader^ pSettings,
unsigned int flags,
int% pfRestartRequired
)
abstract ImportSettings :
pszCategoryGUID:string *
pSettings:IVsSettingsReader *
flags:uint32 *
pfRestartRequired:int byref -> int
Function ImportSettings (
pszCategoryGUID As String,
pSettings As IVsSettingsReader,
flags As UInteger,
ByRef pfRestartRequired As Integer
) As Integer
Parametry
pszCategoryGUID
Type: System.String[in] Identyfikator GUID grupy ustawień do zaimportowania. To jest identyfikacja identyfikator GUID punktu ustawienia niestandardowe. Więcej informacji na temat punktów ustawień niestandardowych można znaleźć w temacie Rejestrowanie Obsługa trwałości ustawienia.
pSettings
Type: Microsoft.VisualStudio.Shell.Interop.IVsSettingsReader[in] IVsSettingsWriter Interfejs dostarczanych przez środowisko VSPackage zapewnianie dostępu do odczytu Visual Studio pliku ustawień.
flags
Type: System.UInt32[in] Flaga z wskazujący systemu, jak implementację ImportSettings powinien pobrane ustawienia procesów.
Obsługiwane wartości tego są członkami __UserSettingsFlags wyliczenia.
pfRestartRequired
Type: System.Int32[out] Flaga zwracane wskazujący środowiska Jeśli IDE ponowne uruchomienie jest wymagane do ukończenia ponownej konfiguracji środowiska na podstawie danych pobrane. Jeśli wartość zwracana przez pfRestartRequired jest true, należy ponownie uruchomić środowisko.
Wartość zwracana
Type: System.Int32
Jeśli metoda zakończy się pomyślnie, zwraca S_OK. Jeśli nie, zwraca kod błędu.
Uwagi
Pojedynczy VSPackage może obsługiwać więcej niż jeden punkt ustawienia niestandardowe (kategoria ustawienia). Dlatego implementacje ImportSettings sprawdzić kategorii przekazany identyfikator GUID i wybierz poprawny mechanizm pobieranie stanu określonego przez określonego punktu ustawienia niestandardowe.
Informacje dotyczące ustawień znajduje się w nim pliki XML. Te można ręcznie edytować pliki XML mogą występować uszkodzenie na dysku, może zawierać ustawienia specyficzne dla wersji i może służyć jako narzędzia złośliwych ataków. Dlatego też ważne jest sprawdzania poprawności danych wejściowych w ramach pobieranie ustawień konfiguracji danych.
Jeśli unieważnić zostanie znaleziony, implementacja ImportSettings mogą być automatycznie monituje użytkownika za pośrednictwem IDE ReportError metody.
Visual Studio IDE się monit o ponowne uruchomienie Visual Studio podczas wdrażania pakietu VSPackage ImportSettings wskazuje, że Visual Studio środowisko musi zostać uruchomiony ponownie po import danych ustawienia powracając pfRestartRequired o wartości true. Nie istnieje potrzeba do zaimplementowania okna dialogowego użytkownika lub zamknięcia systemu Visual Studio.
Przykłady
W tym przykładzie implementacji ImportSettings wybierze między dwoma różnymi metodami pobierania danych w zależności od pszCategoryGUID argumentu.
W przykładzie obsługi __UserSettingsFlags flag zależności również są wyświetlane.
STDMETHOD(ImportSettings)(WCHAR *pszCategoryGUID, IVsSettingsReader *pSettings, UserSettingsFlags flags, BOOL *pfRestartRequired)
{
CLSID clsidCategory;
HRESULT hr;
hr = CLSIDFromString(pszCategoryGUID, &clsidCategory);
IfFailGo(hr);
//Delegate to the right internal implementation based on the requested category
if (GUID_Profiles_CommandBars == clsidCategory)
{
hr = ImportSettings_CommandBars(, pSettings, flags, pfRestartRequired);
}
else if (GUID_Profiles_KeyBindings == clsidCategory)
{
hr = ImportSettings_KeyBindings( pSettings, flags, pfRestartRequired);
}
else
{
hr = E_UNEXPECTED;
}
Error:
return hr;
};
// Import Settings
HRESULT ImportSettings_CommandBars(IVsSettingsReader *pSettings, UserSettingsFlags flags, BOOL *pfRestartRequired)
{
if (!pSettings)
return E_INVALIDARG;
if (pfRestartRequired)
{
*pfRestartRequired = FALSE; //Nobody should require a restart!!
}
CComBSTR bstrFirstSettingName;
long lTrashLength = 0;
BYTE *pTrashBytes = NULL;
//Determines whether we can treat import as an additive operation, or a reset all settings operation
BOOL fResetCompletely = FALSE;
if (flags & USF_ResetOnImport)
fResetCompletely = TRUE;
hr = pSettings->ReadSettingString(c_szFirstSettingName, &bstrFirstSettingName);
IfFailGo(hr);
hr = pSettings->ReadSettingLong(c_szRandomTrashLength, &lTrashLength);
IfFailGo(hr);
if (lTrashLength > 0)
{
pTrashBytes = (BYTE*)VSAlloc(lTrashLength);
IfNullMemGo(pTrashBytes);
long lDataRead = 0;
hr = pSettings->ReadSettingBytes(c_szRandomTrashLength, pTrashBytes, &lDataRead, lTrashLength);
IfFailGo(hr);
if (lDataRead != lTrashLength)
{
hr = E_UNEXPECTED;
goto Error;
}
}
//Note: Before returning, these settings should immediately be applied to your personal
// settings store, whether in the registry or the file system.
//This write-through cache methodology is essential to allow us to work in multi-instance IDE scenarios.
hr = UpdateState_CommandBar(bstrFirstSettingName,lTrashLength,pTrashBytes,lDataRead);
Error:
return hr;
};
HRESULT ImportSettings_KeyBindings(IVsSettingsReader *pSettings, UserSettingsFlags flags, BOOL *pfRestartRequired)
{
if (!pSettings)
return E_INVALIDARG;
if (pfRestartRequired)
{
*pfRestartRequired = FALSE; //Nobody should require a restart!!
}
CComBSTR bstrBreakPointWindow;
//Determines whether we can treat import as an additive operation, or a reset all settings operation
BOOL fResetCompletely = FALSE;
if (flags & USF_ResetOnImport)
fResetCompletely = TRUE;
hr = pSettings->ReadSettingString(c_szBreakPointWindow, &bstrBreakPointWindow);
IfFailGo(hr);
//Note: Before returning, these settings should immediately be applied to your personal
// settings store, whether in the registry or the file system.
//This write-thru cache methodology is essential to allow us to work in multi-instance IDE scenarios.
hr = UpdateState_KeyBindings(bstrBreakPointWindow);
Error:
return hr;
}
Zobacz też
ExportSettings
IVsUserSettingsQuery
Interfejs IVsUserSettings
Przestrzeń nazw Microsoft.VisualStudio.Shell.Interop
Obsługa ustawień użytkownika
Porady: eksportowanie ustawień za pomocą zestawy międzyoperacyjne
Porady: umożliwia importowanie ustawień zestawy międzyoperacyjne
Powrót do początku