web-dev-qa-db-fra.com

Comment ajouter une arborescence de répertoires existante à un projet dans Visual Studio?

Le problème est simple, vraiment. Au lieu de créer des dossiers dans Visual Studio, je crée une structure de répertoires pour mon projet sur le système de fichiers. Comment inclure tous les dossiers et fichiers d'un projet en conservant la structure?

Si je "Ajouter un fichier existant" sur un dossier nommé Services et naviguer vers un fichier dans la structure de répertoires .. Services> Gestion du compte> CreateAccount.cs, il apparaît dans Visual Studio comme suit: Services> CreateAccount.cs. Je ne veux pas ça.

J'ai déjà élaboré une structure de répertoires complète, car je mime les développeurs de nos clients en utilisant la même structure pour l'organisation. Comment ajouter tous les dossiers et fichiers au projet dans Visual Studio? Ou dois-je faire ce que la plupart des utilisateurs de Microsoft font et "supporter" et recréer chaque dossier via Visual Studio?

675
Brian Leahy

Vous devez mettre votre structure de répertoire dans le répertoire de votre projet. Cliquez ensuite sur "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, cliquer avec le bouton droit de la souris et choisir "Inclure dans le projet".

 enter image description here

 enter image description here

1183
Gant

Vous pouvez également faire glisser le dossier de Explorateur Windows dans la fenêtre de votre solution Visual Studio.

63
Todd Smith

Voici comment procéder dans Visual Studio 2015. 

Si vous souhaitez inclure automatiquement tous les fichiers descendants sous un dossier spécifique:

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

Cela peut être limité pour inclure uniquement les fichiers dans le chemin spécifié:

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

Ou même seulement des fichiers avec une extension spécifiée:

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

Référence: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio

34
Yuchen Zhong

Copier coller

Pour ajouter un dossier, tous les sous-répertoires et fichiers, vous pouvez également copier et coller. Par exemple, nous pouvons: 

  1. Cliquez avec le bouton droit de la souris sur l'Explorateur Windows sur le dossier et Copiez-le sur le dossier contenant de nombreux fichiers et dossiers. 

  2. Puis, dans Visual Studio Solution Explorer, cliquez avec le bouton droit sur le dossier de destination, puis cliquez sur Coller. 

  3. Ajout facultatif à TFS; Puis, dans le dossier supérieur, cliquez avec le bouton droit de la souris et enregistrez-vous dans TFS pour archiver tous les sous-dossiers et fichiers. 

28
Catto

Vous pouvez utiliser un lien symbolique. Cela permet de modifier le fichier dans un projet et de le modifier dans l'autre (car il s'agit en fait du même fichier).

Pour faire ça:

  1. Ouvrez l'invite cmd en tant qu'administrateur 
  2. mklink/d [nom du répertoire du projet actuel] [répertoire dans un autre projet auquel il devrait pointer]

Cela présente des inconvénients et des pièges, mais je l’utilise parfois pour les bibliothèques en double qui nécessitent des noms différents.

Modifiez pour Anoop: Étapes à ajouter à Visual Studio:

  1. Créez un lien dans le dossier du projet en suivant les étapes ci-dessus.
  2. Dans Visual Studio ... sélectionnez un projet dans l'Explorateur de solutions.
  3. En haut de l'Explorateur de solutions ... cliquez sur le bouton Afficher tous les fichiers (vous devrez peut-être cliquer deux fois dessus si vous êtes déjà actif).
  4. Le lien apparaîtra maintenant dans votre projet ... faites un clic droit et choisissez Inclure dans le projet.

Ce sont les étapes que je suis et travaille pour un couple de projets différents.

13
Edyn

Pour développer La réponse de Yuchen , vous pouvez inclure des fichiers et des chemins sous forme de lien. Ce n'est pas la même chose que d'ajouter les éléments existants car cela ne crée pas de copie supplémentaire dans la structure de dossiers de votre projet. C'est utile si vous voulez utiliser un dossier/fichier canonique, etc., dans beaucoup d'endroits différents, mais que vous ne voulez conserver qu'une version/copie de celui-ci.

Voici un exemple de ce que vous pouvez ajouter à un fichier *.csproj pour créer le lien.

<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) est une variable d’environnement Windows que j’ai définie, vous pouvez utiliser les variables d’environnement intégrées de la même manière. 

Le dernier exemple est un groupe de fichiers de contenu dont j'ai besoin dans la sortie finale. Voir https://stackoverflow.com/a/11808911/492 et d'autres réponses et liens ici pour plus d'informations. 

Plus d'informations sur MSBuild à https://msdn.Microsoft.com/en-us/library/bb629388.aspx

7
CAD bloke

Dans Visual Studio 2017, vous alternez entre Solution View et Folder View. Je pense que c'est une meilleure option, car cela gardera la solution plus propre. J'utilise cela pour éditer des fichiers .gitignore, .md, etc.

 Solution View and Folder View

6
Siavash Mortazavi

Je pense avoir trouvé un moyen de faire cela avec Compile Include = ".\Code ***. Cs" Ce que je voulais, c'est inclure le code de manière récursive dans mon dossier Code.

Voici l'exemple de fichier de projet.

<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>
2
RJ Thompson

