创建可视工作室包以添加模板(vspackague visual studio sdk)

时间:2015-02-21 00:14:09

标签: c# visual-studio visual-studio-2013 vspackage visual-studio-sdk

我正在尝试创建一个visual studio包,特别是我想在项目上下文菜单中创建一个新的菜单选项。就像这个:

http://www.diaryofaninja.com/blog/2014/02/18/who-said-building-visual-studio-extensions-was-hard

我已经有菜单选项显示:

Custom menu option

但现在我想配置回调以基于模板(自定义视觉工作室模板)创建文件,就像我们点击添加>类 但是,不要使用类模板,而是使用我在自定义列表中创建的模板。避免在列表中搜索模板的时间。

在我遵循的示例中,创建了“添加新服务”#39; buttom,在第一个例子中展示了如何创建一个弹出窗口:

IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
Guid clsid = Guid.Empty;
int result;

Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
                   0,
                   ref clsid,
                   "NewService",
                   string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.ToString()),
                   string.Empty,
                   0,
                   OLEMSGBUTTON.OLEMSGBUTTON_OK,
                   OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                   OLEMSGICON.OLEMSGICON_INFO,
                   0,        // false
                   out result));

我想应该有更多服务可以使用这个VSPackages,但我在参考文献中找不到类似的方法:https://msdn.microsoft.com/en-us/library/bb166217.aspx

您能告诉我从哪里可以找到执行此操作的方法。或者如何归档我的目标。

更新

我正在尝试这个:

var dte = (DTE)GetService(typeof(DTE));
dte.ItemOperations.NewFile(@"General\Text File", "file.txt","7651A701-06E5-11D1-8EBD-00A0C90F26EA");

但我得到了这个例外:

  

类型' System.Runtime.InteropServices.COMException'的例外情况发生在NewService.dll但未在用户代码中处理

     

附加信息:来自HRESULT的无效类字符串异常:0x800401F3(CO_E_CLASSSTRING)

1 个答案:

答案 0 :(得分:1)

解决!

我使用了以下代码:

 private void MenuItemCallback(object sender, EventArgs e)
 {       
        var dte = (DTE)GetService(typeof(DTE)) as EnvDTE80.DTE2;

        var template = @"C:\Users\JuanAntonio\Documents\Visual Studio 2013\Templates\ItemTemplates\MyTemplate.vstemplate";

        dte.Solution.Projects.Item(1).ProjectItems.AddFromTemplate(template, "Template.cs");     
 }