October 26, 2010 Leave a comment
Ever wondered how to automate tasks in Visual Studio such as auto fill forms, paste into multiple locations or even print all open documents? Well with the use of VS Marcros it will be possible and the possibilities are endless only restricted by your imagination. VS Macros is a very powerful tool within Visual Studio and most probaly most developers don’t use this or whats worse they might have bought a third party solution to automate some tasks in Visual Studio.
Having said that this article is to show you how to develop a simple macro to get you started. This macro that I will run through is how to make a shortcut for commenting within Visual Studio Text Editor, that comment will include the current time the comment was made and username who commented it, which is useful specially if you are working with other developers as well.
So lets get started.
1. Open the Macro Explorer
First you have to go to macro explorer and check whether the macro you want to make is already available as there are some built in macros that come with Visual Studio. You can do that by going to Tools -> Macros -> Macro Explorer. On the Macro Explorer view you can see that there is a Sample Project, browse through that and check whether the solution you want to develop is avaibale if not proceed to step 2
2. Create a New Macro Project
If the one you need is not on the Sample Macros then start developing your own. You can create your own project, use the MyMacros that is already in there or even the Samples, its all up to you. For this sample we use “MyMacros”.
3. Create a New Module
Now right click on the “MyMacros” project and choose “New module”
and give it a useful name. For this sample I will use “MyCustomModule”.
4. Create a New Macro
Now right click on that new module you just created and select “New macro”, you will now be presented with the Marco Editor. Now you have a new Sub which is “Macro1″, rename it to what you want, in this sample I will use “BetterComments”.
5. Start Developing
The one we want to achieve here is to create a better comment, use the code below as a sample.
If you notice there is a function there called LineOrientedCommentStart, this was just copied in the sample macros and it adds that comment character in front of the text comment, it also checks for the document extension to place the proper comment charaters, you can extend this to use other file types as well.
Importsss System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module MyCustomModule Sub BetterComments() Dim textSelection As EnvDTE.TextSelection textSelection = DTE.ActiveWindow.Selection textSelection.NewLine() textSelection.Insert(LineOrientedCommentStart()) textSelection.Insert(" ---------------------------------------------------") textSelection.NewLine() textSelection.Insert(LineOrientedCommentStart()) textSelection.Insert(" " + Date.Now + " - " + System.Environment.UserDomainName + "\" + System.Environment.UserName()) textSelection.NewLine() textSelection.Insert(LineOrientedCommentStart()) textSelection.Insert(" ") textSelection.NewLine() textSelection.Insert(LineOrientedCommentStart()) textSelection.Insert(" ---------------------------------------------------") End Sub Function LineOrientedCommentStart(Optional ByVal document As Document = Nothing) As String Dim extension As String If (document Is Nothing) Then document = DTE.ActiveDocument End If extension = document.Name If (extension.EndsWith(".cs") Or extension.EndsWith(".cpp") Or extension.EndsWith(".h") Or extension.EndsWith(".idl") Or extension.EndsWith(".jsl")) Then Return "//" ElseIf (extension.EndsWith(".vb")) Then Return "'" Else Throw New Exception("Unrecognized file type. You can add this file type by modifying the function Utilities.LineOrientedCommentStart to include the extension of this file.") End If End Function End Module
6. Assign a Keyboard Shortcut
Now youre done in developing you macro, save it and assign a keyboard shortcut. Go to Tools -> Options and the dialog below will show. Type the name of your macro in the “Show commands containing” text box to view you newly developed macro and assign shortcut keys using “Text Editor” only (you dont want to activate that macro in Class Diagram or UML Designer). In this sample we use Alt + Insert.
7. Use your Macro
Now on text editor press Alt + Insert and you should see your new comment now.