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 支持若干导入方法:

有关导入设置的更多信息,请参见 如何:使用互操作程序集导入设置如何:使用托管包结构的导入设置

示例

在下面的示例中,是 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 命名空间

ImportSettings

IVsSettingsWriter

其他资源

保留的设置

如何:使用互操作程序集导入设置

如何:使用托管包结构的导入设置

Working with Settings