IVsSettingsReader 接口
提供了 Visual Studio 设置文件中存储的配置信息的读取权限。
命名空间: Microsoft.VisualStudio.Shell.Interop
程序集: Microsoft.VisualStudio.Shell.Interop.8.0(在 Microsoft.VisualStudio.Shell.Interop.8.0.dll 中)
语法
声明
<GuidAttribute("38C38501-1428-4ABB-8B27-2F0E1E6DD757")> _
<InterfaceTypeAttribute()> _
Public Interface IVsSettingsReader
[GuidAttribute("38C38501-1428-4ABB-8B27-2F0E1E6DD757")]
[InterfaceTypeAttribute()]
public interface IVsSettingsReader
IVsSettingsReader 类型公开以下成员。
方法
名称 | 说明 | |
---|---|---|
ReadCategoryVersion | ||
ReadFileVersion | ||
ReadSettingAttribute | 基础结构。 | |
ReadSettingBoolean | 返回在 Visual Studio 设置文件中存储的 boolean 对象的值。 | |
ReadSettingBytes | 返回在 Visual Studio 设置文件中存储的数组的值。 | |
ReadSettingLong | 返回在 Visual Studio 设置文件中存储的较长的对象的值。 | |
ReadSettingString | 返回在 Visual Studio 设置文件中存储的字符串对象的值。 | |
ReadSettingXml | ||
ReadSettingXmlAsString | ||
ReportError |
页首
备注
此接口由环境实现。
调用方的说明
,在检索 VSPackage 中存储的配置信息从 Visual Studio 设置文件时,请调用 IVsSettingsReader 接口。
实现者说明
仅 Vspackage 注册的它们为结构利用 IVsSettingsReader 接口的 Visual Studio 设置的支持。有关注册支持 Visual Studio 设置结构的 VSPackage 的更多信息,请参见 保留的设置。
当设置导入操作从 导入/导出设置 函数中选择可用在 IDE 的 工具 菜单时,该环境。 IVsSettingsReader 接口访问 VSPackage 中设置导入方法,使用接口写入配置数据。Visual Studio SDK 支持若干导入方法:
对于基于的互操作程序集 Vspackage,导入方法是 IVsUserSettings 接口的 ImportSettings 方法的 VSPackage 的实现。
对于基于的大多数管理的包结构 Vspackage,导入方法是 IProfileManager 接口的 LoadSettingsFromXml 方法的 VSPackage 的实现。
对于基于的托管包结构实现 DialogPage 接口的 Vspackage,导入方法是该接口的 LoadSettingsFromXml 方法。
有关导入设置的更多信息,请参见 如何:使用互操作程序集导入设置 或 如何:使用托管包结构的导入设置。
示例
在下面的示例中,是 ImportSettings的实现,编写三个设置值。此方法使用某些检索的值确定如何检索其他值:检索 lTrashLength 的值取决于输入缓冲区pTrashBytes 范围中检索之前。
说明 |
---|
最佳做法,在存储缓冲区或字符串时保存存储的缓冲区的大小或字符串以及对象。此范围信息,当检索字符串保存的缓冲区避免缓冲区溢出时,应始终使用。 |
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;
};
请参见
参考
Microsoft.VisualStudio.Shell.Interop 命名空间