2008-12-25 20 views
547

El problema es realmente simple. En lugar de crear carpetas en Visual Studio, creo una estructura de directorio para mi proyecto en el sistema de archivos. ¿Cómo incluyo todas las carpetas y archivos en un proyecto, manteniendo la estructura?¿Cómo agrego un árbol de directorios existente a un proyecto en Visual Studio?

Si agrego "Archivo existente" en una carpeta llamada Servicios y navego a un archivo en la estructura de directorios ... Servicios> Gestión de cuentas> Crear cuenta.cs, ​​aparece en Visual Studio como sigue: Servicios> Crear cuenta.cs. No quiero esto.

Ya tengo toda una estructura de directorio resuelta, ya que estoy imitando a los desarrolladores de nuestros clientes que usan la misma estructura para la organización. ¿Cómo agrego todas las carpetas y archivos al proyecto en Visual Studio? ¿O tengo que hacer lo que hacen la mayoría de los usuarios de Microsoft y "aguantarlo" y volver a crear todas y cada una de las carpetas a través de Visual Studio?

+3

posible duplicado de [Cómo "Agregar elemento existente" toda una estructura de directorios en Visual Studio?] (Http://stackoverflow.com/questions/57776/how-to-add-existing-item-an -entire-directory-structure-in-visual-studio) – nawfal

Respuesta

944

Debe colocar 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 de Solution Explorer. Después de eso, se mostrará el directorio agregado. Luego deberá seleccionar este directorio, hacer clic con el botón derecho y seleccionar "Incluir en proyecto".

enter image description here

enter image description here

+95

¿Hay alguna manera de hacer esto con un directorio (árbol) _outside_ del directorio del proyecto? – imre

+1

¿Hay alguna manera de hacer esto para una carpeta que NO es un subdirectorio de dónde está tu proyecto? es decir: ¿E: \ ProjectX \ project.vcproj incluye la carpeta E: \ Common \ *. cs? –

+3

Casi funciona. Puedo ver el árbol de directorios y agregar varios archivos, pero no me permite agregar un directorio completo, incluidos los subárboles. – ManicBlowfish

54

También puede arrastrar y soltar la carpeta de Windows Explorer en su ventana de Visual Studio solución.

+9

Esto no funciona en mi instalación de VS 2010 en Vista Ultimate de 64 bits. –

+10

No, tampoco funciona en mi instalación de VS 2010 en Windows 7. –

+6

Confirmar que esto no funciona en VS 2010 (modo no administrador) también –

0

Por lo que puedo decir, la única manera de hacerlo en VS2010 es similar al método de arrastrar y soltar. Haga clic con el botón derecho en la solución a la que desea agregar un proyecto. El menú de la aplicación tendrá un elemento de agregar ... Al abrir eso, encuentra que una de las opciones es agregar un proyecto existente a la solución.

En el cuadro de diálogo que se abre, navegue hasta la carpeta que contiene el archivo de proyecto para la solución y selecciónela. VS, como parte de la importación de ese archivo de proyecto, también importará el directorio completo y, supongo que cualquier directorio subordinado que sea parte de ese proyecto.

Como esto requiere un archivo de proyecto existente, no será imposible importar un árbol de directorio hasta que ese árbol se haya convertido a un proyecto.

25

Copia & Pegar.

Para agregar una carpeta, todos los subdirectorios y archivos también podemos copiar y pegar. Por ejemplo podemos:

  1. clic derecho en Windows Explorer en la carpeta y copiar en la carpeta con muchos archivos y carpetas.

  2. Luego, en el Explorador de soluciones de Visual Studio, haga clic con el botón derecho en la carpeta de destino y haga clic en pegar.

  3. Opcional agregar a TFS; Luego, en la carpeta superior, haga clic derecho y regístrese en TFS para verificar todas las subcarpetas y archivos.

+0

Esto funcionó para mí, pero de arrastrar y soltar que no funcionó en vs14 y Windows 10 pro. –

+0

arrastrar y soltar puede no funcionar a menos que esté ejecutando VS como administrador – RThomas

13

Puede usar un enlace simbólico. Esto hace que la modificación del archivo en un proyecto lo modifique en el otro (ya que en realidad es el mismo archivo).

Para hacer esto:

  1. abierto prompt cmd como administrador
  2. MKLINK/d [proyecto actual nombre del directorio] [directorio en otro proyecto que debe apuntar a]

Esto tiene su inconvenientes y peligros, pero lo uso en ocasiones para bibliotecas duplicadas que necesitan nombres diferentes.

Editar para Anoop: Pasos para agregar a Visual Studio:

  1. Crear un enlace en la carpeta del proyecto siguiendo los pasos anteriores.
  2. En Visual Studio ... seleccione el proyecto en el Explorador de soluciones.
  3. En la parte superior de Solution Explorer ... haga clic en el botón Mostrar todos los archivos (puede que necesite hacer clic dos veces si ya está activo).
  4. El enlace ahora se mostrará en su proyecto ... haga clic con el botón derecho y seleccione Incluir en proyecto.

Estos son los pasos que sigo y funcionan para un par de proyectos diferentes.

+0

¡No funciona! los enlaces simbólicos no se reconocen como carpetas –

+1

@Anoop: He agregado pasos para mostrar cómo uso este método. Por favor inténtalo. – Edyn

+0

¡Está funcionando! Estaba intentando crear un acceso directo haciendo clic derecho en la carpeta, en lugar de usar el símbolo del sistema y, por lo tanto, no funcionó. Siguiendo los pasos descritos anteriormente se corrigió el problema. Gracias –

1

En Visual Studio 2013, no pude hacer que "Incluir en proyecto" funcionara al hacer clic con el botón derecho en una carpeta. Lo que funcionó fue expandir la carpeta, seleccionar todos los archivos y luego elegir "Incluir en proyecto". Fue muy tedioso ya que tiene que hacer cada carpeta una por una (pero al menos puede hacer todos los archivos en cada carpeta de una vez), y parece almacenar la ruta del archivo (puede ver esto al ver las propiedades en el archivo) y mirando la opción "Ruta relativa")

