913 votes

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

Le problème est vraiment simple. 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 puis-je inclure tous les dossiers et fichiers dans un projet en conservant la structure ?

Si je "Ajoute un fichier existant" sur un dossier nommé Services et que je navigue vers un fichier dans la structure du répertoire Services > AccountManagement > CreateAccount.cs, il apparaît dans Visual Studio comme suit : Services > CreateAccount.cs. Je ne veux pas de cela.

J'ai déjà mis au point toute une structure de répertoires, car j'imite les développeurs de nos clients qui utilisent la même structure pour l'organisation. Comment puis-je ajouter tous les dossiers et fichiers au projet dans Visual Studio ? Ou dois-je faire ce que font la plupart des utilisateurs de Microsoft, à savoir "faire avec" et recréer chaque dossier dans Visual Studio ?

0 votes

17voto

CAD bloke Points 2986

Pour développer La réponse de Yuchen Dans le cas d'un lien, vous pouvez inclure des fichiers et des chemins d'accès en tant que 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 des dossiers de votre projet. C'est utile si vous souhaitez qu'un dossier/fichier canonique soit utilisé dans de nombreux endroits différents, mais que vous ne voulez en conserver qu'une seule version/copie.

Voici un exemple de ce que l'on peut ajouter à une *.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 groupe d'exemples est un ensemble de fichiers de contenu dont j'ai besoin dans le résultat final. Voir https://stackoverflow.com/a/11808911/492 et d'autres réponses et liens pour en savoir plus.

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

16voto

Dans Visual Studio 2017, vous basculez entre Vue de la solution y Vue des dossiers d'avant en arrière. Je pense que c'est une meilleure option, car cela permet de garder la solution plus propre. Je l'utilise pour éditer les fichiers .gitignore, .md, etc.

Solution View and Folder View

9 votes

La question porte sur la manière d'ajouter un dossier existant à la solution, et pas seulement sur la manière de visualiser les dossiers.

1 votes

C'est une très bonne option pour voir la structure réelle, pour ouvrir un dossier dans l'explorateur de fichiers, etc. Mais malheureusement, vous ne pouvez pas ajouter une arborescence de dossiers existante à partir de la vue des dossiers. Cela n'est possible que dans la vue de la solution, comme Gant l'a décrit.

4voto

RJ Thompson Points 121

Je pense avoir trouvé un moyen de le faire avec l'option Compile Include=". \Code ***.cs" Ce que je voulais, c'est inclure du 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>

2voto

Malvineous Points 2416

Dans Visual Studio 2013, je n'ai pas réussi à faire fonctionner l'option "Inclure dans le projet" en cliquant avec le bouton droit de la souris sur un dossier. Ce qui fonctionnait, c'était de développer le dossier, de sélectionner tous les fichiers puis de choisir "Inclure dans le projet". C'était assez fastidieux car vous devez faire chaque dossier un par un (mais au moins vous pouvez faire tous les fichiers de chaque dossier en une seule fois), et il semble stocker le chemin du fichier (vous pouvez le voir en affichant les propriétés sur le 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 qu'il récupère les fichiers inclus et préserve leurs chemins.

2voto

Stephen Kennedy Points 1458

Visual Studio 2017 et les versions plus récentes prennent en charge une nouvelle fonction légère .csproj qui est désormais connu sous le nom de "format SDK". L'un des nombreux avantages de ce format est qu'au lieu de contenir une liste de fichiers et de dossiers qui sont inclus les fichiers sont inclus par défaut. Ainsi, avec ce nouveau format, vos fichiers et dossiers - ajoutés dans l'Explorateur ou en ligne de commande - seront repris automatiquement !

Le format du SDK .csproj fichier travaille actuellement sur les types de projets suivants :

  • Projets de bibliothèque de classe

  • Applications de la console

  • Applications web ASP.NET Core

  • Projets .NET Core de tout type

Pour utiliser le nouveau format, créez un nouveau projet .NET Core ou .NET Standard. Étant donné que 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 du framework de votre choix (le format de projet nouveau style peut être modifié à l'intérieur de 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>

Pour en savoir plus :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X