Dans Visual Studio 2013, "Inclure dans le projet" ne fonctionnait pas lorsque vous cliquez avec le bouton droit sur un dossier. Qu'est-ce qui a fonctionné est d'élargir le dossier, en sélectionnant tous les fichiers, puis en choisissant "Inclure dans le projet". C'était assez fastidieux, car vous devez créer chaque dossier un à un (mais au moins, vous pouvez créer tous les fichiers d'un dossier à la fois) et il apparaît que le chemin du fichier est enregistré (vous pouvez le voir en affichant les propriétés du fichier et en regardant l'option "Chemin relatif".)

J'espère pouvoir l'utiliser pour déployer certains fichiers de données dans un projet Visual Studio Installer, et il semble que les fichiers inclus soient conservés et que leurs chemins soient préservés.

1
Malvineous

Autant que je sache, le seul moyen de faire cela dans VS2010 s'apparente à la méthode du glisser-déposer. Cliquez avec le bouton droit sur la solution à laquelle vous souhaitez ajouter un projet. Le menu de l'application comportera un élément add .... En ouvrant cela, vous constatez qu’une des options consiste à ajouter un projet existant à la solution. 

Dans la boîte de dialogue qui s'ouvre, accédez au dossier contenant le fichier de projet de la solution et sélectionnez-le. Lors de l'importation de ce fichier de projet, VS importera également l'intégralité du répertoire et, je suppose, tous les répertoires subordonnés faisant partie de ce projet.

Comme cela nécessite un fichier de projet existant, il ne sera pas impossible d'importer une arborescence de répertoires tant que cette arborescence n'aura pas été convertie en projet.

0
Fenton Smith

Visual Studio 2017 et les versions plus récentes prennent en charge un nouveau format léger .csproj, connu sous le nom de "format SDK". Un des nombreux avantages de ce format est qu'au lieu de contenir une liste de fichiers et de dossiers inclus , les fichiers sont des caractères génériques inclus par défaut. Par conséquent, avec ce nouveau format, vos fichiers et dossiers - ajoutés dans Explorer ou sur la ligne de commande - seront automatiquement récupérés!

Le fichier SDK au format .csproj _ fonctionne actuellement avec les types de projet suivants :

  • Projets de bibliothèque de classe

  • Applications de la console

  • Applications Web ASP.NET Core

  • Projets de .NET Core de tout type

Pour utiliser le nouveau format, créez un nouveau projet .NET Core ou .NET Standard. Comme les modèles n'ont pas été mis à jour pour le .NET Framework complet, même dans Visual Studio 2019, pour créer une bibliothèque de classes .NET, choisissez le modèle .NET Standard Library, puis modifiez le fichier de projet pour cibler la version d'infrastructure de votre choix ( le nouveau format de projet de style peut être modifié dans Visual Studio - il suffit de cliquer avec le bouton droit de la souris sur le projet dans l'explorateur de solutions et de sélectionner "Modifier le fichier de projet"). Par exemple:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>
</Project>

Lectures complémentaires:

0
Stephen Kennedy

Je n'ai trouvé aucune réponse à ma satisfaction, alors je me suis débrouillé.

Voici la réponse à votre question si vous souhaitez ajouter des codes sources externes à votre projet et ne souhaitez pas copier l'intégralité des codes. J'ai beaucoup de dépendances sur d'autres gits et ils sont mis à jour toutes les heures, si pas minutieusement. Je ne peux pas copier toutes les heures pour synchroniser. Voici ce que tu dois faire.

Supposons que ceci soit une structure:

/ root/projA/src

/ root/projA/includes

/ root/projB/src

/ root/projB/includes

/ root/yourProj/src

/ root/yourProj/includes

  1. Commencez votre solution VS.
  2. Cliquez avec le bouton droit sur le nom du projet juste en dessous de la solution. 
  3. Cliquez ensuite sur "Ajouter", "Nouveau filtre", entrez le nom "projA" pour projA.
  4. Faites un clic droit sur le "projA", cliquez sur "Ajouter", "Nouveau filtre", entrez le nom "src"
  5. Faites un clic droit sur le "projA", cliquez sur "Ajouter", "Nouveau filtre", entrez le nom "comprend"
  6. Cliquez avec le bouton droit de la souris sur "projA"/"src", cliquez sur "Ajouter", "Élément existant", puis accédez au répertoire/root/projA/src pour ajouter tous les codes sources ou un par un pour ceux que vous souhaitez.
  7. Faites de même pour "projA"/"includes"
  8. Faites de même pour projB . Maintenant, les projets externes/existants en dehors du vôtre sont présents dans votre solution/projet. Le VS les compilera ensemble . Voici une astuce. Étant donné que les fichiers projA et projB sont des dossiers virtuels dans votre projet, le compilateur peut ne pas trouver les fichiers projA/includes. 

  9. S'il ne trouve pas le projet/includes, cliquez avec le bouton droit de la souris sur le projet et sélectionnez "Propriétés".

  10. Accédez à "C/C++". Éditez "Répertoires d'inclusion supplémentaires", ajoutez votre projA/include en tant que tel "../projA/includes", chemin relatif.

Une mise en garde, s'il existe des fichiers d'inclusion/en-tête dupliqués, le "exclure du projet" sur le "fichier d'en-tête" ne fonctionne pas vraiment. C'est un bug dans VS.

0
davidj