2

我已经创建了非常简单的 Visual Studio 插件,也就是 JP Booodhoo 的这篇文章。

http://codebetter.com/jpboodhoo/2007/09/04/macro-to-aid-bdd-test-naming-style/

插件在调试中工作,所以如果我在插件解决方案中按 F5,然后打开一个解决方案,插件就会显示在工具中。但是,它在不调试时不显示。即在我部署了插件之后,关闭并重新打开我的解决方案。

我错过了什么吗?

部署方面,我按照本文的部署步骤,部署到C:\Users[你的用户名]\Documents\Visual Studio 2012\Addins

Visual Studio 2012 中宏的替代方法

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if(commandName == "KinghamExtensions.Connect.KinghamExtensions")
                {


                    var selection = (TextSelection)(_applicationObject.ActiveDocument.Selection);
                    selection.SelectLine();
                    if (selection.Text == "") return;

                    var prefix = "public void ";
                    var index = selection.Text.IndexOf(prefix);
                    prefix = selection.Text.Substring(0, index) + prefix;
                    var description = selection.Text.Replace(prefix, String.Empty);

                    selection.Text = prefix + description.Replace(" ", "_").Replace("'", "_");
                    selection.LineDown();
                    selection.EndOfLine();
                    handled = true;
                }
            }
        }

正如我所说,代码在调试中从 vs 运行插件时有效,但未显示在工具菜单中。

此外,它不会像 Git Extensions 插件那样显示在键盘选项中,这意味着我无法分配键绑定。

有什么想法吗?

4

1 回答 1

0

您提供的信息很难回答,但首先您应该检查以下内容:

您的插件应出现在Tools>Add-in Managger...

如果您在它之前设置了第一个复选框,则应该加载它。

如果不是,并且您收到错误消息,请单击否,否则 Studio 将重命名已部署的 .AddIn 文件。您应该检查您的发布程序集是否位于 Assembly 元素引用的位置,如下所示:<Assembly>C:\Users[your user name]\Documents\Visual Studio 2012\Projects\MyAddin1\MyAddin1\bin\MyAddin1.dll</Assembly>
.AddInVisual Studio 部署到您在问题中提到的 AddIn 文件夹的文件中。

如果是这样,并且错误仍然存​​在,您应该将一些日志添加到您的加载项(Windows MessageBox 可以)并将其放置到 OnConnection 方法中。该错误可能出现OnConnection在 IDE 尝试加载它时引发异常,或者FullClassNameAddIn 文件中的元素引用了 Connection 类以外的其他名称。

如果您没有收到错误并且您的 OnConnection 运行正常,那么它可能是在您的代码添加命令时引发的异常, - 如果您执行的方式与在 try/catch 块中生成的加载项模板中的方式相同 -你需要解决它。

于 2013-12-23T21:03:02.963 回答