Iniciar sesión
Registrarse
He olvidado mi contraseña
15 DIC 2011
Vistas de la Entrada 6 Vistas de la Entrada 1
C# Extensibilidad VS
[HowTo] Agregar Ficheros a un Proyecto Existente

Introducción

Siguiendo con la serie de post de extensibilidad que he estado escribiendo, vamos a ver en este artículo como agregar ficheros a un proyecto existente.

Agregar Ficheros

En este apartado vamos a ver como agregar ficheros nuevos o ficheros ya existentes.

Ficheros Nuevos

Al igual que existen plantillas predefinidas para proyectos, podemos encontrar plantillas de tipos de elementos agregables a un proyecto.

Para poder explorar el conjunto de plantillas existentes, dentro del directorio de instalación de Visual Studio, encontraremos la carpeta ItemTemplates, con los distintos lenguajes, instalados para poder consultar sus elementos.

 

   1: var solution = (Solution2)_applicationObject.Solution;

   2: var project = (Project)solution.Projects.Item(GetProject());

   3: var template = solution.GetProjectItemTemplate("Class.zip", "CSharp");

   4: var temp = project.ProjectItems.AddFromTemplate(template, "MyNewClass.cs");

El fragmento de código anterior está incluido en el evento click de una opción de menú de nuestro Addin.

El objeto Solution2 dispone del método GetProjectItemTemplate, que a través del nombre de la plantilla y el lenguaje a utilizar, nos va a permitir obtener el nombre de la plantilla para su importación.

A través del método AddFromTemplate de la colección ProjectItems del proyecto seleccionado, vamos a definir la plantilla obtenida y asignaremos el nombre de nuestro nuevo fichero.

Ficheros existentes

Existen dos formas de agregar un fichero existente a un proyecto:

– Como una copia

– De forma vinculada

1) Como una copia:

Se creará una copia del fichero deseado en la carpeta del proyecto y se agregará al mismo.

Para realizar este proceso bastaría con ejecutar el siguiente fragmento de código:

   1: string file = string.Empty;

   2: using (OpenFileDialog opd = new OpenFileDialog())

   3: {

   4:     if (opd.ShowDialog() == DialogResult.OK)

   5:     {

   6:         file = opd.FileName;

   7:         var solution = (Solution2)_applicationObject.Solution;

   8:         var project = (Project)solution.Projects.Item(GetProject());

   9:         project.ProjectItems.AddFromFileCopy(file);

  10:     }

  11: }

A través del cuadro de Abrir Fichero (OpenFileDialog) vamos a elegir un fichero existente, y lo agregaremos como una copia al proyecto seleccionado a través del método AddFromFileCopy.

2) De forma vinculada:

La segunda forma de agregar un fichero existente a un proyecto es a través de un Vinculo. Visual Studio establecerá un vinculo al fichero existente sin copiarlo en el directorio del proyecto. Esto puede generar problemas si el fichero se mueve o se elimina, provocando que el enlace se pierda.

El código va a ser muy similar al anterior, con la salvedad que en lugar de utilizar el método AddFromFileCopy se va a utilizar el método AddFromFile.

 

   1: string file = string.Empty;

   2: using (OpenFileDialog opd = new OpenFileDialog())

   3: {

   4:     if (opd.ShowDialog() == DialogResult.OK)

   5:     {

   6:         file = opd.FileName;

   7:         var solution = (Solution2)_applicationObject.Solution;

   8:         var project = (Project)solution.Projects.Item(GetProject());

   9:         project.ProjectItems.AddFromFile(file);

  10:     }

  11: }

 

Espero que os sea de utilidad.

 

Saludos

Enviado por
Compartir : Compartir en Facebook Compartir en Twitter Compartir en Google+ Compartir en Linkedin
anonymous 29 de diciembre del 2011 a las 10:07

Introducción Antes de comenzar a hablar del propio titulo, vamos a hacer un índice de los artículos publicados

Responder
Dejar un comentario
Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Dejar una respuesta

C#

Tip Rapido: Método Extensor

Bueno aquí va un mini-post. Cuantas veces os habéis encontrado con: if (a>=5 and a<=10) … Yo al menos recuerdo unas pocas. Bueno aquí va el mini truco. Creamos una clase estática con un método extensor: Code Snippet public static class ExtensionMethod  {    public  static bool Between(this int original, int menor, int mayor)      {          return (original […]

Enviado por
C# Patrones

Patrón UoW Parte 2

Introducción En vista de que parece que el artículo que publique ayer sobre UoW, parecía que era demasiado simple…, y a pesar de que Lucas Ontivero ha publicado un ejemplo (Gracias), he decidido publicar un ejemplo un poco más amplio para ver su utilización. Usando el Patrón Partiendo de una clase base: 1: public abstract […]

Enviado por
Sin categoría

[Opinión]Los Nuevos Programadores y VB o C#

Llevo relativamente poco tiempo en el mundo de la programación ya que mis orígenes, los verdaderos, serán del 2001 con C, aunque anteriormente ya había hecho cosas con Visual Basic 6. Por si no lo he dicho nunca, o no me has leído decirlo me encanta programar. Después de la primera introducción voy al hilo […]

Enviado por
C# MCC PERSONAL VB VS WinForms

[Personal] Microsoft Community Contributor 2011

En mi revisión matutina del correo, me he encontrado una más que Grata Sorpresa: Dear Javier, Congratulations! We’re pleased to inform you that your contributions to Microsoft online technical communities have been recognized with the Microsoft Community Contributor Award. The Microsoft Community Contributor Award is reserved for participants who have made notable contributions in Microsoft […]

Enviado por
Sin categoría

[Personal] MVP Visual C# 2011

Buenas tardes a todos, Este post es como dice el titulo para anunciar que he sido galordando por el premio MVP de Microsoft en la categoria de C#. Desde aquí quiero darles las gracias a los chicos de Microsoft empezando por Cristina Gonzalez, Jose Bonnin, David Salgado, Boris Armenta… También mi gratitud a la gente de […]

Enviado por