VS2012实验蜂巢的11.0Exp_Config位置

时间:2013-05-16 15:38:55

标签: visual-studio-2012 vs-extensibility

我今天已将我的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,flag)来检索配置注册表根目录?

1 个答案:

答案 0 :(得分:3)

感谢上述Hans的评论,我能够使用ILocalRegistry4.GetLocalRegistryRootEx解决问题,并传入__VsLocalRegistryType.RegType_Configuration枚举。

//删除之前的代码

编辑:经过进一步调查,似乎有一种更好的方式 - 一个已经执行此操作的类,接受__VsLocalRegistryType作为参数:VSRegistry,也方便地返回RegistryKey

public RegistryKey ConfigRoot
{
    get { return VSRegistry.RegistryRoot(__VsLocalRegistryType.RegType_Configuration); }
}