Как изменить цвет фона панелей инструментов и меню в Visual Studio в зависимости от пути (ветви) загруженного решения? - PullRequest
5 голосов
/ 20 июля 2011

У меня часто бывает открыто более одной копии Visual Studio для просмотра различных ветвей нашего программного обеспечения.Имя ветви сопоставляется с папкой в ​​файловой системе, в которой находится файл решения.

Я хочу быть в состоянии быстро сообщить ветке, в которой я нахожусь, таким образом, который трудно избежать!

Ответы [ 2 ]

5 голосов
/ 20 июля 2011

Я не думаю, что в Visual Studio можно условно изменить цвета меню / панели инструментов на основе загруженного в данный момент решения.Отличный Редактор цветовых тем Visual Studio действительно дает вам возможность изменить цветовую схему всей среды, но он не поддерживает тот тип детального контроля, который вы ищете.Все экземпляры Visual Studio будут иметь одинаковую цветовую схему, примененную к ним.

Единственное, что я знаю о том, что может делать то, что вы хотите, это расширение Microsoft Power Tools от Microsoft.Среди десятков функций (большинство из которых вы можете отключить, если они вам не нравятся или они конфликтуют с другими расширениями, которые вы уже установили), он также поддерживает обширную настройку вкладок (то, что они называют «Tab Well UI»).").

В частности, он позволяет " цветным вкладкам в соответствии с их проектом или регулярными выражениями ":

Этот параметр позволяет вкладкам бытьокрашены в соответствии с проектом, которому они принадлежат.Это особенно полезно при сортировке вкладок по проектам, поскольку позволяет сразу идентифицировать различные группы проектных документов.Вы также можете настроить регулярные выражения и назначить цвет каждому.Если имя вкладки соответствует настроенному регулярному выражению, оно будет окрашено в назначенный цвет.

Вот пример скриншота некоторых случайных вкладок, открытых, отсортированных и раскрашенных по проекту:

Я лично не пытался настроить это для работы с несколькими одновременными экземплярами Visual Studio, но я использую его уже несколько недель (хотя и с подсветкой в ​​стиле регулярных выражений), а не по проекту), и это кажется достаточно стабильным и настраиваемым.Мне нравится иметь возможность различать различные типы открытых файлов с первого взгляда.

1 голос
/ 20 июля 2011

Если вы интенсивно работаете с ветками, одна из самых неприятных ошибок, которую вы можете сделать, - это изменить неправильную ветку. У меня есть проект, составленный из нескольких решений, каждое из которых содержит различные проекты пользовательского интерфейса, каждый из которых использует WCF в качестве внутреннего компонента, но выпущен как отдельное программное обеспечение. Всякий раз, когда мы выпускаем новую версию одного из интерфейсов, мы создаем ветку, чтобы мы могли поддерживать исправления, SP и т. Д.

Простым решением является создание макроса Visual Studio (http://www.helixoft.com/blog/archives/32), который использует Regex для анализа полного пути к файлу решения в поисках определенной структуры папок, идентифицирующей ветвь. Вот полный код:

Declare Auto Function SetWindowText Lib "user32" (ByVal hWnd As System.IntPtr, _
                                                  ByVal lpstring As String) As Boolean


Private Sub showTitle(ByVal title As String)
    SetWindowText(New System.IntPtr(DTE.MainWindow.HWnd), title & " - " & DTE.Name)
End Sub


Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
    Dim m As Match = Regex.Match( _
        DTE.Solution.FullName, _
        "Branch.*\\(?<project>.*)\\(?<branch>.*)\\(?<sln>.*)\.sln", _
        RegexOptions.IgnoreCase)
    If (m.Success) Then
        Dim project As String = m.Groups("project").Value
        Dim version As String = m.Groups("branch").Value
        Dim sln As String = m.Groups("sln").Value
        showTitle(String.Format("BRANCH [{0}] - Project {1} - {2}", _
                                version, project, sln))

    End If
End Sub

Вам нужно вставить этот код в редактор макросов, который открывается из меню Инструменты -> Макросы -> Макросы IDE

В открывшемся редакторе вы просто дважды щелкаете мышью по MyMacros, расширяете EnvironmentEvents и можете добавлять свой код в каждый обработчик, поддерживаемый в Visual Studio.

Если вы посмотрите на код, я просто поместил регулярное выражение, которое позволяет мне анализировать типичную структуру пути ветви, которую я имею в моих проектах, где у меня есть Branch \ someothertext \ nameoftheproject \ branchnumber \ solutionfile.sln.

НТН Приветствия, Тарун

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...