Tengo una solución de Visual Studio. Actualmente, es una solución vacía (= sin proyectos) y he agregado algunas carpetas de soluciones.
Las carpetas de solución sólo parecen ser "carpetas virtuales", porque en realidad no se crean en el sistema de archivos y los archivos dentro de las carpetas de solución simplemente se encuentran en la misma carpeta que el archivo .sln.
¿Hay alguna configuración que haya pasado por alto que le indique a Visual Studio que trate las carpetas de solución como carpetas "reales", es decir, que las cree en el sistema de archivos y mueva los archivos a él cuando los muevo dentro de la solución a una de esas carpetas?
Editar: Gracias. Voy a hacer una sugerencia para VS2010 entonces :)
visual-studio
Michael Stum
fuente
fuente
Respuestas:
Sin escenario especial. No creo que sea compatible.
Puede crear carpetas reales en un "proyecto" dentro de la solución, pero no en la solución en sí.
fuente
Existe una solución alternativa, que en realidad se comporta como se esperaba .
Hecho. Ahora el Explorador de soluciones reflejará cualquier cambio en el sistema de archivos y viceversa (incluidas las subcarpetas).
Lo uso (extraño) para especificaciones, documentos, PM y algunos scripts de DevOps que se comparten dentro del equipo. Es fácil elegir qué incluir o no en el control de código fuente y (si se configura correctamente) no entra en conflicto con la compilación.
Sé que la función no está destinada a ese caso de uso, pero a excepción del icono de "Proyecto", quizás engañoso, todavía no encontré ninguna escasez en ese truco. Y todavía hay casos de uso en los que las carpetas de soluciones clásicas (virtuales) que proporciona VS encajan en la imagen. ¿Qué piensas?
fuente
.*proj
formato nuevo, más limpio y claro basado en el sistema de archivos global .En Visual Studio 2017, haga clic en el icono "Soluciones y carpetas" en la ventana del Explorador de soluciones. Este botón cambia de la vista de "solución" virtual a una "vista de origen" que coincide con el diseño de carpetas y archivos en el sistema de archivos. Cuando agrega una nueva carpeta, la carpeta se crea físicamente en la ubicación esperada. .
fuente
La respuesta elegida sugiere que sería posible utilizar proyectos reales en lugar de carpetas de soluciones, pero no explica realmente cómo. Supongo que lo que estoy describiendo aquí es posiblemente la forma menos incómoda de lograr eso ... :-P
El problema con los archivos de proyecto normales es que eventualmente serán compilados por
MSBUILD
. Y si desea tener un proyecto que solo contenga archivos no compilables, será un problema.Pero hace algún tiempo Visual Studio introdujo un nuevo tipo de proyecto: Proyecto compartido (extensión .shproj). Este tipo de proyecto no se compila de forma predeterminada, sino solo cuando (y solo si) otro proyecto hace referencia a él.
Entonces, una parte del truco aquí es usar proyectos compartidos en lugar de carpetas de soluciones . Obviamente, es posible agregar un proyecto compartido al que nunca se hace referencia en ningún otro proyecto, lo que significa que podemos evitar el problema presentado anteriormente.
Luego, al usar la
<None Include="**/*" />
cláusula en el archivo .shproj, podemos hacer que refleje automáticamente cualquier archivo y / o subcarpeta nuevos.Así que básicamente haz esto:
Por ejemplo, en mi caso, he creado un DockerDev.shproj, por lo que puedo agrupar algunos scripts relacionados con Docker que ejecutamos solo en nuestras máquinas de desarrollo:
Este archivo .shproj realizará un seguimiento de cualquier archivo, en cualquier subcarpeta de esta nueva
DockerDev
carpeta en mi solución.Por lo que pude ver, esta solución funciona de manera muy similar a lo que solicitó el OP: funcionará como una referencia no compilable a una carpeta y reflejará automáticamente cualquier cambio realizado en ella.
fuente
Sara Ford contribuyó con una macro para agregar hacer esto. En Visual Studio 2010, si abre su Explorador de macros, verá una macro llamada "GenerateSlnFolderOnDirStructure". Esto automatizará la creación de Carpetas de soluciones y agregará los archivos.
fuente
Carpeta a carpeta de solución por Cecilia Wirén - CeciliaSHARP
Elimine la molestia de agregar varios archivos a la carpeta de la solución. Simplemente use el menú contextual para la solución y, justo debajo de la opción de crear una nueva carpeta de solución, ahora encontrará 'Agregar carpeta como carpeta de solución'. Esto creará una carpeta de solución con el mismo nombre que seleccionó y agregará los elementos dentro de esa carpeta a la carpeta de solución. Esto no moverá los archivos en el disco.
fuente
No, no es compatible. Como sospechaba, las carpetas de soluciones son simplemente subentradas virtuales en el archivo .sln, nada que ver con el sistema de archivos.
fuente
Visual Studio no tiene soporte para esto. Sin embargo, hice una extensión que hace algo similar para VS2013. Asigna carpetas de soluciones a carpetas físicas en su disco duro, aunque la asignación es unidireccional (desde el disco duro a la solución). Eso significa que el contenido de una carpeta de solución reflejará el contenido de la carpeta del disco duro y no al revés.
Con eso fuera del camino, la extensión aún puede ser útil. Tiene soporte para mapear carpetas de soluciones a carpetas físicas, filtrar archivos y directorios basados en expresiones regulares y recordar asignaciones en su archivo .sln. Las propiedades no son intrusivas, por lo que los desarrolladores sin la extensión aún pueden abrir el sln y no verse afectados.
Alojado en la galería de Visual Studio: https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd
Editar: subido a bitbucket. Ahora de código abierto. Licencia MIT. https://bitbucket.org/LSS_NorthWind/physical-solution-folders
fuente
Nota: Sí, esto es posible, puede crear una carpeta en la raíz, pero es un poco complicado ...
Dando algunos esfuerzos adicionales puedes hacerlo ¿Cómo? Sigamos el paso
6. Tome el repositorio en una ubicación nueva.
Estás listo...
si aún no puede ver su carpeta -----
Felicitaciones que terminaste ...
Si tiene algún problema, escríbame para pedir ayuda.
fuente
Cree una "carpeta de soluciones". Esto creará una carpeta lógica, pero no física. Haga clic derecho en la carpeta de la solución y abra un cuadro de diálogo de nuevo proyecto. Pero antes de hacer clic en Aceptar, debe cambiar la ubicación de un proyecto a la carpeta física deseada y VS la creará y colocará el proyecto dentro.
fuente
Puede agregar carpetas reales eligiendo "Agregar nuevo filtro" para un archivo de proyecto de Visual Studio. También puede hacer "Agregar nuevo filtro" en una carpeta existente. Una vez creada la carpeta, cámbiele el nombre y agregue el archivo de origen o de encabezado o lo que se adapte a su proyecto. Esta es una forma que conozco que nos permite crear carpetas reales a través del IDE de Visual Studio.
fuente
La carpeta creada debajo de la solución será virtual como se dijo. Tal vez esto podría llamarse una solución alternativa, pero puede crear físicamente la carpeta en el disco antes o cuando agregue un nuevo elemento / proyecto y Robert debería ser hermano de su padre.
PD: en una mirada más cercana, tal vez debería explicar que "Bob es tu tío" significa que estás bien / ordenado.
fuente
Yo mismo he querido esta función varias veces, pero al final del día, realmente NO quieres la capacidad de hacer esto. Piense en su solución (archivo) como la raíz de una aplicación web y piense en las carpetas de la solución como directorios virtuales (literal y funcionalmente). El contenido de un directorio virtual web podría estar físicamente en un servidor completamente diferente. Donde Visual Studio confundió el concepto de carpetas de solución es permitiéndole crear nuevos archivos dentro de la carpeta. Siempre debe "Agregar existente" al agregar contenido. Cuando agrega existente, crea un vínculo a la ubicación de origen del archivo.
Pero la razón por la que no desea que las carpetas de soluciones se comporten como carpetas "físicas" es porque el diseño de su solución no necesariamente usa la misma convención que el diseño de control de código fuente. Las carpetas de soluciones le permiten personalizar la jerarquía de sus proyectos para que pueda agrupar proyectos y elementos de la forma que desee, y luego decidir que no le gusta y cambiarlo nuevamente sin tener que pasar por la pesadilla de mover elementos de control de fuente alrededor e irritando al resto de su equipo.
fuente
src
,test
,tools
, etc Usted sería definitivamente quiere tomar esa decisión desde el principio del proyecto a su punto acerca irritando al equipo, pero eso es cierto para la mayoría de las decisiones arquitectónicas.Tengo una pequeña solución para esto (no es genial, pero funciona).
No es genial porque necesitará mantener manualmente las referencias del archivo, pero me funciona.
fuente