¿Cómo "Agregar elemento existente" una estructura de directorio completa en Visual Studio?

765

Tengo un conjunto independiente de archivos no afiliados a ningún proyecto de C # que residen en una estructura de directorio anidada complicada.

Quiero agregarlos en ese formato a un directorio diferente en una aplicación web ASP.NET en la que estoy trabajando; conservando la misma estructura. Entonces, copié la carpeta en la ubicación de destino de mi proyecto e intenté "agregar un elemento existente" solo para perder la jerarquía de carpetas anterior.

Por lo general, he recreado los directorios a mano, los he copiado uno a uno y luego he agregado los elementos existentes. Simplemente hay demasiados directorios / elementos en este caso.

Entonces, ¿cómo agrega directorios y archivos existentes en Visual Studio 2008?

Ian Patrick Hughes
fuente
44
El hecho de que esto no sea obvio para la mayoría de las personas (incluido yo) es un triste testimonio de Visual Studio.
Pete Alvin
22
@Pete Alvin Tengo muchos testimonios tristes sobre Visual Studio, pero lo aprecio más ahora que he pasado tiempo con algunos de los otros IDE que existen.
Freek Nortier
44
Visual Studio no es perfecto, sin embargo, he usado casi todos los IDE disponibles. Si es lo mejor. Eclipse ni siquiera está cerca, Xcode es probablemente el único que se acerca.
user1127081
2
@ user1127081: tengo que secundar esto. Visual Studio está bastante lejos de ser perfecto, pero he usado casi todos los demás IDE para casi todos los sistemas operativos de desarrollo y de destino y todos son mucho peores. También tengo que estar de acuerdo en que Xcode es claramente y, con mucho, el mejor del resto, pero se convirtió en eso solo después de haber aprobado mucho entre Xcode 3 y Xcode 4. Eclipse es solo una pesadilla.
Kaiserludi

Respuestas:

737

Arrastre los archivos / carpetas desde el Explorador de Windows al Explorador de soluciones. Los agregará a todos. Tenga en cuenta que esto no funciona si Visual Studio está en modo de administrador, porque Windows Explorer es un proceso de modo de usuario.

Darren Kopp
fuente
42
Esto no funciona para mi. Simplemente me da el icono de un objetivo de caída no válido. Sin embargo
Cine
115
En VS 2010, después de que draggin obtuvo la carpeta, elija la opción Mostrar todos los archivos en el proyecto. Los archivos existen en forma "fantasma", haga clic derecho en la carpeta e Incluir en el proyecto. Luego se agregarán
John Ptacek
10
@JohnPtacek: Eso funciona en un proyecto, pero no en la solución.
2
Esta respuesta no es válida para VS2010 (al menos por lo que puedo decir). La respuesta de Tom el 10/07/12 fue la mejor solución para mí en
VS2010
8
Elimine explorer.exe utilizando el administrador de tareas, inícielo como administrador y luego puede arrastrar y soltar en Visual Studio incluso si se está ejecutando como Administrador.
xander
545

Habilite "Mostrar todos los archivos" para el proyecto específico (es posible que deba presionar "Actualizar" para verlos) **.

Las carpetas / archivos que no forman parte de su proyecto aparecen ligeramente "más claros" en el árbol del proyecto.

Haga clic derecho en las carpetas / archivos que desea agregar y haga clic en "Incluir en el proyecto" . Agregará recursivamente carpetas / archivos al proyecto.

** Estos botones se encuentran en la mini barra de herramientas del Explorador de soluciones.

** Asegúrese de NO estar en modo de depuración.

Brannon
fuente
2
Parece que esto solo funciona para archivos más profundos que su archivo de proyecto, si mantiene su archivo de proyecto en una carpeta por sí solo, esto no funcionará.
Danny Parker
28
Esto solo funciona en proyectos individuales, pero no dentro de una solución.
77
Duh ... no es donde se supone que debes poner los archivos. Por supuesto, no va a encontrar archivos sobre su carpeta raíz.
Bluebaron
3
Esto solo funcionará cuando desee que las carpetas que agregue residan en la carpeta de su proyecto. En mi caso, quiero que estén en otro lugar (compartido entre proyectos). En XCode, arrastrar una estructura de carpetas desde cualquier ubicación a la estructura del proyecto conserva la estructura de la carpeta en lugar de aplanarla como VS. Parece que VS carece de una característica aquí.
Mattijs
99
consejo: asegúrese de que el proyecto esté seleccionado, no la solución, ¡entonces puede mostrar todo!
niico
89

