如何:用编程方式创建项目
更新:2007 年 11 月
若要创建项目,首先调用 GetProjectTemplate,然后将返回的模板路径传递给 AddFromTemplate。
扩展名为 .vstemplate 的项目模板存储在 .zip 文件中。若要获取 .vstemplate 文件的路径(在 .zip 文件内部),请使用 GetProjectTemplate,稍后将该路径传递给 AddFromTemplate 来创建项目(如果尚未打开解决方案,还要创建一个解决方案)。您可以根据需要多次执行此操作,将各个项目添加到当前打开的解决方案中。
<驱动器>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\语言 中提供了针对所有语言的项目模板。
您还可以创建自己的自定义项目模板。若要指定将在其中存储您的模板的目录,请单击“工具”菜单中的“选项”。在“选项”对话框的左侧窗格中,单击“项目和解决方案”。在“Visual Studio 用户项目模板位置”框中键入模板的路径。或者,您可以接受默认位置。
自定义项目模板要求唯一的文件名,此文件名与 <驱动器>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\语言 中定义的文件名不能发生冲突。
请确保使用长文件名(相对于 8.3 文件名)。有关更多信息,请参见创建项目模板和项模板。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。这些过程是使用“常规开发设置”开发的。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 |
创建新项目
以编程方式创建项目
启动 Visual Studio 并创建一个新的 Visual Studio 外接程序项目。
将下面的代码添加到外接程序的 Connect 类中。
运行外接程序项目,并在“外接程序管理器”中激活它。
若要执行此操作,请在“工具”菜单上单击“外接程序管理器”,然后选中外接程序旁边的框以激活该外接程序。
示例
下面的示例使用 GetProjectTemplate 和 AddFromTemplate 在解决方案中创建两个新的控制台项目:一个是 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\kempb\addins\MyCSProject"
Dim vbPrjPath As String = _
"C:\UserFiles\kempb\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\\kempb\\addins\\MyCSProject";
string vbPrjPath = "C:\\UserFiles\\kempb\\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# 项目