我正在为 Visual Studio 2008 创建一个加载项,它允许我使用热键在配色方案之间切换。
我让它成功加载配色方案并应用它,但它很慢。
这是应用方案的代码:
// The Theme class is a holder for a color scheme
private static void LoadTheme(Theme theme, DTE2 application)
{
var items = GetItems(application);
foreach (var item in items)
{
if (!theme.Properties.ContainsKey(item.Name)) continue;
var prop = theme.Properties[item.Name];
item.Background = prop.Background;
item.Foreground = prop.Foreground;
item.Bold = prop.Bold;
}
}
private static IEnumerable<ColorableItems> GetItems(DTE2 application)
{
var fontsAndColorsItems = (FontsAndColorsItems) application
.get_Properties("FontsAndColors", "TextEditor")
.Item("FontsAndColorsItems")
.Object;
return fontsAndColorsItems.Cast<ColorableItems>();
}
基本上,GetItems 从 Visual Studio 的选项中获取 ColorableItems 的列表。在其中一项上设置属性会立即将更改应用到 VS。由于配色方案可以包含超过一百个属性,这会导致 300 多次更新操作并且需要很长时间(在我的笔记本电脑上需要 10 多秒)。
我想以某种方式告诉 VS,我不希望它在我更新属性时刷新,当我完成时告诉它更新,但我找不到这样做的方法。
理想情况下,整个过程需要 1 或 2 秒,类似于使用 VS 向导运行导入/导出设置。
我也对替代方法持开放态度。我有一个简单地覆盖注册表设置的想法,但是我需要一种强制 VS 重新加载它的设置的方法。