visual-studio - template - visual studio code typescript snippets
Awesome Visual Studio Macros (14)
Actualmente estoy trabajando en dos proyectos diferentes con diferentes estándares de codificación, uno que usa pestañas para los comienzos de línea y otro que usa espacios. Esta macro alternará entre qué estándar se utiliza en función de qué entorno está actualmente activo:
Public Sub ToggleTabs()
If DTE.ActiveDocument.Language = "CSharp" Then
Dim currentSetting As Boolean = DTE.Properties("TextEditor", "CSharp").Item("InsertTabs").Value
DTE.Properties("TextEditor", "CSharp").Item("InsertTabs").Value = Not currentSetting
End If
If DTE.ActiveDocument.Language = "SQL" Then
Dim currentSQLSetting As Boolean = DTE.Properties("TextEditor", "SQL").Item("InsertTabs").Value
DTE.Properties("TextEditor", "SQL").Item("InsertTabs").Value = Not currentSQLSetting
End If
If DTE.ActiveDocument.Language = "HTML" Then
Dim currentHTMLSetting As Boolean = DTE.Properties("TextEditor", "HTML").Item("InsertTabs").Value
DTE.Properties("TextEditor", "HTML").Item("InsertTabs").Value = Not currentHTMLSetting
End If
If DTE.ActiveDocument.Language = "JScript" Then
Dim currentJScriptSetting As Boolean = DTE.Properties("TextEditor", "JScript").Item("InsertTabs").Value
DTE.Properties("TextEditor", "JScript").Item("InsertTabs").Value = Not currentJScriptSetting
End If
End Sub
Para una pequeña discusión en la comunidad, ¿cuáles son algunas de las macros esenciales de Visual Studio que utiliza?
Acabo de empezar a aprender sobre ellos, y quiero escuchar lo que algunos de ustedes no pueden vivir sin ellos.
Agregué botones en la barra de herramientas para las siguientes 3 macros. Cada uno tomará el texto seleccionado actualmente en cualquier archivo y lo buscará en google (o MSDN-it, o corrector ortográfico). Inventa un icono ingenioso para la barra de herramientas para obtener puntos de estilo adicionales.
Private Const BROWSER_PATH As String = "C:/Program Files/Mozilla Firefox/firefox.exe"
Sub SearchGoogle()
Dim cmd As String
cmd = String.Format("{0} http://www.google.com/search?hl-en&q={1}", BROWSER_PATH, DTE.ActiveDocument.Selection.Text)
Shell(cmd, AppWinStyle.NormalFocus)
End Sub
Sub SearchMSDN()
Dim cmd As String
cmd = String.Format("{0} http://www.google.com/search?hl-en&q={1}+site%3Amsdn.microsoft.com", BROWSER_PATH, DTE.ActiveDocument.Selection.Text)
Shell(cmd, AppWinStyle.NormalFocus)
End Sub
Sub SpellCheck()
Dim cmd As String
cmd = String.Format("{0} http://www.spellcheck.net/cgi-bin/spell.exe?action=CHECKWORD&string={1}", BROWSER_PATH, DTE.ActiveDocument.Selection.Text)
Shell(cmd, AppWinStyle.NormalFocus)
End Sub
Asigné ctrl-shift-G a una macro que genera un GUID en formato de registro, esto es útil para editar IDL
Insertar GUID, excelente para el trabajo de WiX, agregar al menú como botón o como atajo de teclado.
Sub InsertGuid()
Dim objTextSelection As TextSelection
objTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
objTextSelection.Text = System.Guid.NewGuid.ToString.ToUpper(New System.Globalization.CultureInfo("en", False))
End Sub
Organizar usos para todos los archivos .cs en una solución - Autor original: djpark .
Sub OrganizeSolution()
Dim sol As Solution = DTE.Solution
For i As Integer = 1 To sol.Projects.Count
OrganizeProject(sol.Projects.Item(i))
Next
End Sub
Private Sub OrganizeProject(ByVal proj As Project)
For i As Integer = 1 To proj.ProjectItems.Count
OrganizeProjectItem(proj.ProjectItems.Item(i))
Next
End Sub
Private Sub OrganizeProjectItem(ByVal projectItem As ProjectItem)
Dim fileIsOpen As Boolean = False
If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then
''If this is a c# file
If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then
''Set flag to true if file is already open
fileIsOpen = projectItem.IsOpen
Dim window As Window = projectItem.Open(Constants.vsViewKindCode)
window.Activate()
projectItem.Document.DTE.ExecuteCommand("Edit.RemoveAndSort")
''Only close the file if it was not already open
If Not fileIsOpen Then
window.Close(vsSaveChanges.vsSaveChangesYes)
End If
End If
End If
''Be sure to apply RemoveAndSort on all of the ProjectItems.
If Not projectItem.ProjectItems Is Nothing Then
For i As Integer = 1 To projectItem.ProjectItems.Count
OrganizeProjectItem(projectItem.ProjectItems.Item(i))
Next
End If
''Apply RemoveAndSort on a SubProject if it exists.
If Not projectItem.SubProject Is Nothing Then
OrganizeProject(projectItem.SubProject)
End If
End Sub
No es una macro en sí misma, pero es útil:
Public Sub WriteToOutputWindow(ByVal pane as String, ByVal Msg As String)
Dim owPane As OutputWindowPane
Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
Dim ow As OutputWindow = win.Object
Try
owPane = ow.OutputWindowPanes.Item(pane)
Catch
owPane = ow.OutputWindowPanes.Add(pane)
End Try
If Not owPane Is Nothing Then
owPane.Activate()
owPane.OutputString(Msg & vbCrLf)
End If
End Sub
No podía dejar pasar esta pregunta sin mencionar esta . Incluso tiene un video para mostrar cómo instalarlo y usarlo. Esta macro simplemente le permite crear los archivos anidados en el explorador de soluciones (como resources.resx).
Editar: se actualizó el enlace
Solía emplear muchas macros en VS 2002/2003. Un ejemplo sería la creación de una región: siempre me gusta que mis clases se dividan en las siguientes regiones: "Miembros privados", "Propiedades públicas", "Métodos públicos" y "Métodos privados". Por lo tanto, tengo una macro asignada a una tecla de método abreviado que crea estas regiones en cualquier archivo de clase nuevo.
Refactorizar el soporte en VS 2005/2008 (y la facilidad de agregar fragmentos de código comunes), así como el uso de complementos como DXCore y SlickEdit me permiten trabajar sin tener que crear demasiadas macros.
Trabajo con monitores duales, y considero que la macro de cambio de diseño de Sharon (desde un monitor a un diseño de 2 monitores) es totalmente invaluable. Cuando necesite hacer referencia a una página web u otro programa mientras escribe un poco de código, presione Ctrl-Alt-1 para cambiar a un diseño de monitor para sus ventanas de Visual Studio. Una vez que haya terminado, presione Ctrl-Alt-2 para cambiar a su diseño de dos monitores y recuperar todas sus ventanas. ¡Increíble!
http://www.invisible-city.com/sharon/2008/06/workstation-hack-visual-studio-on-2.html
Uso los siguientes accesos directos menos conocidos muy a menudo:
- Ctrl + Enter : inserta una línea en blanco sobre la línea actual (y coloca el cursor allí)
- Ctrl + Shift + Enter : inserta una línea en blanco debajo de la línea actual (y coloca el cursor allí)
- Ctrl + Shift + V : recorre el anillo del portapapeles
Yo uso las macros FormatToHtml de Jeff si voy a pegar un ejemplo de código en una publicación de blog o un correo electrónico.
Contraiga todos los nodos del panel Solución, muy útil especialmente para grandes proyectos:
Public Module CollapseAllNodes
Sub RunCollapseAllNodes()
Dim UIHSolutionExplorer As UIHierarchy
UIHSolutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
'' Check if there is any open solution
If (UIHSolutionExplorer.UIHierarchyItems.Count = 0) Then
Return
End If
'' Get the top node (the name of the solution)
Dim UIHSolutionRootNode As UIHierarchyItem
UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)
CloseRecursif(UIHSolutionRootNode)
'' Select the solution node, or else when you click
'' on the solution windows scrollbar, it will synchronize the open document
'' with the tree and pop out the corresponding node which is probably not
'' what you want.
UIHSolutionRootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
End Sub
Function CloseRecursif(ByRef element)
For Each UIHChild In element.UIHierarchyItems()
CloseRecursif(UIHChild)
If (UIHChild.UIHierarchyItems.Expanded = True) Then
UIHChild.UIHierarchyItems.Expanded = False
End If
Next
End Function
End Module
Delinear: contraer las definiciones pero expandir las regiones
¿Estás trabajando en una de esas tiendas que insiste en regiones alrededor de todo , de modo que cuando colapsas a las definiciones, no puedes ver ningún código?
Lo que realmente necesita es una macro colapso-a-definiciones-pero-ampliar-regiones, como esta:
Sub CollapseToDefinitionsButExpandAllRegions()
DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
DTE.SuppressUI = True
Dim objSelection As TextSelection = DTE.ActiveDocument.Selection
objSelection.StartOfDocument()
Do While objSelection.FindText("#region",
vsFindOptions.vsFindOptionsMatchInHiddenText)
Loop
objSelection.StartOfDocument()
DTE.SuppressUI = False
End Sub
Coloque esto en un módulo de macros normal, asígnelo a una tecla de acceso rápido y su código está de vuelta.
(Excepto ... si trabajas con personas realmente nefastas que ponen regiones dentro de los métodos, desafortunadamente expandirán esos métodos. Si alguien sabe cómo escribir esto para evitar eso, siéntete libre de editarlo).
Mostrar la duración de la compilación en la ventana de resultados
Coloque este código en su módulo EnvironmentEvents. Esto escribirá la duración directamente en la ventana de compilación para cualquier acción en una solución (construir, reconstruir, limpiar, implementar).
Puede cambiar la función IsBuild para especificar las acciones para las que desea ver esta información.
Dim buildStart As Date
Private Function IsBuild(ByVal scope As EnvDTE.vsBuildScope, ByVal action As EnvDTE.vsBuildAction) As Boolean
Return scope = vsBuildScope.vsBuildScopeSolution
End Function
Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
If (IsBuild(Scope, Action)) Then
buildStart = Date.Now
End If
End Sub
Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
If (IsBuild(Scope, Action)) Then
Dim buildTime = Date.Now - buildStart
WriteToBuildWindow(String.Format("Build time: {0}", buildTime.ToString))
End If
End Sub
Private Sub WriteToBuildWindow(ByVal message As String)
Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
Dim ow As OutputWindow = CType(win.Object, OutputWindow)
For Each owPane As OutputWindowPane In ow.OutputWindowPanes
If (owPane.Name.Equals("Build")) Then
owPane.OutputString(message)
Exit For
End If
Next
End Sub
Muestre la página de inicio después de cerrar una solución (pero mantenga abierto Visual Studio)
Coloque este código en su módulo EnvironmentEvents:
Private Sub SolutionEvents_AfterClosing() Handles SolutionEvents.AfterClosing
DTE.ExecuteCommand("View.StartPage")
End Sub
Ocultar la página de inicio después de abrir una solución
Coloque este código en su módulo EnvironmentEvents:
Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
Dim startPageGuid As String = "{387CB18D-6153-4156-9257-9AC3F9207BBE}"
Dim startPage As EnvDTE.Window = DTE.Windows.Item(startPageGuid)
If startPage IsNot Nothing Then startPage.Close()
End Sub
Estos dos factores juntos harán que su página de inicio se oculte cuando abra una solución. Cuando cierra la solución, la Página de inicio vuelve.