Espero utilizar esto para implementar algunos archivos de datos en un proyecto de Visual Studio Installer, y parece recoger los archivos incluidos y preservar sus rutas de acceso.

19

En Visual Studio 2015, esta es la forma de hacerlo.

Si quería incluir automáticamente todos los archivos descendientes por debajo de una carpeta específica:

<Content Include="Path\To\Folder\**" /> 

Esto puede ser restringido para incluir sólo los archivos dentro de la ruta especificada:

<Content Include="Path\To\Folder\*.*" /> 

O incluso sólo los archivos con una extensión especificada:

<Content Include="Path\To\Folder\*.jpg" > 

Referencia: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio

+2

yo encontramos este útil porque entonces podría incluir una única etiqueta para "copia siempre en la construcción", en lugar de tener que anotar cada archivo individual (como fue el caso en la respuesta aceptada) –

+2

OMI una de las respuestas más útiles aquí. – Sinjai

2

Para ampliar en Yuchen's answer, puede incluir archivos y rutas como un enlace. Esto no es lo mismo que agregar los elementos existentes porque no crea una copia adicional en la estructura de carpetas de su proyecto. Es útil si desea utilizar una carpeta/archivo canónico, etc. en muchos lugares diferentes, pero solo desea mantener una versión/copia de la misma.

Aquí es un ejemplo de lo que puede añadir a un archivo *.csproj para crear el enlace

<Compile Include="$(Codez)\z.Libraries\Common\Strings\RegexExtensions.cs"> 
    <Link>Helpers\RegexExtensions.cs</Link> 
</Compile> 

<Compile Include="..\..\z.Libraries\MoreLINQ\MoreLinq\ExceptBy.cs"> 
    <Link>Helpers\ExceptBy.cs</Link> 
</Compile> 

<Content Include="C:\Codez\Libs\Folder\OtherFolder\**\*.*"> 
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link> 
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
</Content> 

$(Codez) es una variable de entorno de Windows he definido, puede utilizar las variables de entorno integrados de la misma manera .

El último grupo de ejemplo es un grupo de archivos de contenido que necesito en el resultado final. Ver https://stackoverflow.com/a/11808911/492 y otras respuestas & enlaces allí para obtener más información al respecto.

Más información MSBuild en https://msdn.microsoft.com/en-us/library/bb629388.aspx

0

creo que he encontrado una manera de hacer esto con la Compilar Incluir = "\ Código ***. Cs" Lo que quería es incluir código de forma recursiva bajo mi carpeta de Código .

Aquí está el ejemplo del archivo de proyecto.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0" DefaultTargets="BuildTarget"> 
    <PropertyGroup> 
     <OutputType>Library</OutputType> 
    </PropertyGroup> 
    <PropertyGroup> 
     <StartupObject /> 
    </PropertyGroup> 
    <PropertyGroup> 
     <RootNamespace>Autogen</RootNamespace> 
    </PropertyGroup> 
    <ItemGroup> 
     <Compile Remove="@(Compile)" /> 
     <Compile Include=".\Code\**\*.cs" /> 
    </ItemGroup> 
    <Target Name="BuildTarget"> 
     <Message Text="Build selected" Importance="high"/> 
    </Target> 
</Project> 
Cuestiones relacionadas