136 votes

"Ajouter comme lien" pour les dossiers dans les projets Visual Studio

Dans Visual Studio, nous pouvons "Ajouter comme lien" pour ajouter un lien vers un fichier dans un autre projet de la solution.

Existe-t-il un moyen de faire cela pour des dossiers entiers, de sorte qu'un dossier entier du projet A soit visible dans le projet B, sans qu'il soit nécessaire de créer manuellement un lien vers les nouveaux éléments de ce dossier ?

152voto

mo. Points 1781

Comme cette blogpost déclaré, c'est possible.

<ItemGroup>
    <Compile Include="any_abs_or_rel_path\**\*.*">
        <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
</ItemGroup>

Mais attention, les fichiers ne seront pas copiés.

23 votes

+1. Vous pouvez également utiliser <Content ...> et ajouter <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory‌​> pour que Visual Studio copie les ressources lors de la construction.

0 votes

Après avoir ajouté ceci à mon projet, VS 2010 a copié les fichiers référencés dans le dossier de mon projet. Ce n'est pas du tout ce que je voulais. Est-il possible de faire en sorte qu'il ajoute simplement les références sans copier les fichiers ?

9 votes

Essayez de l'utiliser : <None>...</None> au lieu de <Compile>...</Compile> . Mais je pense qu'il copiera ces fichiers de toute façon, même VisualStudio le fait avec des fichiers liés.

127voto

mt_serg Points 1190

Dans VS2012 et les versions ultérieures, vous pouvez faire glisser un dossier vers un autre projet avec alt touche enfoncée. C'est la même chose que d'ajouter chaque fichier comme lien manuellement mais plus rapidement.

upd : Envisagez d'utiliser Projets partagés si vous utilisez VS2013 mise à jour 2 (avec Gestionnaire de référence des projets partagés ) ou VS2015.

1 votes

Dans VS2010, cette opération copiera les fichiers et les répertoires au lieu de les ajouter comme liens, créant ainsi des doublons indésirables.

3 votes

Note : le dossier doit être glissé à partir de l'explorateur Windows (et non d'une autre instance de visual studio). De plus, il doit s'agir d'un glisser-déposer par un clic gauche, et non par un clic droit. Fonctionne très bien dans VS2012.

11 votes

Je pense que cela crée juste des liens vers tous les fichiers du dossier des sources, pas un lien vers le dossier lui-même. Cela signifie que si vous ajoutez un fichier dans le dossier des sources, il ne sera pas automatiquement lié.

39voto

Chad Points 131

Un ajout à la réponse de mo. et le commentaire de Marcus, si vous liez des éléments de contenu, vous devrez inclure l'extension du fichier :

<ItemGroup>
  <Compile Include="any_abs_or_rel_path\**\*.*">
    <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Compile>
</ItemGroup>

0 votes

Qu'est-ce que c'est ? <Compile ... dans ce domaine. Dans mon cas, j'ai besoin de faire référence .ts les fichiers de mon nouveau projet. comment le faire. merci !

26voto

Adam Points 918

En ce qui concerne la partie de la requête originale qui consiste à faire apparaître un dossier lié dans l'IDE, il est possible d'y parvenir de manière à ce qu'il y ait un dossier dans l'explorateur de solutions avec tous les fichiers liés à l'intérieur, au lieu que tous les fichiers apparaissent dans la racine de la solution. Pour ce faire, ajoutez l'élément suivant :

  <ItemGroup>
    <Compile Include="..\anypath\**\*.*">
      <Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
  </ItemGroup>

Ceci inclura tous les fichiers du répertoire lié dans un nouveau dossier de l'explorateur de solutions appelé MyData. Le 'A' dans le code ci-dessus peut être appelé n'importe comment mais doit être présent pour que le dossier apparaisse.

0 votes

Cela semble faire l'affaire mais ne permet pas de regrouper les fichiers de formulaires en un seul, et donne des erreurs pour leurs fichiers .resx (j'utilise VB). Merci quand même.

1 votes

@IvanFerrerVilla, oui il a quelques problèmes que j'ai remarqué, mais pour la plupart est seulement bon pour les regards.

3 votes

Avec Visual Studio 2015, cela a fonctionné pour moi même sans le `A`.

1voto

Registered User Points 1123

Il n'est pas possible de le faire pour des dossiers entiers, mais si deux projets se trouvent dans la même solution, vous pouvez utiliser VSCommands 2010 pour copier plusieurs fichiers sous forme de liens en même temps. Voir cette vidéo pour plus d'informations http://www.youtube.com/watch?v=fa1M0NGXqMg or go to visualstudiogallery.msdn.microsoft.com/en-us/d491911d-97f3-4cf6-87b0-6a2882120acf?lc=1033

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