2012-08-13 15 views
5

Estoy desarrollando un paquete VS y parte de la funcionalidad que necesito implementar es agregar un archivo a los elementos de solución de la solución actualmente abierta.¿Cómo agrego un archivo a una solución mediante programación?

Esta es exactamente la misma acción que se realizaría manualmente si hace clic derecho en una Solución y selecciona Agregar> Elemento existente. Luego seleccionó un archivo en el disco.

Eché un buen vistazo a las interfaces DTE y DTE2 y puedo ver las operaciones para agregar y manipular proyectos, pero no parece haber operaciones para agregar archivos individuales.

Gracias.

Respuesta

9

Bien, me di cuenta de que solo podía grabar una macro para capturar la operación y luego examinar el código en VS Macro IDE.

El código requerido para hacer esto es.

DTE.ItemOperations.AddExistingItem(filePath); 
+0

¿Cómo se puede entregar el archivo en vstemplate? ¿Es posible? – tofutim

+0

@tofutim No estoy seguro exactamente de lo que hace su comentario. Esta pregunta no tiene nada que ver con las plantillas de VS. ¿Quizás necesites comenzar tu propia pregunta específica? – Martyn

2

Para ello es necesario para acceder a la ProjectItems miembro del Proyecto y llame AddFromFile()

ProjectItem pi = project.ProjectItems.AddFromFile(filePath); 
+0

Gracias por la respuesta. Estoy tratando de agregar el elemento a la Solución y no a un proyecto específico – Martyn

+0

La solución tiene [AddFromFile] (http://msdn.microsoft.com/en-us/library/envdte.solution_members%28v=vs.90% 29) también –

+1

No esa llamada no funciona. Espera que se proporcione un Proyecto en la ruta que proporcione. Me acabo de dar cuenta. Ver mi respuesta arriba. – Martyn

-1

Es necesario AddFromFile a la colección ProjectItems de un Project

http://msdn.microsoft.com/en-us/library/envdte.projectitems.addfromfile(v=vs.100).aspx

edición:

Agregar a una Solutio n, AddFromFile contra Solution

+0

Gracias por la respuesta. Estoy tratando de agregar el artículo a la Solución y no a un proyecto específico – Martyn

+0

Luego llame a 'AddFromFile' contra' Solution' – podiluska

+2

No esa llamada no funciona. Espera que se proporcione un Proyecto en la ruta que proporcione. Me acabo de dar cuenta. Véame respuesta arriba. – Martyn

Cuestiones relacionadas