Comment «ajouter un élément existant» à une structure de répertoires complète dans Visual Studio?

765

J'ai un ensemble de fichiers autonomes non affiliés à aucun projet C # qui résident dans une structure de répertoire imbriquée compliquée.

Je veux les ajouter dans ce format à un répertoire différent dans une application Web ASP.NET sur laquelle je travaille; tout en conservant la même structure. J'ai donc copié le dossier dans l'emplacement cible de mon projet et j'ai essayé d '«ajouter un élément existant» pour perdre la hiérarchie de dossiers précédente.

Habituellement, j'ai recréé les répertoires à la main, copiés sur une base individuelle, puis ajouté des éléments existants. Il y a simplement trop de répertoires / éléments dans ce cas.

Alors, comment ajoutez-vous des répertoires et des fichiers existants dans Visual Studio 2008?

Ian Patrick Hughes
la source
44
Le fait que cela ne soit pas évident pour la plupart des gens (y compris moi) est un triste témoignage de Visual Studio.
Pete Alvin
22
@Pete Alvin J'ai de nombreux témoignages tristes sur Visual Studio, mais je l'apprécie davantage maintenant que j'ai passé du temps avec certains des autres IDE.
Freek Nortier
4
Visual Studio n'est cependant pas parfait, j'ai utilisé à peu près tous les IDE disponibles. C'est le meilleur. Eclipse n'est même pas proche, Xcode est probablement le seul qui se rapproche.
user1127081
2
@ user1127081: Je dois appuyer cela. Visual Studio est assez loin d'être parfait, mais j'ai utilisé à peu près tous les autres IDE pour à peu près tous les développements et systèmes d'exploitation cibles et ils sont tous bien pire. Je dois également convenir que Xcode est clairement et de loin le meilleur du reste, mais il ne l'est devenu qu'après avoir beaucoup approuvé entre Xcode 3 et Xcode 4. Eclipse n'est qu'un cauchemar.
Kaiserludi

Réponses:

737

Faites glisser les fichiers / dossiers de l'Explorateur Windows vers l'Explorateur de solutions. Il les ajoutera tous. Notez que cela ne fonctionne pas si Visual Studio est en mode administrateur, car l'Explorateur Windows est un processus en mode utilisateur.

Darren Kopp
la source
42
Ça ne marche pas pour moi. Cela me donne juste l'icône d'une cible de largage invalide. Le spectacle tous les fichiers ci-dessous fonctionne parfaitement
Cine
115
Dans VS 2010, une fois le dossier obtenu par glisser, choisissez l'option Afficher tous les fichiers dans le projet. Les fichiers existent sous forme "fantôme", faites un clic droit sur le dossier et Inclure dans le projet. Ils seront ensuite ajoutés
John Ptacek
10
@JohnPtacek: Cela fonctionne dans un projet, mais pas dans la solution.
2
Cette réponse n'est pas valable pour VS2010 (au moins pour autant que je sache). La réponse de Tom le 7/10/12 était la meilleure solution pour moi dans VS2010
BLSully
8
Tuez explorer.exe à l'aide du gestionnaire de tâches, démarrez-le en tant qu'administrateur, puis vous pouvez faire glisser et déposer vers Visual Studio même s'il est exécuté en tant qu'administrateur.
xander
545

Activez "Afficher tous les fichiers" pour le projet spécifique (vous devrez peut-être appuyer sur "Actualiser" pour les voir) **.

Les dossiers / fichiers qui ne font pas partie de votre projet apparaissent légèrement "plus légers" dans l'arborescence du projet.

Faites un clic droit sur les dossiers / fichiers que vous souhaitez ajouter et cliquez sur "Inclure dans le projet" . Il ajoutera récursivement des dossiers / fichiers au projet.

** Ces boutons sont situés sur la mini barre d'outils de l'Explorateur de solutions.

** Assurez-vous que vous n'êtes PAS en mode débogage.

Brannon
la source
2
Il semble que cela ne fonctionne que pour les fichiers plus profonds que votre fichier de projet, si vous conservez votre fichier de projet dans un dossier seul, cela ne fonctionnera pas.
Danny Parker,
28
Cela ne fonctionne que dans des projets individuels, mais pas dans une solution.
7
Duh ... ce n'est pas là que vous êtes censé mettre des fichiers. Bien sûr, il ne trouvera pas de fichiers au-dessus de votre dossier racine.
Bluebaron
3
Cela ne fonctionnera que si vous souhaitez que les dossiers que vous ajoutez résident dans votre dossier de projet. Dans mon cas, je veux qu'ils soient ailleurs (partagés entre les projets). Dans XCode, faire glisser une structure de dossiers de n'importe quel emplacement dans la structure du projet préserve la structure du dossier au lieu de l'aplatir comme VS. On dirait que VS n'a pas de fonctionnalité ici.
Mattijs
9
astuce - assurez-vous que le projet est sélectionné, pas la solution - alors vous pouvez tout montrer!
niico
89

