24

是否可以创建代码片段或类似的东西来自动化生成 GUID 并将其插入到 Visual Studio 2012 中的文本编辑器的过程?我经常需要生成新的 GUID(例如 WiX 安装程序,以及我们自己的内部框架)。

我曾经使用宏来执行这项工作,创建一个新的 GUID,然后将其插入到当前的 ActiveDocument 中。我会将宏绑定到 Shift-Ctrl G,这样我就可以快速插入一个新 ID,而无需启动 Create Guid 工具并从那里复制。

宏功能现在已从 Visual Studio 2012 中删除,因此我需要一种替代方法,我认为可以使用扩展,但我不熟悉开发扩展,而且这种方法似乎有点笨拙!

任何建议都将不胜感激,否则将不胜感激任何关于需要什么样的扩展来与文本窗口交互和插入文本的信息的指针。然后我可以进行扩展并将其发布到 Visual Studio Gallery 上。

谢谢,安东尼

编辑以添加 - 提出的任何解决方案都需要从键盘快捷键“触发”。如上所述,我将宏绑定到 Ctrl Shift G,因为它在编写代码时很容易记住和按下。

4

4 回答 4

52

ReSharper允许您通过键入“nguid”并按 Tab 来插入新的 guid。

显然,这对于生成 Guid 的能力来说有点昂贵,但是 ReSharper 有许多其他有用的功能可能值得考虑。

于 2012-09-10T13:28:42.697 回答
39

您可以编写一个 Visual Studio 2012 扩展来完成此任务!
如果您以前从未编写过插件,这是一个简单的入门指南!

以下是创建此类加载项的步骤:

  1. 在 Visual Studio 2012 中创建新项目
  2. 选择模板->其他项目类型->可扩展性-> Visual Studio 插件
  3. 命名您的项目,单击确定。
  4. 按照加载项向导步骤操作。出现提示时,选中以下框:“是的,创建一个‘工具’菜单项。” (可选)我还选中“我的加载项永远不会显示模态 UI...”
  5. 完成向导并在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. 构建项目,并将AddInName.dllAddInName.AddInAddInName.xml部署到c:\users\username\documents\Visual Studio 2012\Addins。[如果 Addins 文件夹不存在,则创建它]

  7. 在 Visual Studio 2012 中,在Tools -> Addin Manager下,选中左侧AddInName旁边的框。
  8. 重新启动 Visual Studio 2012
  9. 您现在应该看到在工具下列出的AddInName。[可能是笑脸!]
  10. 当您单击它时,它应该在您的光标位置插入一个新的 GUID。
  11. 通过导航到Tools -> Options -> Environment -> Keyboard将其映射到热键,搜索AddInName并将热键绑定到它。

瞧!热键 GUID 生成和一点点 Visual Studio 插件知道如何。:)

于 2012-09-21T19:18:19.130 回答
0

我的SCLAssist扩展程序具有此功能。您可以将“粘贴 GUID”绑定到键映射。SCLAssist 是免费的。

于 2014-03-18T22:09:30.803 回答
0

看起来他们把它带回来了——在 VS 2015 中(我使用的是社区版本)有一个工具>创建 GUID选项。

于 2016-06-23T11:20:24.597 回答