如何:用编程方式创建项目

若要创建项目,请先调用 GetProjectTemplate,然后将返回的模板路径传递给 AddFromTemplate

项目模板的文件扩展名为 .vstemplate,并存储在 .zip 文件中。 若要获取 .vstemplate 文件(在 .zip 文件中)的路径,请使用 GetProjectTemplate,然后将该路径传递给 AddFromTemplate 来创建项目(如果尚未打开解决方案,则还要创建一个解决方案)。 您可以根据需要多次执行此操作,每个项目都会添加到当前打开的解决方案中。

Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\语言\ 中提供了针对所有语言的项目模板。

您还可以创建自己的自定义项目模板。 若要指定将在其中存储您的模板的目录,请单击**“工具”菜单中的“选项”。 在“选项”对话框的左侧窗格中,单击“项目和解决方案”。 在“Visual Studio 用户项目模板位置”**框中键入模板的路径。

自定义项目模板要求唯一的文件名,并且该文件名不会与 Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\语言\ 中定义的文件名发生冲突。

请确保使用长文件名(而非 8.3 文件名)。 有关更多信息,请参见Creating Project and Item Templates

备注

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。这些过程是在“常规开发设置”处于活动状态时开发的。若要更改设置,请在“工具”菜单上单击“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

创建项目

以编程方式创建项目

  1. 启动 Visual Studio 并创建一个 Visual Studio 外接程序项目。

  2. 向外接程序的 Connect 类中添加本主题后面显示的代码示例。

  3. 运行该外接程序项目,并在**“外接程序管理器”**中激活它。

    为此,请在**“工具”菜单上单击“外接程序管理器”**,然后选择该外接程序。

示例

下面的示例使用 GetProjectTemplateAddFromTemplate 在一个解决方案中创建两个控制台项目:一个是 Visual Basic 项目,另一个是 Visual C# 项目。

Public Sub OnConnection(ByVal application As Object, ByVal _
  connectMode As ext_ConnectMode, ByVal addInInst As Object, _
  ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    createProjectsFromTemplates(_applicationObject)
End Sub

Sub createProjectsFromTemplates(ByVal dte As DTE2)
    Try
        ' Create a solution with two projects in it, based on project 
        ' templates.
        Dim soln As Solution2 = CType(DTE.Solution, _
        Solution2)
        Dim csTemplatePath As String
        Dim vbTemplatePath As String
        Dim csPrjPath As String = _
        "C:\UserFiles\user1\addins\MyCSProject"
        Dim vbPrjPath As String = _
        "C:\UserFiles\user1\addins\MyVBProject"

        ' 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 _
        ("ConsoleApplication.zip", "CSharp")
        MsgBox("C# template path: " & csTemplatePath)
        ' Get the project template path for a Visual Basic
        ' console project.
        ' "vbproj: is the DefaultProjectExtension as seen in the 
        ' registry.
        vbTemplatePath = soln.GetProjectTemplate _
        ("ConsoleApplication.zip", "vbproj")
        MsgBox("Visual Basic template path: " & vbTemplatePath)
        ' Create a new C# console project using the template obtained 
        ' above.
        soln.AddFromTemplate(csTemplatePath, csPrjPath, _
          "New CSharp Console Project", False)
        ' Create a new Visual Basic console project using the template
        ' obtained above.
        soln.AddFromTemplate(vbTemplatePath, vbPrjPath, _
          "New Visual Basic Console Project", False)
    Catch ex As System.Exception
        MsgBox("ERROR: " & ex.ToString)
    End Try
End Sub
public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    createProjectsFromTemplates(_applicationObject);
}

public void createProjectsFromTemplates(DTE2 dte)
{
    try
    {
        // Create a solution with two projects in it, based on project 
        // templates.
        Solution2 soln = (Solution2)dte.Solution;
        string csTemplatePath;
        string vbTemplatePath;
        string csPrjPath = "C:\\UserFiles\\user1\\addins\\MyCSProject";
        string vbPrjPath = "C:\\UserFiles\\user1\\addins\\MyVBProject";
        // 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("ConsoleApplication.zip", 
          "CSharp");
        System.Windows.Forms.MessageBox.Show("C# template path: " + 
          csTemplatePath);
        // Get the project template path for a Visual Basic console
        // project.
        // "vbproj: is the DefaultProjectExtension as seen in the 
        // registry.
        vbTemplatePath = soln.GetProjectTemplate("ConsoleApplication.zip", 
          "vbproj");
        System.Windows.Forms.MessageBox.Show("Visual Basic template path: " + 
          vbTemplatePath);
        // Create a new C# console project using the template obtained 
        // above.
        soln.AddFromTemplate(csTemplatePath, csPrjPath, "New CSharp 
          Console Project", false);
        // Create a new Visual Basic console project using the template 
        // obtained above.
        soln.AddFromTemplate(vbTemplatePath, vbPrjPath, "New VB Console 
          Project", false);
    }
    catch (System.Exception ex)
    {
        System.Windows.Forms.MessageBox.Show("ERROR: " + ex.Message);
    }
}

请参见

任务

如何:编译和运行自动化对象模型代码示例

如何:以编程方式创建项目项

概念

操作 Visual Basic 和 Visual C# 项目

操作 Visual C++ 项目

其他资源

控制解决方案及其项目