Como "Adicionar item existente" a uma estrutura de diretórios inteira no Visual Studio?


765

Eu tenho um conjunto independente de arquivos não afiliados a nenhum projeto C # que residam em uma estrutura de diretório aninhada complicada.

Quero adicioná-los nesse formato a um diretório diferente em um aplicativo Web do ASP.NET em que estou trabalhando; mantendo a mesma estrutura. Então, copiei a pasta no local de destino do meu projeto e tentei "adicionar item existente" apenas para perder a hierarquia de pastas anterior.

Geralmente, recriei os diretórios manualmente, copiei individualmente e depois adicionei itens existentes. Existem simplesmente muitos diretórios / itens neste caso.

Então, como você adiciona diretórios e arquivos existentes no Visual Studio 2008?


44
O fato de isso não ser óbvio para a maioria das pessoas (inclusive eu) é um triste testamento sobre o Visual Studio.
Pete Alvin

22
@Pete Alvin Eu tenho muitos testemunhos tristes sobre o Visual Studio, mas agradeço mais agora que passei algum tempo com alguns dos outros IDE por aí.
Freek Nortier

4
No entanto, o Visual Studio não é perfeito, usei quase todos os IDE disponíveis. Se é o melhor. O Eclipse não chega nem perto, o Xcode é provavelmente o único que chega perto.
user1127081

2
@ user1127081: Eu tenho que secundar isso. O Visual Studio está longe de ser perfeito, mas eu usei praticamente todos os outros IDE para praticamente todos os SOs de desenvolvimento e destino por aí, e eles são muito piores. Eu também tenho que concordar que o Xcode é claramente e de longe o melhor do resto, mas isso só aconteceu depois de ter aprovado muito entre o Xcode 3 e o Xcode 4. O Eclipse é apenas um pesadelo.
Kaiserludi

Respostas:


737

Arraste os arquivos / pastas do Windows Explorer para o Solution Explorer. Ele irá adicionar todos eles. Observe que isso não funciona se o Visual Studio estiver no modo de administrador, porque o Windows Explorer é um processo no modo de usuário.


42
Isso não funciona para mim. Apenas me fornece o ícone de um alvo de recebimento inválido. O show de todos os arquivos abaixo funciona perfeitamente
Cine

115
No VS 2010, após arrastar a pasta, escolha a opção Mostrar todos os arquivos no projeto. Os arquivos existem no formato "fantasma", clique com o botão direito na pasta e Incluir no Projeto. Em seguida, serão adicionados
John Ptacek

10
@ JohnPtacek: Isso funciona em um projeto, mas não na solução.

2
Esta resposta não é válida para o VS2010 (pelo menos até onde eu sei). A resposta de Tom em 10/10/12 foi a melhor solução para mim no VS2010
BLSully

8
Mate o explorer.exe usando o gerenciador de tarefas, inicie-o como administrador e, em seguida, você pode arrastar e soltar no Visual Studio, mesmo que esteja sendo executado como administrador.
Xander

545

Ative "Mostrar todos os arquivos" para o projeto específico (pode ser necessário clicar em "Atualizar" para vê-los) **.

As pastas / arquivos que não fazem parte do seu projeto parecem um pouco "mais leves" na árvore do projeto.

Clique com o botão direito do mouse nas pastas / arquivos que você deseja adicionar e clique em "Incluir no projeto" . Ele adicionará recursivamente pastas / arquivos ao projeto.

** Esses botões estão localizados na barra de ferramentas do mini Solution Explorer.

** Verifique se você NÃO está no modo de depuração.


2
Parece que isso funciona apenas para arquivos mais profundos que o arquivo do projeto; se você mantiver o arquivo do projeto em uma pasta por conta própria, isso não funcionará.
Danny Parker

28
Isso funciona apenas em projetos individuais, mas não em uma solução.

7
Duh ... não é onde você deve colocar arquivos. Obviamente, ele não encontrará arquivos acima da pasta raiz.
Bluebaron

3
Isso funcionará apenas quando você desejar que as pastas adicionadas residam na pasta do projeto. No meu caso, quero que eles estejam em outro lugar (compartilhados entre projetos). No XCode, arrastar uma estrutura de pastas de qualquer local para a estrutura do projeto preserva a estrutura da pasta em vez de achatá-la como o VS. Parece que o VS não possui um recurso aqui.
213138 Mattijs

