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

更新:2007 年 11 月

若要以编程方式创建项目项,首先调用 GetProjectItemTemplate,然后将返回的模板路径传递给 AddFromTemplate。有关更多信息,请参见 Visual Studio 模板

GetProjectItemTemplate 方法返回适当的 .zip 文件中的模板,以与 AddFromTemplate 方法一起使用。在 <驱动器>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\语言 中可以找到针对所有语言的项目项模板。

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

自定义模板要求唯一的文件名,该文件名与 <驱动器>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\语言 中定义的文件名不冲突。

请确保使用长文件名(相对于 8.3 文件名)。有关更多信息,请参见创建项目模板和项模板

若要从解决方案中移除项目,请使用 Remove

下面的示例介绍创建项目项的泛型方法。列在“另请参见”节中的主题介绍如何使用语言特定的模型。

ms228774.alert_note(zh-cn,VS.90).gif说明:

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

将项添加到项目中

以编程方式将项添加到项目中

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

  2. 将下面的代码添加到外接程序的 Connect 类中。

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

    若要执行此操作,请在“工具”菜单上单击“外接程序管理器”,然后选中外接程序旁边的框以激活该外接程序。

示例

下面的示例演示如何以编程方式将项添加到现有 Visual Basic 项目中。

' Before running the following code, be sure that a Visual Basic 
' project is open in Visual Studio.
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)
    createProjectItem(_applicationObject)
End Sub

Sub createProjectItem(ByVal dte As DTE2)
    ' Adds a new Class to an existing Visual Basic project.
    Dim soln As Solution2
    Dim prj As Project
    soln = CType(_applicationObject.Solution, Solution2)
    Dim prjItem As ProjectItem
    Dim itemPath As String

    ' Point to the first project (the Visual Basic project).
    prj = soln.Projects.Item(1)
    ' Retrieve the path to the Class template.
    itemPath = soln.GetProjectItemTemplate("Class.zip", "vbproj")
    ' Create a new project item based on the template, in this case,
    ' a Class.
    prjItem = prj.ProjectItems.AddFromTemplate(itemPath, "MyNewClass")
End Sub
// Before running the following code, be sure that a Visual Basic 
// project is open in Visual Studio.
public void OnConnection(object application,
 Extensibility.ext_ConnectMode connectMode, object addInInst, ref
 System.Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;

    // Pass the applicationObject member variable to the code example.
    createProjectItem(_applicationObject);
}
public void createProjectItem(DTE2 dte)
{
    //Adds a new Class to an existing Visual Basic project.
    Solution2 soln;
    Project prj;
    soln = (Solution2)_applicationObject.Solution;
    ProjectItem prjItem;
    String itemPath;
    // Point to the first project (the Visual Basic project).
    prj = soln.Projects.Item(1);
    // Retrieve the path to the class template.
    itemPath = soln.GetProjectItemTemplate("Class.zip", "vbproj");
    //Create a new project item based on the template, in this
    // case, a Class.
    prjItem = prj.ProjectItems.AddFromTemplate(itemPath, "MyNewClass");
}

编译代码

若要编译此代码,请创建一个新的 Visual Studio 外接程序项目,并用该示例中的代码替换 Connect.cs 或 Connect.vb 类的代码。在运行外接程序前,请打开 Visual Studio IDE 中的一个 Visual Basic 项目。有关如何运行外接程序的信息,请参见 如何:使用外接程序管理器控制外接程序

可靠编程

当使用项目项名称作为 Solution.Projects.Item 的参数时,您必须使用项目的唯一名称。唯一名称是包含解决方案 (.sln) 文件的目录中相对于项目文件的路径名。

例如,请考虑下面的解决方案/项目结构:

SomeSolution.sln

WinApp1

WinApp1.VBProj

项目的唯一名称将为“WinApp1/WinApp1.VBProj”,并且对 Item 方法的调用将是 Solution.Projects.Item("WinApp1/WinApp1.VBProj")。

请参见

任务

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

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

概念

操作 Visual Basic 和 Visual C# 项目

操作 Visual C++ 项目

Visual Studio 模板介绍

其他资源

控制解决方案及其项目