如何根据加载的解决方案的路径(分支)更改Visual Studio中工具栏和菜单的背景颜色?

时间:2011-07-20 10:30:33

标签: visual-studio-2010

我经常有一个以上的Visual Studio副本,查看我们软件的不同分支。分支名称映射到包含解决方案文件的文件系统中的文件夹。

我希望能够以一种难以避免的方式快速告诉我所在的分支机构!

2 个答案:

答案 0 :(得分:5)

我认为不可能根据当前加载的解决方案有条件地更改Visual Studio中的菜单/工具栏颜色。漂亮的Visual Studio Color Theme Editor确实为您提供了一种改变整个环境颜色方案的方法,但它不支持您正在寻找的那种细粒度控制。 Visual Studio的所有实例都将应用相同的颜色方案。

我唯一知道的可能是你想做的就是微软的Productivity Power Tools扩展。在众多功能中(如果您不喜欢它们,或者它们与您已安装的其他扩展程序冲突,大多数功能都可以关闭),它还支持广泛的选项卡自定义(它们称为“Tab Well UI” “)。

具体来说,它允许您“根据他们的项目或根据正则表达式对选项卡进行着色”

  

此选项允许根据所属项目对选项卡进行着色。这在按项目排序选项卡时特别有用,因为它允许您立即识别不同的项目文档组。   您还可以配置正则表达式并为每个表达式指定颜色。如果选项卡的名称与配置的正则表达式匹配,则它将使用指定的颜色着色。

以下是按项目打开,排序和着色的一些随机标签的示例屏幕截图:

我没有亲自尝试将其配置为与Visual Studio的多个同时实例一起使用,但我已经使用它几周了(虽然使用正则表达式样式突出显示,而不是按项目),并且它似乎相当稳定和可配置。我希望能够一目了然地区分各种类型的打开文件。

答案 1 :(得分:1)

如果您大量使用分支机构,那么您可以做的最令人沮丧的错误之一就是修改错误的分支。我有一个由几个解决方案组成的项目,每个解决方案包含不同的UI项目,每个项目使用WCF作为后端,但作为单独的软件发布。每当我们发布一个UI的新版本时,我们就会创建一个分支,所以我们可以支持修补程序,SP等。

一个简单的解决方案是创建一个Visual Studio宏(http://www.helixoft.com/blog/archives/32),它使用正则表达式来解析解决方案文件的完整路径,搜索标识分支的特定文件夹结构。这是完整的代码:

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

您需要将此代码粘贴到“工具”中打开的“宏”编辑器中。宏 - &gt;宏IDE

在打开的编辑器中,只需双击MyMacros,展开EnvironmentEvents,就可以将代码添加到Visual Studio支持的每个处理程序中。

如果你查看代码,我只需要一个正则表达式,允许我解析我在项目中的典型分支路径结构,其中我有Branch \ someothertext \ nameoftheproject \ branchnumber \ solutionfile.sln。

HTH 干杯,塔伦