En el Explorador de soluciones:

  1. Haga clic en Mostrar todos los archivos (segundo icono de la izquierda en la parte superior del Explorador de soluciones).
  2. Ubique la carpeta que desea agregar.
  3. Haga clic derecho y seleccione "Incluir en proyecto"

Lo uso para instalar complementos como editores HTML y navegadores de archivos de terceros.

Tom
fuente
16
¿Cómo es esto diferente de la respuesta de Brannon de 4 años antes?
ToolmakerSteve
77
Esto no soluciona el problema original que es para una carpeta Solución . También ha sido cubierto previamente.
user2864740
@ToolmakerSteve: Es diferente porque es la misma solución de Gant de ... 7 años antes. stackoverflow.com/questions/392473/…
Veverke
Recomiendo encarecidamente esta solución, ya que también ayuda cuando se han registrado archivos csproj en conflicto y tfs ignora los conflictos y los sobrescribe
John Demetriou
66
+1. Encontré esta respuesta más útil que las otras porque deja en claro (relativamente) que Mostrar todos los archivos es un icono , no una entrada en el menú contextual.
35

Solo quiero señalar que dos de las soluciones ofrecidas anteriormente,

  • Arrastra y suelta desde el Explorador de Windows
  • Mostrar todos los archivos y luego incluirlos en el proyecto.

no hagas lo que te pidió la pregunta:

Incluir en el proyecto conservando la estructura del directorio .

Al menos no en mi caso (proyecto C ++ / CLI Visual Studio 2013 en Windows 7).

En Visual Studio, una vez que vuelve a la vista normal (no Mostrar todos los archivos ), los archivos que agregó se enumeran en el nivel superior del proyecto.

Sí, en el disco todavía residen donde estaban, pero en el Explorador de soluciones están sueltos.

No encontré una forma de evitarlo, excepto recrear la estructura de directorios en el Explorador de soluciones y luego hacer Agregar elementos existentes en la ubicación correcta.

ILIA BROUDNO
fuente
Veo el mismo comportamiento, VS2010, c ++.
Radim Cernej
Es cierto, también en Visual Studio 2010. Ni siquiera agrega los archivos sin una estructura de directorios para mí, solo el primer archivo dentro de esa estructura de carpetas y no ninguna subcarpeta.
Jonas
2
De acuerdo, todavía difiere. Me pregunto cómo un software popular y costoso como VS puede carecer de tal característica. Considero bastante confuso tener dos estructuras diferentes pero similares en el explorador de soluciones y el explorador de Windows ...
Janis
12
Usando 2015 aquí; Todavía no conserva la estructura de carpetas. Aturdido.
Toby Deshane
Con la Actualización 3 de 2015, tuve éxito con el enfoque de Bannon y Tom. Todas las carpetas anidadas llegaron como se esperaba.
John Hatton
22

No entendí esto inmediatamente en base a estas descripciones, pero esto es lo que finalmente encontré:

  1. Active "Mostrar todos los archivos": hay un icono en la barra de herramientas del Explorador de soluciones
  2. Con el Explorador de Windows (no el explorador de soluciones), mueva sus archivos a la estructura de directorios donde desea que residan.
  3. Haga clic en "Actualizar" también en la barra de herramientas del Explorador de soluciones
  4. Los archivos que ha movido deben estar visibles "fantasmas" en la estructura de árbol del Explorador de soluciones donde los ha colocado.
  5. Haga clic derecho sobre sus archivos o carpetas fantasmas y haga clic en "Incluir en el proyecto". Se incluirá todo el contenido de una carpeta.
Don Rule
fuente
2
Esto es para una carpeta de solución, no para un proyecto.
StingyJack
Actualización: No hay botón de "actualización" en VS2019
Liu Hao
16

A continuación se muestra el ícono de ' Mostrar todos los archivos ', solo como referencia fácil.

Ingrese la descripción de la imagen aquí

Marvin Glenn Lacuna
fuente
13

Ingrese la descripción de la imagen aquí

Haga clic arriba en el círculo rojo. Su carpeta aparecerá en el Explorador de soluciones.

Haga clic derecho en su carpeta -> Incluir en proyecto .

Manoj Kalluri
fuente
9

Puede cambiar el XML de su proyecto para agregar subcarpetas y estructuras existentes automáticamente en su proyecto como "node_modules" de NPM:

Esto es para versiones anteriores de MSBuild / Visual Studio

<ItemGroup>
   <Item Include="$([System.IO.Directory]::GetFiles(&quot;$(MSBuildProjectDirectory)\node_modules&quot;,&quot;*&quot;,SearchOption.AllDirectories))"></Item>
