Compartir a través de


Cómo: Migrar código que crea proyectos mediante plantillas

Actualización: noviembre 2007

El proceso de creación de proyectos se ha actualizado en Visual Studio 2005 y el procedimiento siguiente muestra cómo actualizar las aplicaciones existentes que utilicen automatización para crear código mediante programación.

En Visual Studio .NET 2002 y Visual Studio .NET 2003, los proyectos se creaban basándose en plantillas de proyecto llamando al método AddFromTemplate y pasando el nombre y la ruta de acceso del archivo de plantilla, por ejemplo .vsz, .cpp, .cs, etc.

En Visual Studio 2005, sin embargo, los archivos de plantilla del proyecto están en archivos .zip comprimidos, por lo que este proceso ya no funciona. Este nuevo sistema de plantilla de proyecto se describe de forma más completa en Crear plantillas de proyectos. El ensamblado EnvDTE80 proporciona nuevos tipos para tener acceso a estas nuevas plantillas de proyecto comprimidas. Una versión actualizada de AddFromTemplate, así como los nuevos métodos GetProjectTemplate y GetProjectItemTemplate, permiten crear mediante programación nuevos proyectos y elementos de proyecto basándose en sus archivos de plantilla comprimidos.

El proceso en Visual Studio 2005 consiste en utilizar GetProjectTemplate para obtener la ruta de acceso al tipo de plantilla especificado, que a continuación se pasa al método AddFromTemplate para crear un nuevo proyecto. Esto permite evitar el uso de rutas de acceso especificadas en el código de la plantilla. En el siguiente procedimiento se muestra cómo hacerlo:

Para actualizar el nuevo código del proyecto

  1. Cargue, copie o importe el código heredado en Visual Studio.

  2. Reemplace las secciones del código que establecen las ubicaciones del proyecto y de las plantillas de los elementos del proyecto en forma de rutas de acceso especificadas en el código por el código (de la siguiente sección) que utiliza los métodos GetProjectTemplate o GetProjectItemTemplate.

  3. Reemplace las llamadas al método AddFromTemplate por el método AddFromTemplate.

  4. Compile y ejecute el código.

Ejemplo

El ejemplo siguiente muestra el procedimiento para crear mediante programación proyectos y elementos de proyecto. Crea un proyecto de consola de Visual Basic y le agrega una página HTML (elemento de proyecto).

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");
}

Vea también

Tareas

Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización

Conceptos

Controlar proyectos y soluciones

Introducción al objeto VSProject2