4

我創建的Visual Studio 2008的加載項,讓我用一個熱鍵配色方案之間進行切換。定製性能的改變Visual Studio的顏色附加

我得到了它的成功加載一個配色方案,應用它,但它是非常緩慢的。

下面是應用方案的代碼:

// 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重新加載它的設置。

回答

3

嗯,我找到了一個很好的解決方案。我可以簡單地調用Visual Studio中的實際導入/導出設置功能,如:

application.ExecuteCommand(
    "Tools.ImportandExportSettings", 
    string.Format("/import:\"{0}\"", file)); 

哪裏file是一個vssettings文件的完整路徑。這在約1秒內運行。

這將需要一些變化的方式我的外接作品,但它實際上是簡單的這種方式。