9
dica - verifique se o projeto está selecionado, não a solução - então você pode mostrar tudo!
Niico 29/12

89

No Gerenciador de Soluções:

  1. Clique em Mostrar todos os arquivos (segundo ícone da esquerda na parte superior do Solution Explorer).
  2. Localize a pasta que você deseja adicionar.
  3. Clique com o botão direito e selecione "Incluir no projeto"

Eu uso isso para instalar complementos como editores de HTML e navegadores de arquivos de terceiros.


16
Como isso é diferente da resposta de Brannon de 4 anos antes?
Home

7
Isso não resolve o problema original, que é uma pasta de soluções . Também foi coberto anteriormente.
user2864740

@ToolmakerSteve: É diferente, pois é a mesma solução de Gant de ... 7 anos antes. stackoverflow.com/questions/392473/…
Veverke 13/04/2015

Recomendo esta solução, uma vez que também ajuda quando conflitantes arquivos csproj foram checar e tfs ignora os conflitos e as substituições
John Demetriou

6
+1. Eu achei esta resposta mais útil que as outras, porque deixa (relativamente) claro que Mostrar todos os arquivos é um ícone , não uma entrada no menu de contexto.

35

Eu só quero ressaltar que duas das soluções oferecidas anteriormente,

  • Arraste e solte no Windows Explorer
  • Mostrar todos os arquivos e, em seguida, incluir no projeto.

não faça o que a pergunta pediu:

Incluir no projeto enquanto preserva a estrutura de diretórios .

Pelo menos não no meu caso (projeto C ++ / CLI Visual Studio 2013 no Windows 7).

No Visual Studio, quando você voltar à exibição normal (não Mostrar todos os arquivos ), os arquivos adicionados serão todos listados no nível superior do projeto.

Sim, no disco eles ainda residem onde estavam, mas no Solution Explorer eles estão soltos.

Não encontrei uma maneira de contornar isso, exceto recriar a estrutura de diretórios no Solution Explorer e, em seguida, adicionar Adicionar itens existentes no local certo.


Eu vejo o mesmo comportamento, VS2010, c ++.
Radim Cernej

É verdade, também no Visual Studio 2010. Ele nem adiciona os arquivos sem uma estrutura de diretórios para mim, apenas o primeiro arquivo nessa estrutura de pastas e não nenhuma subpasta.
Jonas

2
Concordou, ainda difere. Gostaria de saber como um software popular e caro, como o VS, pode não ter esse recurso. Considero que é um pouco confuso ter duas estruturas diferentes mas semelhantes na solução Explorer e Windows Explorer ...
Janis

12
Usando 2015 aqui; ainda não preserva a estrutura da pasta. Atordoado.
precisa saber é o seguinte

Usando a Atualização 3 de 2015, apenas obtivemos sucesso com a abordagem de Bannon e Tom. Todas as pastas aninhadas chegaram como esperado.
John Hatton

22

Eu não entendi imediatamente isso com base nessas descrições, mas aqui está o que eu finalmente descobri:

  1. Ative "Mostrar todos os arquivos" - há um ícone na barra de ferramentas do Solution Explorer
  2. Usando o Windows Explorer (não o Solution Explorer), mova seus arquivos para a estrutura de diretórios em que deseja que eles residam
  3. Clique em "Atualizar" também na barra de ferramentas do Solution Explorer
  4. Os arquivos que você moveu devem estar visíveis "fantasma" na estrutura em árvore do Solution Explorer onde os colocou
  5. Clique com o botão direito do mouse nos seus arquivos ou pastas fantasmas e clique em "Incluir no projeto". Todo o conteúdo de uma pasta será incluído

2
Isto é para uma pasta de solução, não para um projeto.
precisa saber é o seguinte

Atualização: Não há botão "atualiza" no VS2019
Liu Hao


13

Digite a descrição da imagem aqui

Clique acima no círculo vermelho. Sua pasta aparecerá no Gerenciador de Soluções.

Clique com o botão direito na sua pasta -> Incluir no projeto .


9

Você pode alterar o XML do seu projeto para adicionar subpastas e estruturas existentes automaticamente ao seu projeto, como "node_modules" do NPM:

Isto é para versões mais antigas do MSBuild / Visual Studio

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

