멋진 비주얼 스튜디오 매크로 [폐쇄
-
22-08-2019 - |
문제
소규모 커뮤니티 토론을 위해 사용하는 필수 비주얼 스튜디오 매크로는 무엇입니까?
방금 그들에 대해 배우기 시작했고, 당신 중 일부가없이 살 수없는 것을 듣고 싶습니다.
해결책
나는 2002/2003 대 VS에서 많은 매크로를 사용했었다. 한 가지 예는 지역 제작입니다. 저는 항상 내 수업이 "개인 회원", "공공 재산", "공공 방법"및 "개인 방법"으로 나누는 것을 좋아합니다. 따라서 새 클래스 파일에 이러한 영역을 생성하는 바로 가기 키에 매크로 맵핑되었습니다.
vs 2005/2008 (및 일반적인 코드 스 니펫 추가 시설)과 Dxcore 및 Slickedit와 같은 Addins의 사용을 통해 더 이상 너무 많은 매크로를 만들지 않고도 일할 수 있습니다.
다른 팁
다음 3 매크로의 도구 모음에 버튼을 추가합니다. 각각은 모든 파일 및 Google IT (또는 MSDN-IT 또는 Spell-Check-IT)에서 현재 선택된 텍스트를 취합니다. 추가 스타일 포인트 용 도구 모음의 멋진 아이콘을 구성하십시오.
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
출력 창에 빌드 기간을 표시하십시오
이 코드를 EnvironmentEvents 모듈에 넣으십시오. 이렇게하면 솔루션 (빌드, 재건, 청정, 배포)에 대한 모든 작업에 대한 기간을 빌드 창에 직접 작성합니다.
isbuild 함수를 변경 하여이 정보를보고 싶은 작업을 지정할 수 있습니다.
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
솔루션을 닫은 후 시작 페이지 표시 (그러나 Visual Studio를 열어 두십시오)
이 코드를 EnvironmentEvents 모듈에 넣으십시오.
Private Sub SolutionEvents_AfterClosing() Handles SolutionEvents.AfterClosing
DTE.ExecuteCommand("View.StartPage")
End Sub
솔루션을 열면 시작 페이지를 숨 깁니다
이 코드를 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
이 두 가지가 함께 솔루션을 열 때 시작 페이지가 숨어 있습니다. 솔루션을 닫으면 시작 페이지가 다시 나타납니다.
나는 다음과 같은 덜 알려진 단축키를 매우 자주 사용합니다.
- ctrl+입력: 현재 선 위에 빈 줄을 삽입하고 커서를 거기에 놓습니다)
- Ctrl+Shift+Enter: 현재 선 아래에 빈 줄을 삽입하고 커서를 거기에 놓습니다)
- Ctrl+Shift+v: 순환 클립 보드 링
개요 : 정의로 붕괴되지만 지역을 확장합니다
당신은 주변 지역을 주장하는 상점 중 하나에서 일하고 있습니까? 모든 것, 정의로 붕괴되면 코드가 표시되지 않습니까?
당신이 정말로 필요로하는 것은 이와 같이 붕괴-expand-legions 매크로입니다.
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
이것을 일반 매크로 모듈에 넣고 핫 키에 할당하면 코드가 돌아옵니다.
(제외 ... 당신이 지역을 두는 정말 사악한 사람들과 함께 일한다면 내부에 방법, 이것은 불행히도 이러한 방법을 확장합니다. 누구든지 피하기 위해 이것을 쓰는 방법을 알고 있다면 편집하십시오.)
Wix 작업에 적합한 Guid를 삽입하고 메뉴에 버튼 또는 키 단축키로 추가하십시오.
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
솔루션에서 모든 .CS 파일에 대한 성공을 구성하십시오. 오리지널 저자 : 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
모든 노드를 붕괴시킵니다 솔루션 패널의 대형 프로젝트에 매우 유용합니다.
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
나는 Jeff 's를 사용합니다 formattohtml 매크로 코드 예제를 블로그 게시물이나 이메일에 붙일 것입니다.
나는 듀얼 모니터와 함께 일하며 Sharon의 레이아웃 전환 매크로 (1 모니터에서 2 모니터 레이아웃까지)는 완전히 귀중합니다. 약간의 코드를 입력하는 동안 웹 페이지 또는 기타 프로그램을 참조 해야하는 경우 CTRL-ALT-1은 Visual Studio Windows의 하나의 모니터 레이아웃으로 전환해야합니다. 완료되면 Ctrl-Alt-2를 사용하여 두 모니터 레이아웃으로 전환하고 모든 Windows를 다시 가져옵니다. 대박!
http://www.invisible-city.com/sharon/2008/06/workstation-hack-visual-studio-2.html
그 자체로 매크로는 아니지만 유용합니다.
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
Ctrl-Shift-G를 레지스트리 형식으로 GUID를 생성하는 매크로에 매핑했습니다. 이것은 IDL을 편집하는 데 유용합니다.
현재 다른 코딩 표준을 가진 두 개의 다른 프로젝트 (하나는 라인 시작에 탭을 사용하고 다른 하나는 공백을 사용하는 두 가지 프로젝트를 진행하고 있습니다. 이 매크로는 현재 활성화중인 환경을 기반으로 사용되는 표준간에 전환합니다.
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
나는이 질문을 언급하지 않고 놓을 수 없었다 이 하나. 설치 및 사용 방법을 보여주는 비디오도 있습니다. 이 매크로를 사용하면 솔루션 탐색기 (Resources.resx)에서 중첩 파일을 만들 수 있습니다.
편집 : 링크를 업데이트했습니다