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.
pSettings
Type: Microsoft.VisualStudio.Shell.Interop.IVsSettingsReader[in] Bir IVsSettingsWriter için okuma erişimi sağlama VSPackage ortamı tarafından sağlanan arabirim Visual Studio ayarları dosyası.
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