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

若要创建项目,请先调用 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 文件名)。 有关更多信息,请参见创建项目模板和项模板

提示

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

创建项目

以编程方式创建项目

  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++ 项目

其他资源

控制解决方案及其项目