2010-09-01 4 views
74

Je cherche à ranger ma mise en page de projet dans Visual Studio et je me demande s'il y a un hack, un plugin ou une astuce pour associer un fichier .xml avec un fichier .cs du même nom afin qu'ils apparaissent groupés dans ma solution navigator/explorer.Fichiers de groupe dans Visual Studio

Similaire à la façon dont le fichier code-behind est associé à son aspx.

alt text

Toutes les suggestions sont les bienvenus. Merci

Répondre

67

Dans votre fichier de projet:

<Compile Include="FileA.cs"/> 
<Compile Include="FileA.xml"> 
    <DependentUpon>FileA.cs</DependentUpon> 
</Compile> 

Ou vous pouvez utiliser la commande Group Items de VSCommands 2010 l'extension.

+2

Parfait! Je ne pensais pas vraiment que ce serait possible –

+0

J'ai trouvé que dans un projet VS2010 VB, si vous essayez d'ajouter une classe enfant (par exemple partielle) à un contrôle XAML, le fichier enfant sera caché sauf si vous choisissez " Afficher tous les fichiers ". Confus, il suffit d'ajouter .xaml.vb à la fin de celui-ci, puis il est affiché. – Rocklan

+1

J'ai été confus sur la façon d'utiliser la fonction VSCommands Group jusqu'à ce que j'ai vu [this] (http://www.rapidstreams.net/2012/08/grouping-partial-classes-in-visual.html) post. Pour utiliser la fonction de groupe VSCommands, mettez en surbrillance TOUS les fichiers que vous souhaitez regrouper, puis cliquez à DROITE sur l'un d'entre eux, puis cliquez sur groupe. – Chris

57

Si vous ne voulez pas ralentir votre IDE avec une extension VSCommands lourde et propriétaire, vous pouvez utiliser la petite extension NestIn à la place. Il ne peut rien faire que grouper/dégrouper des fichiers

+0

Très pratique, mais il ne peut pas renommer les éléments imbriqués. –

+4

Aussi celui-ci: File Nesting https://visualstudiogallery.msdn.microsoft.com/3ebde8fb-26d8-4374-a0eb-1e4e2665070c] – Tohid

2

Pour le cas simple où le fichier est un fichier de "niveau supérieur", la description de Julien fonctionne parfaitement. Toutefois, dans le cas où le fichier DependentUpon est dans un dossier sous le projet, cela semble différent. Personnellement, je ne l'aime pas parce que cela semble mener à l'ambiguïté, mais c'est une opinion.

<Compile Include="DataStructs\CKDTree.cs" /> 
<Compile Include="DataStructs\CClosestObjects.cs" > 
    <DependentUpon>CKDTree.cs</DependentUpon> 
</Compile> 

Notez que l'élément à charge ne comprend pas le dossier du parent. C'est vrai dans VS2013 ... probablement vrai dans les versions précédentes mais je ne l'ai pas vérifié.

+0

Merci, le peu de dossier "manquant" est bon à savoir. Je me demandais pourquoi il n'est pas apparu correctement dans VS2013. –

+0

Je crois que ce n'est pas nécessaire parce qu'il suppose que le fichier 'parent' (sans path) associé est un frère du fichier 'child' et que l'enfant spécifie un chemin. Un simple test d'ajout d'un deuxième fichier CKDTree.cs dans un emplacement différent, puis la création d'un enfant dans cet autre emplacement mais avec exactement le même élément 'DependentUpon' confirmerait cette hypothèse. Pourtant, comme je l'ai appelé dans ma réponse ci-dessous, cela brise la capacité de VS à renommer les fichiers alors méfiez-vous de le faire. – MarqueIV

0

Vous ne savez pas si les gens sont au courant, mais l'imbrication de fichiers comme ceux-ci semble rompre la capacité de VS à renommer le fichier racine, au moins lorsque votre nouveau fichier imbriqué est également une classe partielle. Par exemple, voici l'arbre que nous avons créé ...

MainWindow.xaml 
    MainWindow.xaml.cs 
    MainWindow.Commands.cs 

MainWindow.Commands.cs est juste une autre classe partielle de MainWindow, même que MainWindow.xaml.cs. Toutefois, si vous essayez puis de renommer MainWindow.xaml, au lieu de renommer automatiquement les fichiers dépendants, il déclenche une exception.

Par souci d'exhaustivité, j'ai également essayé de nommer le fichier MainWindow.xaml.Commands.cs mais cela ne fonctionnait pas non plus.

Sans le fichier 'commands' supplémentaire, le renommage fonctionne, bien sûr.

MainWindow.xaml 
    MainWindow.xaml.cs 

Quoi qu'il en soit, ce fut une raison suffisante pour que nous abandonnions les fichiers de nidification comme celui-ci. Sans la possibilité de renommer, ça n'en vaut pas la peine.

+0

Je viens de tester cela avec des classes partielles (1 racine, 2 enfants) et je n'ai pas eu d'erreur en renommant la racine. VS 2015 – ATD

+0

Je vais devoir vérifier à nouveau avec 2015. Je pense que j'utilisais 2012/3 à l'époque – MarqueIV

Questions connexes