Insert a new GUID to Visual Studio 2012

Is it possible to create a code snippet or something similar to automate the process of generating and inserting GUIDs in to the text editor in Visual Studio 2012? I frequently need to generate new GUIDs (WiX installer for example, as well as our own internal framework).

I used to use a macro to perform this job, creating a new GUID and then inserting it in to the current ActiveDocument. I would the bind the macro to Shift-Ctrl G so I could rapidly insert a new ID without having to launch the Create Guid tool and copy from there.

Macro functionality has now been removed from Visual Studio 2012 so I need an alternative method, I would assume that it is possible to do with an Extension but I am unfamiliar with developing extensions and that approach would seem a little heavy handed!

Any suggestions would be appreciated, failing that then a pointer at any information on what sort of extension would be required to interact with the text window and insert text would be appreciated. I could then make an extension and post it on the Visual Studio Gallery.

Thanks, Anthony

Edit to add - whatever solution is proposed would need to be "triggerable" from a keyboard shortcut. As I stated above, I tied the macro to Ctrl Shift G because it was easy to remember and press while writing code.

Answers


You could write a Visual Studio 2012 extension to accomplish this! If you've never written an Add-in before, this is a simple one to get you started!

Here are the steps to create this type of add-in:

  1. Create a New Project in Visual Studio 2012
  2. Choose Templates -> Other Project Types -> Extensibility -> Visual Studio Add-in
  3. Name your project, click OK.
  4. Follow the Add-in wizard steps. When prompted, check the box for: "Yes, create a 'Tools' menu item." Optionally, I also check "My Add-in will never put up modal UI..."
  5. Finish the wizard and implement the follow code in Exec(...)

    public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
    {
        handled = false;
        if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
        {
            if (commandName == this.GetType().Namespace + ".Connect." + this.GetType().Namespace)
            {
                if (_applicationObject.ActiveDocument != null)
                {
                    TextSelection objSel = (EnvDTE.TextSelection)(_applicationObject.ActiveDocument.Selection);
    
                    objSel.Insert(Guid.NewGuid().ToString());
                }
    
                handled = true;
                return;
            }
        }
    }
    
  6. Build the project, and deploy AddInName.dll, AddInName.AddIn, and AddInName.xml to c:\users\username\documents\Visual Studio 2012\Addins. [If the Addins folder doesn't exist, create it]

  7. In Visual Studio 2012, under Tools -> Addin Manager, Check the box on the left next to AddInName.
  8. Restart Visual Studio 2012
  9. You should now see the AddInName listed under Tools. [probably with a Smiley face!]
  10. When you click on this, it should insert a new GUID at your cursor's location.
  11. Map this to a hotkey by navigating to Tools -> Options -> Environment -> Keyboard, search for AddInName, and bind a hotkey to it.

Voila! Hotkey GUID generation and a little bit of Visual Studio Add-in know how. :)


ReSharper allows you to insert a new guid by typing "nguid" and pressing tab.

Obviously this is a tad on the expensive side just for the ability to generate a Guid however ReSharper has many other useful features that might be worth considering.


Need Your Help

How can I get a list reserved instances (reserved in advance) from a AWS account using API

amazon-ec2 amazon-web-services

I am trying to build a report where I list all the instances that a particular account has that have been reserved in advance with one time upfront fee.

registered a NHibernate proxy factory fot IDataErrorInfo behavoir with lazy properties

validation nhibernate castle-dynamicproxy

I have implemented IDataErrorInfo interface using Castle.DynamicProxy IIterceptor. I have also implemented a NHibernate interceptor which instantiates my entities using this interceptor.

How can I proportionally scale images to max-width?

html css

In a UIWebView, I am using the CSS max-width property to scale images of unknown size to fill a space no larger than (but perhaps smaller than) 300 pixels wide. Some of the original images are larg...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.