创建一个 visual studio 包以添加模板 (vspackague visual studio sdk)

Creating a visual studio package to add templates (vspackague visual studio sdk)

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

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

我已经得到菜单选项显示:

但现在我想配置回调以基于模板(自定义 visual studio 模板)创建文件,就像我们单击“添加”> Class 时一样 但是不要使用 class 模板,而是使用我在自定义列表中创建的模板。省去了在列表中搜索模板的时间。

在我创建 'Add new service' 按钮的示例中,第一个示例展示了如何使用以下内容创建弹出窗口:

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");

但是我遇到了这个异常:

An exception of type 'System.Runtime.InteropServices.COMException' occurred in NewService.dll but was not handled in user code

Additional information: Invalid class string Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING)

已解决!

我使用了以下代码:

 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");     
 }