Para as versões atuais do MSBuild / Visual Studio:

Basta colocá-lo nos nós do xml:

<Project>
</Project>

Nesse caso, basta alterar $ (MSBuildProjectDirectory) \ node_modules para o nome da sua pasta.


Sim, às vezes a edição manual do arquivo *. * Proj leva você aonde deseja ir.
19416 Chris O

1
Então você está dizendo que alguém poderia criar um plug-in para fazer isso em lote? Porque eu não estou recriando uma estrutura de pastas com dezenas de pastas manualmente em um xml
Spectraljump

Exatamente o que eu estava procurando
Vitaliy Kalinin

5

Você precisa colocar sua estrutura de diretórios no diretório do projeto. E, em seguida, clique no ícone "Mostrar todos os arquivos" na parte superior da caixa de ferramentas do Solution Explorer. Depois disso, o diretório adicionado será exibido. Você precisará selecionar esse diretório, clicar com o botão direito do mouse e escolher "Incluir no projeto".


1
Isso é basicamente o que a resposta aceita sugere e um dos comentários abaixo.
Kev

4

Isto é o que eu faço:

  1. Clique com o botão direito do mouse na solução -> Adicionar -> Site Existente ...
  2. Escolha a pasta onde está o seu site. Apenas a pasta raiz do site.

Em seguida, tudo será adicionado à sua solução, de pastas a arquivos e arquivos dentro dessas pastas.


4

Por fim, o Visual Studio 2017 permite ao usuário importar um diretório inteiro com um único clique. O Visual Studio 2017 possui uma nova funcionalidade "Abrir pasta " que permite abrir a pasta inteira, mesmo sem a necessidade de salvá-la como solução. O código-fonte pode ser importado usando os seguintes métodos.

  1. Arquivo de menu → Abrir → * Pasta ( Ctrl+ Shift+ O)
  2. devenv.exe <source folder>

Ele também suporta a criação e depuração de projetos CMake.

Traga sua base de código C ++ para o Visual Studio com "Abrir pasta"


4

Agora existe uma extensão de código aberto no Marketplace que parece fazer o que o OP estava pedindo:

Pasta na pasta Solução

pasta para pasta de solução

Se ele não fizer exatamente o que você deseja, o código estará disponível, para que você possa modificá-lo para se adequar ao seu cenário.

HTH


A extensão não funcionou para mim na versão VS 15.9.13 2017
Mateusz Migała

2

Um truque interessante que descobri é que, se você for para "Adicionar existente ...", poderá arrastar a pasta da caixa de diálogo aberta para a sua solução.

Eu tenho o meu Visual Studio para abrir automaticamente no Modo de administrador, portanto, essa foi uma boa solução para mim, pois não queria desfazer isso apenas para que isso funcionasse.


1

O que funcionou para mim foi arrastar a pasta para o Visual Studio, clicar com o botão direito do mouse na pasta e selecionar "Abrir Pasta no Explorador de Arquivos". Em seguida, selecione tudo e arraste-os para a pasta no Visual Studio.


0

No Windows 7, você pode fazer o seguinte:

Clique com o botão direito do mouse no seu projeto e selecione "Adicionar-> Item Existente". Na caixa de diálogo exibida, navegue até a raiz do diretório que você deseja adicionar. No canto superior direito, você tem uma caixa de pesquisa. Digite *.csou *.cpp, qualquer que seja o tipo de arquivo que você deseja adicionar. Depois que a pesquisa terminar, selecione todos os arquivos, clique em Adicionar e aguarde um pouco ...


5
Isso não mantém a estrutura de diretórios - apenas coloca tudo na pasta em que você clicou em adicionar.
Marc

0

A maneira mais limpa que encontrei para fazer isso é criar um novo projeto de Biblioteca de Classes na pasta de destino e redirecionar toda a sua saída de compilação para outro lugar. Ele ainda deixa um arquivo .csproj nessa pasta, mas permite vê-lo no Visual Studio e escolher quais arquivos incluir no seu projeto.


-3

É irritante que o Visual Studio não suporte isso nativamente, mas o CMake pode gerar o projeto do Visual Studio como uma solução alternativa.

Fora isso, basta usar o Qt Creator. Em seguida, ele pode exportar um projeto do Visual Studio.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.