Я создаю надстройку для 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 получает список ColorableItems из параметров Visual Studio.Установка свойства для одного из этих элементов немедленно применяет изменение к VS.Так как цветовая схема может содержать более ста свойств, это приводит к 300+ операциям обновления, и это занимает очень много времени (10+ секунд на моем ноутбуке).
Я хотел бы как-то сказать VS, что яне хочу, чтобы он обновлялся, пока я обновляю свойства, и когда я закончу, скажите, чтобы он обновлялся, но я не могу найти способ сделать это.
В идеале весь процесс занял бы 1или 2 секунды, аналогично запуску параметров импорта / экспорта с помощью мастера VS.
Я также открыт для альтернативных подходов.У меня была идея просто перезаписать настройки реестра, но затем мне нужен способ заставить VS перезагрузить его настройки.