Aracılığıyla paylaş


IVsUserSettings.ImportSettings Yöntemi (String, IVsSettingsReader, UInt32, Int32)

 

VSPackage'nın yapılandırmasını alır kullanarak Visual Studio kullanıcı içeri aktarma seçeneği seçtiğinde ayarları mekanizması içeri/dışarı aktarma ayarları IDE'nin özelliğini Araçları menü.

Ad alanı:   Microsoft.VisualStudio.Shell.Interop
Derleme:  Microsoft.VisualStudio.Shell.Interop.8.0 (Microsoft.VisualStudio.Shell.Interop.8.0.dll içinde)

Sözdizimi

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

Parametreler

  • pszCategoryGUID
    Type: System.String

    [in] İçeri aktarılacak ayar grubu tanımlayan GUID. Özel ayarları noktasının GUID belirlenmesini budur. Özel ayarları noktaları hakkında daha fazla bilgi için kaydetme ayarlarını Kalıcılık destek bakın.

  • flags
    Type: System.UInt32

    [in] Bayrak gösteren sistem uygulaması nasıl ImportSettings işlem alınan ayarları beklenir.

    Desteklenen değerler'ın üyesi olan __UserSettingsFlags numaralandırması.

  • pfRestartRequired
    Type: System.Int32

    [out] IDE yeniden alınan verilere dayalı ortam yeniden tamamlamak için gerekliyse için ortam belirten bayrak döndürdü. Tarafından döndürülen değer, pfRestartRequired olan true, ortamın yeniden başlatılması gerekir.

Dönüş Değeri

Type: System.Int32

Yöntem başarılı olursa, döndürür S_OK. Başarısız olursa, bir hata kodu döndürür.

Açıklamalar

Tek bir VSPackage birden fazla özel ayarları noktası (ayarları kategori) destekler. Bu nedenle, uygulamaları ImportSettings geçirilen GUID kategori denetleyin ve belirli özel ayarları noktası tarafından belirtilen duruma geri yüklemek için doğru mekanizması seçin gerekir.

XML dosyalarında ayarları bilgileri yer alır. Bu el ile düzenlenebilir XML dosyaları diskte bozulma düşüklüğü olabilir, sürüme özgü ayarları içerebilir ve kötü amaçlı saldırı bir araç olarak kullanılabilir. Bu nedenle, girdi doğrulama önemlidir ayarlarını yapılandırma verileri alınırken bir parçası olarak.

Varsa geçersiz bulunursa, uygulaması ImportSettings IDE otomatik olarak kullanıcı kullanabilirsiniz ReportError yöntemi.

Visual Studio IDE kendisini yeniden başlatmak için kullanıcıların ister Visual Studio bir VSPackage uygularken ImportSettings belirten Visual Studio ortam ayarları verilerinin alınması döndürerek yeniden başlatılması gerekiyor pfRestartRequired değerini true. Bir kullanıcı iletişim kutusu veya bir kapatma uygulamak için gerekli olmadığı Visual Studio.

Örnekler

Bu örnekte, uygulanması ImportSettings veriyi yapılandırmanıza bağlı olarak iki farklı yöntemler arasında seçer pszCategoryGUID bağımsız değişkeni.

Örnekte, işlenmesi __UserSettingsFlags tabanlı bayraklar da gösterilir.

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

Ayrıca bkz.

ExportSettings
IVsUserSettingsQuery
IVsUserSettings Arabirimi
Microsoft.VisualStudio.Shell.Interop Ad alanı
Kullanıcı ayarları için destek
Nasıl yapılır: birlikte çalışma derlemeleri kullanarak ayarlarını Dışarı Aktar
Nasıl yapılır: birlikte çalışma derlemelerini ayarları içeri aktarmak için kullanın

Başa dön