Jak zmienić tekst paska tytułowego programu Visual Studio

Pracujemy na kilku różnych gałęziach tego samego kodu, a gdy pracujemy na dwóch gałęziach jednocześnie, może to być mylące i marnować czas.

Obecnie pasek tytułu VS ma tekst <solution-name> - Visual Studio.

Czy jest możliwe napisanie rozszerzenia, które sprawi, że tekst <solution-name>: <branch-name> - <Visual Studio>?

Author: RichieHindle, 2009-02-23

11 answers

Właśnie stworzyłem małe rozszerzenie Visual Studio, które może pomóc: http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

To małe rozszerzenie wykryje ilekroć dwa przypadki wizualnego Studio działa i zmienia tytuł okna Visual Studio do Dołącz nazwę folderu nadrzędnego rozwiązanie. Zmieni się więc SolutionFolder-Microsoft Visual Studio do SolutionFolderParent\SolutionFolder - Microsoft Visual Studio .

Jest to szczególnie przydatne, gdy rozgałęzienie rozwiązania: staje się możliwość łatwego zidentyfikowania, które branch, nad którym pracujesz, w przypadku gdzie oba mieliby to samo Nazwa rozwiązania.

Oficjalna strona tutaj: http://erwinmayer.com/labs/visual-studio-2010-extension-rename-visual-studio-window-title/

 55
Author: Erwin Mayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 18:58:20

Zobacz najnowszą wersję VSCommands 2010 Lite . Wprowadzono funkcję o nazwie Friendly Solution Name, w której można skonfigurować wzorzec regex, aby wyodrębnić nazwę gałęzi ze struktury folderów i umieścić ją w tytule głównego okna programu Visual Studio. Więcej szczegółów: http://vscommands.com/releasenotes/3.6.8.0 i http://vscommands.com/releasenotes/3.6.9.0

Strona pobierania MSDN

 18
Author: Registered User,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-30 17:27:20

Próbuję ustawić MainWindow.Podpis rzuca wyjątek. Musisz użyć funkcji Win32 SetWindowText, aby zmienić tytuł, ale uważaj: Visual Studio resetuje tekst paska tytułu w kropli kapelusza, więc powinieneś wdrożyć Timer, aby ustawić żądany tekst. Poniższy kod z klasy Connect dodatku na stałe (lub, dopóki dodatek jest uruchomiony) zachowa tekst paska tytułowego jako " 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!");            
}
 3
Author: ProfK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-26 08:58:12

Dodałem dowiązanie symboliczne o innej nazwie kierujące plik rozwiązania. Otwórz rozwiązanie za pomocą dowiązania symbolicznego, a tytuł okna ma nazwę dowiązania symbolicznego.

W windows: mklink BlawBranch.SLN Blaw.sln

Edytuj: Okazało się, że twardy link pęknie, jeśli cel .plik sln jest aktualizowany przez naszą kontrolę źródłową. Dowiązanie symboliczne nie ma tego samego problemu.

 1
Author: conical,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-06 05:07:13

Kolejne rozszerzenie do zmiany paska tytułu programu Visual Studio poprzez zdefiniowanie go jako wyrażenia: http://visualstudiogallery.msdn.microsoft.com/2e8ebfe4-023f-4c4d-9b7a-d05bbc5cb239

Konfiguracja, która korzysta z "wyrażenia tytułu" sprawia, że ta wtyczka jest dość elastyczna.

 1
Author: pasztorpisti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-18 00:01:45

Szczerze mówiąc, nie jestem pewien, czy dobrze rozumiem twoje pytanie, ale zadałem jedno tutaj, więc wydaje się, że dotyczy to podobnego problemu:

Praca z różnymi wersjami / gałęziami tego samego rozwiązania Visual Studio 2005

 0
Author: js.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:55

Może prostszym rozwiązaniem byłoby użycie wirtualnych pulpitów? Układ przestrzenny jest łatwiejszy do zapamiętania, można grupować dowolne powiązane okna z odpowiednim VS, A przełączanie byłoby prostsze.

 0
Author: Eevee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-27 16:49:06

Istnieje właściwość o nazwie AppName dla każdego IDE opartego na visual studio, która powinna załatwić sprawę.

 0
Author: Soundararajan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-23 11:01:42

Z http://www.helixoft.com/blog/archives/32 ustawia tytuł na bieżącą nazwę pliku. Działa również na 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
 0
Author: Carlo V. Dango,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-14 21:43:32

W 2012 roku, musisz ustawić System.Windows.Application.Current.MainWindow.Title aby to zadziałało. Spowoduje to aktualizację zarówno tytułu paska zadań, jak i tytułu okna głównego.

Jest to możliwe tylko z głównego wątku, a ponieważ tytuł będzie aktualizowany w różnych punktach przez Visual Studio, musisz podłączyć się do niektórych wydarzeń i zresetować go do tego, co chcesz, aby to było (w moim dodatku używam niektórych EnvDTE.SolutionEvents między innymi).

Mam nadzieję, że to pomoże.
 0
Author: kata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-04 12:54:49

W modelu vs automation jest

_DTE.MainWindow.Capation
Od czego możesz zacząć.

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

 -1
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-23 11:43:26