Поделиться через


Практическое руководство. Перенос кода, создающего проекты при помощи шаблонов

Обновлен: Ноябрь 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 для создания нового проекта. Это позволяет избежать использования жестко запрограммированных путей к шаблонам. В следующей процедуре показано, как это сделать.

Чтобы обновить код проекта

  1. Загрузите, скопируйте или импортируйте старый код в Visual Studio.

  2. Замените разделы кода, устанавливающие расположения проекта и шаблона элементов проекта в форме жестко запрограммированных путей, кодом из следующего раздела, в котором используется метод GetProjectTemplate или GetProjectItemTemplate.

  3. Замените вызовы метода AddFromTemplate методом AddFromTemplate.

  4. Скомпилируйте и запустите код.

Пример

В следующем примере кода показана процедура программного создания проектов и элементов проектов. Он создает проект консольного приложения 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");
}

См. также

Задачи

Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации

Основные понятия

Управление проектами и решениями

Знакомство с объектом VSProject2