用于创建新解决方案的VSPackage命令

时间:2015-04-05 22:52:32

标签: c# visual-studio-2013 vspackage

如何在VSPackage中创建一个命令,用于创建一个包含1 .cs文件的新项目(C#类库)的新解决方案?

1 个答案:

答案 0 :(得分:1)

这不是很直白,但有MSDN的有趣指南解释了如何做到这一点。它适用于加载项,但在VSPackage中,您可以使用相同的Visual Studio DTE对象集(DTE应用程序)。

您可以定义一个使用GetProjectTemplate和AddFromTemplate创建两个控制台项目的方法。您可以在VSPackage类的方法Initialize中定义一个OLE菜单命令(如果这是您要查找的内容):

 protected override void Initialize()
 {
     //// Create the command for the menu item.
     var aCommand = new CommandID(GuidList.GuidCmdSet, (int)PkgCmdIdList.CmdId);
     var menuItemEnable = new OleMenuCommand((s, e) => createProjectsFromTemplates(), aCommand);
 }

然后定义一个与命令相关的方法(本例中为createProjectsFromTemplates),该方法用项目创建解决方案:

    private DTE2 _mApplicationObject;

    public DTE2 ApplicationObject
    {
        get
        {
            if (_mApplicationObject != null) return _mApplicationObject;
            // Get an instance of the currently running Visual Studio IDE
            var dte = (DTE)GetService(typeof(DTE));
            _mApplicationObject = dte as DTE2;
            return _mApplicationObject;
        }
    }

public void createProjectsFromTemplates()
{
    try
    {
        // Create a solution with two projects in it, based on project 
        // templates.
        Solution2 soln = (Solution2)ApplicationObject.Solution;
        string csTemplatePath;

        string csPrjPath = "C:\\UserFiles\\user1\\addins\\MyCSProject"; 
        // Get the project template path for a C# console project.
        // Console Application is the template name that appears in 
        // the right pane. "CSharp" is the Language(vstemplate) as seen 
        // in the registry.
        csTemplatePath = soln.GetProjectTemplate(@"Windows\ClassLibrary\ClassLibrary.vstemplate", 
          "CSharp");
        System.Windows.Forms.MessageBox.Show("C# template path: " + 
          csTemplatePath);
            // Create a new C# console project using the template obtained 
        // above.
        soln.AddFromTemplate(csTemplatePath, csPrjPath, "New CSharp 
          Console Project", false);

    }
    catch (System.Exception ex)
    {
        System.Windows.Forms.MessageBox.Show("ERROR: " + ex.Message);
    }
}

对于10.0之后的Visual Studio版本,zip for template项目不再可用。必须引用.vstemplate,并且可以在文件夹下找到所有项目模板:

C:\Program Files (x86)\Microsoft Visual Studio 1x.0\Common7\IDE\ProjectTemplates\

有关此MSDN link的更多信息。

该方法应该使用基于c#项目模板的一个C#项目创建一个解决方案(例如,包含class1.cs作为初始文件)。

如果您愿意,也可以定义自己的模板,并根据该自定义模板创建解决方案。以下是MSDN有关如何创建自定义模板的指南。

希望它有所帮助。