</ItemGroup>

Para las versiones actuales de MSBuild / Visual Studio:

Simplemente póngalo en los nodos del xml:

<Project>
</Project>

En este caso, simplemente cambie $ (MSBuildProjectDirectory) \ node_modules por el nombre de su carpeta.

Bjego
fuente
Sí, a veces, editar manualmente el archivo *. * Proj lo llevará a donde desea ir.
Chris O
1
¿Entonces estás diciendo que alguien podría hacer un complemento para hacer esto por lotes? Porque no estoy recreando una estructura de carpetas con decenas de carpetas a mano en un xml
Spectraljump
Exactamente lo que estaba buscando
Vitaliy Kalinin
5

Necesita poner la estructura de su directorio en el directorio de su proyecto. Y luego haga clic en el icono "Mostrar todos los archivos" en la parte superior de la caja de herramientas del Explorador de soluciones. Después de eso, se mostrará el directorio agregado. Luego deberá seleccionar este directorio, hacer clic derecho y elegir "Incluir en el proyecto".

nader
fuente
1
Esto es más o menos lo que sugiere la respuesta aceptada y uno de los comentarios debajo.
Kev
4

Esto es lo que hago:

  1. Haga clic derecho en la solución -> Agregar -> Sitio web existente ...
  2. Elija la carpeta donde está su sitio web. Solo la carpeta raíz del sitio.

Luego, todo se agregará a su solución, desde carpetas a archivos, y archivos dentro de esas carpetas.

Willy David Jr
fuente
4

Por fin, Visual Studio 2017 permite al usuario importar un directorio completo con un solo clic. Visual Studio 2017 tiene una nueva funcionalidad "Abrir carpeta " que permite abrir la carpeta completa, incluso sin la necesidad de guardarla como solución. El código fuente se puede importar utilizando los siguientes métodos.

  1. Archivo de menú → Abrir → * Carpeta ( Ctrl+ Shift+ O)
  2. devenv.exe <source folder>

Incluso admite la construcción y depuración de proyectos CMake.

Traiga su base de código C ++ a Visual Studio con "Carpeta abierta"

Naren
fuente
4

Ahora hay una extensión de código abierto en Marketplace que parece hacer lo que pedía el OP:

Carpeta a carpeta de soluciones

carpeta-a-solución-carpeta

Si no hace exactamente lo que desea, el código está disponible, por lo que puede modificarlo para adaptarlo a su situación.

HTH

Yann Duran
fuente
La extensión no funcionó para mí en la versión VS 15.9.13 2017
Mateusz Migała
2

Un buen truco que descubrí es que si va a "Agregar existente ...", puede arrastrar la carpeta desde el diálogo abierto a su solución.

Tengo que abrir mi Visual Studio en modo administrador automáticamente, así que esta fue una buena solución para mí, ya que no quería tener que deshacer eso solo para que esto funcione.

Yatrix
fuente
1

Lo que funcionó para mí fue arrastrar la carpeta a Visual Studio, luego hacer clic derecho en la carpeta y seleccionar "Abrir carpeta en el Explorador de archivos". Luego seleccione todos y arrástrelos a la carpeta en Visual Studio.

Mella
fuente
0

En Windows 7 podría hacer lo siguiente:

Haga clic derecho en su proyecto y seleccione "Agregar-> Elemento existente". En el cuadro de diálogo que aparece, busque la raíz del directorio que desea agregar. En la esquina superior derecha tienes un cuadro de búsqueda. Escriba *.cso *.cpp, sea cual sea el tipo de archivos que desea agregar. Cuando finalice la búsqueda, seleccione todos los archivos, haga clic en Agregar y espere un momento ...

usuario1395598
fuente
55
Esto no mantiene la estructura del directorio, simplemente coloca todo en la carpeta donde hizo clic en Agregar.
Marc
0

La forma más limpia que he encontrado para hacer esto es crear un nuevo proyecto de Biblioteca de clases en la carpeta de destino y redirigir toda su salida de compilación a otro lugar. Todavía deja un archivo .csproj en esa carpeta, pero le permite verlo en Visual Studio y elegir qué archivos incluir en su proyecto.

Jason Kester
fuente
-3

Es molesto que Visual Studio no sea compatible de forma nativa, pero CMake podría generar el proyecto de Visual Studio como una solución alternativa.

Aparte de eso, solo usa Qt Creator. Luego puede exportar un proyecto de Visual Studio.

lama12345
fuente