Как изменить текст строки заголовка Visual Studio



мы работаем на нескольких различных ветвях одного и того же кода, и при работе на двух ветвях сразу, это может привести к путанице и потере времени.



В настоящее время в строке заголовка VS есть текст <solution-name> - Visual Studio.



можно ли мне написать расширение, которое сделает этот текст <solution-name>: <branch-name> - <Visual Studio>?

665   11  

11 ответов:

Я только что создал небольшое расширение Visual Studio, которое может помочь: http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Это небольшое расширение будет обнаруживать когда два экземпляра Visual Студия работает и меняет заголовок окна Visual Studio to включают в себя имя родительской папки решение. Поэтому он будет меняться Папка Решений-Microsoft Visual Studio в Solutions Folderparent\Solutions Folder-Microsoft Visual Studio.

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

официальная страница здесь: http://erwinmayer.com/labs/visual-studio-2010-extension-rename-visual-studio-window-title/

Проверьте последнюю версию VSCommands 2010 Lite. Он представил функцию под названием Friendly Solution Name, где вы можете настроить шаблон регулярных выражений для извлечения имени ветви из структуры папок и поместить его в заголовок главного окна Visual Studio. Подробнее:http://vscommands.com/releasenotes/3.6.8.0 и http://vscommands.com/releasenotes/3.6.9.0

страница загрузки MSDN

попытка установить MainWindow.Заголовок создает исключение. Вы должны использовать функцию Win32 SetWindowText для изменения заголовка, но будьте осторожны: Visual Studio сбрасывает текст строки заголовка при падении шляпы, поэтому вы должны реализовать таймер, чтобы сохранить настройку нужного текста. Следующий код Connect класс надстройки будет постоянно (или, пока надстройка работает) сохранять текст заголовка как "Hello World!"

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    resetTitleTimer = new Timer(new TimerCallback(SetMainWindowTitle), "Hello world!", 0, 10);
}

[DllImport("user32.dll")]
private static extern bool SetWindowText(IntPtr hWnd, string lpString);
private void SetMainWindowTitle(object state)
{
    IntPtr hWnd = (IntPtr)_applicationObject.MainWindow.HWnd;
    SetWindowText(hWnd, "Hello World!");            
}

Я добавил символическую ссылку с другим именем, предназначенным для файла решения. Откройте решение с символической ссылкой, и заголовок окна имеет имя символической ссылки.

в windows: Маклин Блавранч.закон СЛН.sln

изменить: Найдено, что жесткая ссылка разрывается, если цель .файл sln обновляется нашей системой управления версиями. Символическая ссылка не имеет такой же проблемы.

просто еще одно расширение, чтобы изменить заголовок Visual Studio, определив его как выражение: http://visualstudiogallery.msdn.microsoft.com/2e8ebfe4-023f-4c4d-9b7a-d05bbc5cb239

установка, которая использует "выражение заголовка" делает этот плагин довольно гибким.

честно говоря, я не уверен, что правильно понимаю ваш вопрос, но я задал его здесь, так что, похоже, речь идет о подобной проблеме:

работа с разными версиями / ветвями одного и того же решения Visual Studio 2005

возможно, более простым решением было бы использовать виртуальные рабочие столы? Пространственное расположение легче запомнить, вы можете сгруппировать любые связанные окна с соответствующим VS, и переключение будет проще.

существует свойство по имени AppName для любой среды IDE на основе visual studio, которое должно сделать трюк.

от http://www.helixoft.com/blog/archives/32 задает заголовок для текущего имени файла. Он также работает на Visual Studio 10

  Private timer As System.Threading.Timer
Private ideTitle As String = Nothing
Declare Auto Function SetWindowText Lib "user32" (ByVal hWnd As System.IntPtr, _
ByVal lpstring As String) As Boolean

'''<summary>Called when any window in VS gets activated.</summary>
'''<param name="GotFocus">Window that got focus.</param>
'''<param name="LostFocus">Window that lost focus.</param>
Private Sub WindowEvents_WindowActivated(ByVal GotFocus As EnvDTE.Window, ByVal LostFocus As EnvDTE.Window) Handles WindowEvents.WindowActivated
    Try
        If timer Is Nothing Then
            ' Create timer which refreshes the caption because
            ' IDE resets the caption very often
            Dim autoEvent As New System.Threading.AutoResetEvent(False)
            Dim timerDelegate As System.Threading.TimerCallback = _
                AddressOf tick
            timer = New System.Threading.Timer(timerDelegate, autoEvent, 0, 200)
        End If

        If GotFocus.Document Is Nothing Then
            ideTitle = Nothing
        Else
            ideTitle = GotFocus.Document.FullName
            showTitle(ideTitle)
        End If
    Catch ex As System.Exception
    End Try
End Sub

''' <summary>Dispose the timer on IDE shutdown.</summary>
Public Sub DTEEvents_OnBeginShutdown() Handles DTEEvents.OnBeginShutdown
    If Not timer Is Nothing Then
        timer.Dispose()
    End If
End Sub

'''<summary>Called by timer.</summary>
Public Sub tick(ByVal state As Object)
    Try
        If Not ideTitle Is Nothing Then
            showTitle(ideTitle)
        End If
    Catch ex As System.Exception
    End Try
End Sub

'''<summary>Shows the title in main window.</summary>
Private Sub showTitle(ByVal title As String)
    SetWindowText(New System.IntPtr(DTE.MainWindow.HWnd), title & " - " & DTE.Name)
End Sub

в 2012 году, вы должны установить System.Windows.Application.Current.MainWindow.Title для того, чтобы это работало. Это обновит как заголовок панели задач, так и заголовок главного окна.

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

надеюсь, что это помогает.

в модели VS automation есть

_DTE.MainWindow.Capation

С чего вы могли бы начать.

см.http://msdn.microsoft.com/en-us/library/envdte._dte.mainwindow.aspx

Comments

    Ничего не найдено.