Visual Studio扩展ToolWindowControl:用户配置存储位置技术问询
嘿,我来帮你理清开发VS扩展ToolWindowControl时的配置存储问题,这俩问题其实是紧密关联的,咱们一个个拆解:
用户设置应保存至何处?
分两种场景来选合适的存储位置:
- 用户级偏好设置:比如工具窗口的位置、UI显示偏好这类和用户个人习惯绑定的设置,应该存在VS的用户级配置存储里。这个存储由VS的
SettingsManagerAPI管理,对应路径大概是%APPDATA%\Microsoft\VisualStudio\<你的VS版本号>\下的配置文件,不用你手动找路径,直接用API读写就行。 - 项目/代码关联配置:如果是和特定项目、代码绑定的设置(比如针对当前项目的工具窗口分析规则、自定义参数),推荐存在项目目录内:
- 可以用自定义的JSON/XML配置文件(比如
YourToolName.config),方便随项目提交到版本控制; - 也可以利用MSBuild的属性或项,把配置嵌入项目文件里。
- 可以用自定义的JSON/XML配置文件(比如
创建ToolWindowControl时,是否存在存储用户配置(以及可能的特定代码配置)的标准化位置?
当然有,VS扩展开发官方提供了标准化的方案,完全不用自己瞎折腾:
- 用户配置的标准化方案:
官方首推SettingsManagerAPI,这是VS统一的设置管理入口。你可以通过以下步骤使用:- 从扩展的
ServiceProvider获取SettingsManager实例; - 调用
GetWritableSettingsStore(SettingsScope.UserSettings)拿到可读写的用户设置存储; - 用
SetString、GetInt32等方法读写配置。
这种方式的优势是能和VS的“选项”面板集成,用户可以在统一的界面里管理你的扩展设置。
- 从扩展的
- 项目/代码配置的标准化位置:
- 项目级配置:优先放在项目根目录的自定义配置文件,或者通过MSBuild属性嵌入
.csproj/.vbproj,这样配置能随项目同步; - 解决方案级临时配置:如果是只针对本地解决方案的临时设置,可以存在VS自动生成的
.vs目录下,这个目录默认被版本控制忽略,适合存储本地个性化的解决方案配置。
- 项目级配置:优先放在项目根目录的自定义配置文件,或者通过MSBuild属性嵌入
另外提个小技巧:ToolWindow的布局状态(比如是否固定、窗口大小位置),VS会自动帮你持久化到用户配置里,只要你的ToolWindow实现了IVsPersistSolutionOpts或者利用了VS的窗口持久化机制,不用自己额外写代码处理。
内容的提问来源于stack exchange,提问作者user1529413
相关产品推荐
相关产品推荐