Dans l'Explorateur de solutions:

  1. Cliquez sur Afficher tous les fichiers (deuxième icône en partant de la gauche en haut de l'Explorateur de solutions).
  2. Recherchez le dossier que vous souhaitez ajouter.
  3. Faites un clic droit et sélectionnez "Inclure dans le projet"

Je l'utilise pour installer des modules complémentaires comme des éditeurs HTML et des navigateurs de fichiers tiers.

À M
la source
16
En quoi est-ce différent de la réponse de Brannon de 4 ans plus tôt?
ToolmakerSteve
7
Cela ne résout pas le problème d'origine qui concerne un dossier Solution . Il a également été précédemment couvert.
user2864740
@ToolmakerSteve: C'est différent en ce sens que c'est la même chose que la solution de Gant de ... 7 ans plus tôt. stackoverflow.com/questions/392473/…
Veverke
Recommande fortement cette solution car elle aide également lorsque des fichiers csproj conflictuels ont été archivés et tfs ignore les conflits et écrase
John Demetriou
6
+1. J'ai trouvé cette réponse plus utile que les autres car elle montre (relativement) clairement que Afficher tous les fichiers est une icône , pas une entrée dans le menu contextuel.
35

Je veux juste souligner que deux des solutions proposées précédemment,

  • Glisser-déposer depuis l'Explorateur Windows
  • Afficher tous les fichiers , puis les inclure dans le projet.

ne faites pas ce que la question demandait:

Inclure dans le projet tout en préservant la structure du répertoire .

Du moins pas dans mon cas (projet C ++ / CLI Visual Studio 2013 sur Windows 7).

Dans Visual Studio, une fois que vous êtes de retour dans la vue normale (pas Afficher tous les fichiers ), les fichiers que vous avez ajoutés sont tous répertoriés au niveau supérieur du projet.

Oui, sur le disque, ils résident toujours là où ils étaient, mais dans l'Explorateur de solutions, ils sont lâches.

Je n'ai trouvé aucun moyen de le contourner, sauf à recréer la structure de répertoires dans l'Explorateur de solutions, puis à ajouter des éléments existants au bon emplacement.

ILIA BROUDNO
la source
Je vois le même comportement, VS2010, c ++.
Radim Cernej
Certes, également dans Visual Studio 2010. Il n'ajoute même pas les fichiers sans structure de répertoires pour moi, juste le tout premier fichier dans cette structure de dossiers et pas de sous-dossiers.
Jonas
2
D'accord, cela diffère toujours. Je me demande comment un logiciel populaire et coûteux tel que VS peut manquer d'une telle fonctionnalité. Je trouve plutôt confus d'avoir deux structures différentes mais similaires dans l'explorateur de solutions et l'explorateur de fenêtres ...
Janis
12
Utiliser 2015 ici; ne conserve toujours pas la structure des dossiers. Étourdi.
Toby Deshane
À l'aide de 2015 Update 3, vient de réussir avec l'approche de Bannon et Tom. Tous les dossiers imbriqués sont entrés comme prévu.
John Hatton
22

Je n'ai pas immédiatement compris cela sur la base de ces descriptions, mais voici ce sur quoi je suis finalement tombé:

  1. Activez "Afficher tous les fichiers" - il y a une icône dans la barre d'outils de l'Explorateur de solutions
  2. À l'aide de l'Explorateur Windows (et non de l'explorateur de solutions), déplacez vos fichiers dans la structure de répertoires où vous souhaitez qu'ils résident.
  3. Cliquez sur "Actualiser" également dans la barre d'outils de l'Explorateur de solutions
  4. Les fichiers que vous avez déplacés doivent être visibles "fantômes" dans l'arborescence de l'Explorateur de solutions où vous les avez placés
  5. Faites un clic droit sur vos fichiers ou dossiers fantômes et cliquez sur "Inclure dans le projet". Tout le contenu d'un dossier sera inclus
Don Rule
la source
2
Il s'agit d'un dossier de solution, pas d'un projet.
StingyJack
Mise à jour: il n'y a pas de bouton "refres" dans VS2019
Liu Hao
16

Ci-dessous est l'icône pour le " Show All Files ", juste pour une référence facile.

Entrez la description de l'image ici

Marvin Glenn Lacuna
la source
13

Entrez la description de l'image ici

Cliquez ci-dessus dans le cercle rouge. Votre dossier apparaîtra dans l'Explorateur de solutions.

Faites un clic droit sur votre dossier -> Inclure dans le projet .

Manoj Kalluri
la source
9

Vous pouvez changer le XML de votre projet pour ajouter automatiquement des sous-dossiers et des structures existants dans votre projet comme "node_modules" de NPM:

C'est pour les anciennes versions de MSBuild / Visual Studio

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

Pour les versions actuelles de MSBuild / Visual Studio:

Il suffit de le mettre dans les nœuds du xml:

<Project>
</Project>

Dans ce cas, remplacez simplement $ (MSBuildProjectDirectory) \ node_modules par le nom de votre dossier.

Bjego
la source
Oui, parfois, la modification manuelle du fichier proj *. * Vous mènera où vous voulez aller.
Chris O
1
Vous dites donc que quelqu'un pourrait créer un plugin pour faire cela par lots? Parce que je ne recrée pas une structure de dossiers avec des dizaines de dossiers à la main dans un xml
Spectraljump
Exactement ce que je cherchais
Vitaliy Kalinin
5

Vous devez mettre la structure de votre répertoire dans le répertoire de votre projet. Et puis cliquez sur l'icône "Afficher tous les fichiers" en haut de la boîte à outils de l'Explorateur de solutions. Après cela, le répertoire ajouté sera affiché. Vous devrez ensuite sélectionner ce répertoire, faire un clic droit et choisir «Inclure dans le projet».

nader
la source
1
C'est à peu près ce que la réponse acceptée suggère et l'un des commentaires en dessous.
Kev
4

C'est ce que je fais:

  1. Faites un clic droit sur la solution -> Ajouter -> Site Web existant ...
  2. Choisissez le dossier où se trouve votre site Web. Juste le dossier racine du site.

Ensuite, tout sera ajouté sur votre solution, des dossiers aux fichiers et des fichiers à l'intérieur de ces dossiers.

Willy David Jr
la source
4

Enfin, Visual Studio 2017 permet à l'utilisateur d'importer un répertoire entier en un seul clic. Visual Studio 2017 dispose d'une nouvelle fonctionnalité "Ouvrir le dossier " qui permet d'ouvrir le dossier entier, même sans avoir besoin de l'enregistrer comme solution. Le code source peut être importé à l'aide des méthodes suivantes.

  1. Fichier de menu → Ouvrir → * Dossier ( Ctrl+ Shift+ O)
  2. devenv.exe <source folder>

Il prend même en charge la création et le débogage de projets CMake.

Apportez votre base de code C ++ dans Visual Studio avec «Open Folder»

Naren
la source
4

Il y a maintenant une extension open-source sur le marché qui semble faire ce que le PO demandait:

Dossier vers dossier de solution

dossier vers dossier de solution

S'il ne fait pas exactement ce que vous voulez, le code est disponible, vous pouvez donc le modifier en fonction de votre scénario.

HTH

Yann Duran
la source
L'extension n'a pas fonctionné pour moi sur la version VS 15.9.13 2017
Mateusz Migała
2

Une astuce intéressante que j'ai découverte est que si vous allez dans "Ajouter existant ...", vous pouvez faire glisser le dossier de la boîte de dialogue ouverte vers votre solution.

J'ai mon Visual Studio à ouvrir automatiquement en mode administrateur, donc c'était une bonne solution de contournement pour moi car je ne voulais pas devoir l'annuler juste pour que cela fonctionne.

Yatrix
la source
1

Ce qui a fonctionné pour moi a été de faire glisser le dossier dans Visual Studio, puis de cliquer avec le bouton droit sur le dossier et de sélectionner "Ouvrir le dossier dans l'explorateur de fichiers". Sélectionnez-les tous et faites-les glisser dans le dossier de Visual Studio.

pseudo
la source
0

Dans Windows 7, vous pouvez effectuer les opérations suivantes:

Faites un clic droit sur votre projet et sélectionnez "Ajouter-> Élément existant". Dans la boîte de dialogue qui apparaît, accédez à la racine du répertoire que vous souhaitez ajouter. Dans le coin supérieur droit, vous avez un champ de recherche. Tapez *.csou *.cpp, quel que soit le type de fichiers que vous souhaitez ajouter. Une fois la recherche terminée, sélectionnez tous les fichiers, cliquez sur Ajouter et attendez un moment ...

user1395598
la source
5
Cela ne maintient pas la structure du répertoire - il place simplement tout dans le dossier où vous avez cliqué sur ajouter.
Marc
0

Le moyen le plus propre que j'ai trouvé pour ce faire est de créer un nouveau projet de bibliothèque de classes dans le dossier cible et de rediriger toutes ses sorties de génération ailleurs. Il laisse toujours un fichier .csproj dans ce dossier, mais il vous permet de le voir dans Visual Studio et de choisir les fichiers à inclure dans votre projet.

Jason Kester
la source
-3

Il est ennuyeux que Visual Studio ne prenne pas cela en charge de manière native, mais CMake pourrait générer le projet Visual Studio en guise de solution.

En dehors de cela, utilisez simplement Qt Creator. Il peut ensuite exporter un projet Visual Studio.

lama12345
la source