Sdílet prostřednictvím


Metoda IVsUserSettings.ImportSettings (String, IVsSettingsReader, UInt32, Int32)

 

Načte konfiguraci VSPackage pomocí Visual Studio mechanismus nastavení, když uživatel vybere možnost import Nastavení importu a exportu funkci na rozhraní IDE Nástroje nabídky.

Obor názvů:   Microsoft.VisualStudio.Shell.Interop
Sestavení:  Microsoft.VisualStudio.Shell.Interop.8.0 (v Microsoft.VisualStudio.Shell.Interop.8.0.dll)

Syntaxe

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

    [v] Identifikátor GUID identifikující skupinu nastavení k importu. Toto je identifikovat GUID bodu vlastní nastavení. Další informace o vlastním nastavení bodů najdete v části registrace podpora stálost nastavení.

  • flags
    Type: System.UInt32

    [v] Příznak ze systému určující způsob implementace ImportSettings by měl načtené nastavení procesu.

    Podporované hodnoty, které jsou členy __UserSettingsFlags výčtu.

  • pfRestartRequired
    Type: System.Int32

    [out] Příznak vrácen do prostředí určující, pokud k dokončení konfigurace prostředí na základě načtených dat je nutné restartovat rozhraní IDE. Pokud je hodnota vrácené pfRestartRequired je true, prostředí byste měli restartovat.

Návratová hodnota

Type: System.Int32

Pokud je metoda úspěšná, vrátí S_OK. Pokud selže, vrátí kód chyby.

Poznámky

Jeden VSPackage může podporovat více než jeden bod nastavení vlastní (kategorie nastavení). Proto implementace ImportSettings musí zkontrolovat kategorie GUID předaný a zvolte správný mechanismus pro načítání stavu určené konkrétní vlastní nastavení místo.

Informace o nastavení je obsažen v souborech XML. Tyto ručně upravovat soubory XML může být negativně ovlivněn poškození na disku, může obsahovat nastavení pro konkrétní verzi a by bylo možné použít jako vehicle pro útoku. Proto je důležité ověření vstupů jako součást načítání nastavení konfigurační data.

Pokud znehodnocených není nalezen, implementace ImportSettings můžete použít rozhraní IDE automaticky vyzve uživatele prostřednictvím ReportError Metoda.

Visual Studio IDE, samotné vyzve uživatele k restartování Visual Studio Při VSPackage implementaci ImportSettings označuje, že Visual Studio prostředí je třeba restartovat po importu dat nastavení vrácením pfRestartRequired s hodnotou true. Není nutné provádět dialogu uživatele nebo vypnutí Visual Studio.

Příklady

V tomto příkladu provádění ImportSettings zvolí mezi dvě různé metody načítání dat v závislosti na pszCategoryGUID argument.

V příkladu zpracování __UserSettingsFlags základě příznaky jsou také zobrazeny.

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

Viz také

ExportSettings
IVsUserSettingsQuery
Rozhraní IVsUserSettings
Obory názvů Microsoft.VisualStudio.Shell.Interop
Podpora pro uživatelská nastavení
Postupy: Export nastavení pomocí sestavení vzájemné spolupráce
Postupy: použití sestavení vzájemné spolupráce pro Import nastavení

Zpět na začátek