Практическое руководство. Перенос кода, создающего проекты при помощи шаблонов
Обновлен: Ноябрь 2007
Процесс создания проектов был обновлен в Visual Studio 2005, и следующая процедура демонстрирует порядок обновления существующих приложений, в которых для программного создания кода используются возможности автоматизации.
В Visual Studio .NET 2002 и Visual Studio .NET 2003 проекты создавались на основе шаблонов проектов путем вызова метода AddFromTemplate и передачи имени и пути файла шаблона, такого как VSZ, CPP или CS и т.д.
Однако в Visual Studio 2005 файлы шаблонов проектов находятся в сжатых ZIP-файлах, поэтому этот процесс более не действует. Новая система шаблонов проектов более подробно описана в разделе Создание шаблонов проектов. Сборка EnvDTE80 предоставляет новые типы для доступа к этим новым сжатым шаблонам проектов. Обновленная версия AddFromTemplate и новые методы GetProjectTemplate и GetProjectItemTemplate позволяют создавать новые проекты и элементы проектов программными средствами на основе их сжатых файлов шаблонов.
Процесс в Visual Studio 2005 заключается в использовании GetProjectTemplate для получения пути к указанному типу шаблона, который затем передается методу AddFromTemplate для создания нового проекта. Это позволяет избежать использования жестко запрограммированных путей к шаблонам. В следующей процедуре показано, как это сделать.
Чтобы обновить код проекта
Загрузите, скопируйте или импортируйте старый код в Visual Studio.
Замените разделы кода, устанавливающие расположения проекта и шаблона элементов проекта в форме жестко запрограммированных путей, кодом из следующего раздела, в котором используется метод GetProjectTemplate или GetProjectItemTemplate.
Замените вызовы метода AddFromTemplate методом AddFromTemplate.
Скомпилируйте и запустите код.
Пример
В следующем примере кода показана процедура программного создания проектов и элементов проектов. Он создает проект консольного приложения Visual Basic и добавляет HTML-страницу (элемент проекта) в него.
Sub CreatePrjAndPrjItemExample()
' Get a reference to the Solution2 object and create
' the path variables.
Dim soln As Solution2 = CType(DTE.Solution, Solution2)
Dim vbPrjTemplatePath As String
Dim vbItemTemplatePath As String
Dim vbPrjPath As String = "C:\MyNewVBProject"
Dim prjName As String = "New Visual Basic Console Project"
Dim prj As Project
Dim prjItems As ProjectItems
MsgBox("Starting...")
' Get the project template path for a Visual Basic console project.
vbPrjTemplatePath = _
soln.GetProjectTemplate("ConsoleApplication.zip", _
"VisualBasic")
' Create a new Visual Basic Console project by using the
' template obtained above.
soln.AddFromTemplate(vbPrjTemplatePath, vbPrjPath, prjName, False)
MsgBox("Done.")
' Reference the project and its items.
prj = soln.Projects.Item(1)
prjItems = prj.ProjectItems
' Get the path to the HTML Page template and add it to the project.
vbItemTemplatePath = soln.GetProjectItemTemplate("HTMLPage.zip", _
"VisualBasic")
prjItems.AddFromTemplate(vbItemTemplatePath, "A New HTML Page")
End Sub
public void CreatePrjAndPrjItemExample(DTE2 dte)
{
// Before running, set a reference to
// System.Windows.Forms.
// =============================
// Get a reference to the Solution2 object and create
// the path variables.
Solution2 soln = (Solution2) dte.Solution;
string vbPrjTemplatePath;
string vbItemTemplatePath;
string vbPrjPath = "C:\\MyNewVBProject";
string prjName = "New Visual Basic Console Project";
Project prj;
ProjectItems prjItems;
System.Windows.Forms.MessageBox.Show("Starting...");
// Get the project template path for a Visual Basic console project.
vbPrjTemplatePath = soln.GetProjectTemplate _
("ConsoleApplication.zip", VisualBasic");
// Create a new Visual Basic Console project by using
// the template obtained above.
soln.AddFromTemplate(vbPrjTemplatePath, vbPrjPath, prjName, false);
System.Windows.Forms.MessageBox.Show("Done.");
// Reference the project and its items.
prj = soln.Projects.Item(1);
prjItems = prj.ProjectItems;
// Get the path to the HTML Page template and add it to the
// project.
vbItemTemplatePath = soln.GetProjectItemTemplate _
("HTMLPage.zip", "VisualBasic");
prjItems.AddFromTemplate(vbItemTemplatePath, "A New HTML Page");
}
См. также
Задачи
Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации