Как изменить текст строки заголовка Visual Studio
мы работаем на нескольких различных ветвях одного и того же кода, и при работе на двух ветвях сразу, это может привести к путанице и потере времени.
В настоящее время в строке заголовка VS есть текст <solution-name> - Visual Studio.
можно ли мне написать расширение, которое сделает этот текст <solution-name>: <branch-name> - <Visual Studio>?
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
попытка установить 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