1

我今天已经将我的 VS 扩展从 VS2010 迁移到 2012,当通过实验性配置单元调试扩展时,它似乎正在为 _Config 目录创建一个新的注册表项,每次都有新的编号,例如:

HKCI\Software\Microsoft\VisualStudio\11.0Exp_Config_12944

我假设后者是新 devenv.exe 实例的进程 ID,但事实并非如此。

我有一些自定义代码需要从这个配置目录中读取一个值,我__VSSPROPID.VSSPROPID_VirtualRegistryRoot用来获取注册表根:

object property;
 _vsShell.GetProperty((int)__VSSPROPID.VSSPROPID_VirtualRegistryRoot, out property);
return property.ToString();

我只是将“_Config”附加到属性值,但现在似乎不再是这种情况了。

有没有办法阻止 VS2012 实验性配置单元附加该数字,只使用 11.0Exp_Config,或者有没有办法(API,标志)来检索配置注册表根?

4

1 回答 1

3

感谢 Hans 上面的评论,我能够ILocalRegistry4.GetLocalRegistryRootEx通过传入__VsLocalRegistryType.RegType_Configuration枚举来解决问题。

// 之前的代码被删除

编辑:经过进一步调查,似乎有一个更好的方法 - 一个已经这样做的类,接受 __VsLocalRegistryType作为参数:VSRegistry,也方便地返回RegistryKey

public RegistryKey ConfigRoot
{
    get { return VSRegistry.RegistryRoot(__VsLocalRegistryType.RegType_Configuration); }
}
于 2013-05-19T10:50:48.077 回答