Gruppieren Sie Dateien in Visual Studio

78

Ich suche mein Projekt - Layout in Visual Studio an aufzuräumen und ich frage mich , ob es ein Hack, Plugin oder Trick eine XML - Datei mit einer CS - Datei zu verknüpfen mit dem gleichen Namen , so dass sie in meiner Lösung Navigator gruppierten erscheinen /Forscher.

Ähnlich wie die CodeBehind-Datei mit ihrem Aspx verknüpft ist.

Alt-Text

Anregungen sind willkommen. Vielen Dank

mat-mcloughlin
quelle
Verwandte: Siehe diese Antwort für wie nisten (Gruppe) .csDateien in einem Projekt .NET - Core.
DavidRR

Antworten:

72

In Ihrer Projektdatei:

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

Oder Sie können den Group ItemsBefehl der VSCommands 2010- Erweiterung verwenden.

Bearbeiten: Nur für den Fall, dass sich Ihre Datei in einem Ordner befindet, geben Sie den Ordnernamen nicht in das DependentUponTag ein. Zum Beispiel, wenn sich Ihre Datei im HelpersOrdner befindet:

<Compile Include="Helpers\FileA.cs"/>
<Compile Include="Helpers\FileA.xml">
  <DependentUpon>FileA.cs</DependentUpon>
</Compile>
Julien Hoarau
quelle
2
Perfekt! Ich dachte nicht wirklich, dass es möglich sein würde
mat-mcloughlin
Ich habe festgestellt, dass in einem VS2010 VB-Projekt, wenn Sie versuchen, einem XAML-Steuerelement eine untergeordnete Klasse (z. B. teilweise) hinzuzufügen, die untergeordnete Datei ausgeblendet wird, sofern Sie nicht "Alle Dateien anzeigen" auswählen. Verwirrend, also fügen Sie einfach .xaml.vb am Ende hinzu und dann wird es angezeigt.
Rocklan
1
Ich war verwirrt darüber, wie man die VSCommands Group-Funktion verwendet, bis ich diesen Beitrag sah . Um die VSCommands-Gruppenfunktion zu verwenden, markieren Sie ALLE Dateien, die Sie gruppieren möchten, und klicken Sie dann mit der rechten Maustaste auf eine der Dateien.
Chris
1
@Julien, während ich dies ablehnen wollte, dachte ich besser darüber nach, weil dies technisch gesehen Dateien verschachtelt und genau das war die Frage. Was die meisten nicht wissen und die Inspiration für meine anfängliche Reaktion auf Downvote war, dass dies die Fähigkeit von VS, Dateien umzubenennen, beeinträchtigt. Weitere Informationen finden Sie in meiner Antwort hier und warum wir uns letztendlich dagegen entschieden haben.
Mark A. Donohoe
Für VS2017 musste ich <Compile Update = "FileA.xml" DependentUpon = "FileA.cs" /> verwenden
Jamie Burns
57

Wenn Sie Ihre IDE mit der umfangreichen und proprietären VSCommands-Erweiterung nicht verlangsamen möchten, können Sie stattdessen die kleine Erweiterung NestIn verwenden. Es kann nichts anderes als Dateien gruppieren / aufheben

Dao
quelle
Sehr praktisch, kann jedoch verschachtelte Elemente nicht umbenennen.
stian.net
6
Auch dieses: File Nesting visualstudiogallery.msdn.microsoft.com/…
Tohid
1
@Tohid, Ihr Link zur File Nesting Extension ist zu wertvoll, um ein einfacher Kommentar zu sein. Es wäre besser, als Antwort gepostet zu werden, denke ich.
AlexMelw
2

Für den einfachen Fall, dass die Datei eine "Top Level" -Datei ist, funktioniert Juliens Beschreibung perfekt. In dem Fall, in dem sich die DependentUpon-Datei in einem Ordner unter dem Projekt befindet, sieht dies jedoch anders aus. Ich persönlich mag es nicht, weil es so aussieht, als könnte es zu Mehrdeutigkeiten führen, aber das ist eine Meinung.

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

Beachten Sie, dass das abhängige Element NICHT den Ordner des übergeordneten Elements enthält. Dies gilt für VS2013 ... wahrscheinlich für frühere Versionen, aber ich habe es nicht überprüft.

Veldaeven
quelle
Danke, das "fehlende" Ordnerbit ist gut zu wissen. Ich habe mich gefragt, warum es in VS2013 nicht richtig aufgetaucht ist.
John Korsnes
Ich glaube, es wird nicht benötigt, da davon ausgegangen wird, dass die zugehörige 'Eltern'-Datei (ohne Pfad) ein Geschwister der' Kind'-Datei ist und das Kind einen Pfad angibt. Ein einfacher Test zum Hinzufügen einer zweiten CKDTree.cs-Datei an einem anderen Speicherort und zum Erstellen eines untergeordneten DependentUponElements an diesem anderen Speicherort, jedoch mit genau demselben Element, würde diese Hypothese bestätigen. Wie ich in meiner Antwort unten ausgeführt habe, beeinträchtigt dies jedoch die Fähigkeit von VS, Dateien umzubenennen. Seien Sie also vorsichtig, wenn Sie dies tun.
Mark A. Donohoe
1

Die File Nesting- Erweiterung für Visual Studio ist gut. Zum Zeitpunkt des Schreibens dieser Antwort wurden ca. 500.000 Downloads durchgeführt. Ich habe es persönlich zu meinem VS 2015 hinzugefügt und es hat gut funktioniert (habe es noch nicht mit VS 2017 ausprobiert).

Um versteckte
quelle
0

Ich bin mir nicht sicher, ob die Leute es wissen, aber das Verschachteln von Dateien wie dieser beeinträchtigt anscheinend die Fähigkeit von VS, die Stammdatei umzubenennen, zumindest wenn Ihre neue verschachtelte Datei ebenfalls eine Teilklasse ist. Hier ist zum Beispiel der Baum, den wir erstellt haben ...

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

MainWindow.Commands.cs ist nur eine weitere Teilklasse von MainWindow, genau wie MainWindow.xaml.cs. Wenn Sie dann jedoch versuchen, MainWindow.xaml umzubenennen, wird eine Ausnahme ausgelöst, anstatt die abhängigen Dateien automatisch umzubenennen.

Der Vollständigkeit halber habe ich auch versucht, die Datei zu benennen MainWindow.xaml.Commands.cs aber das hat auch nicht funktioniert.

Ohne die zusätzliche Befehlsdatei funktioniert das Umbenennen natürlich einwandfrei.

MainWindow.xaml
    MainWindow.xaml.cs

Auf jeden Fall war dies Grund genug für uns, solche Verschachtelungsdateien aufzugeben. Ohne die Möglichkeit zum Umbenennen lohnt es sich einfach nicht.

Mark A. Donohoe
quelle
Ich habe dies gerade mit Teilklassen (1 Wurzel, 2 Kinder) getestet und keine Fehler beim Umbenennen der Wurzel erhalten. VS 2015
ATD
Ich muss mit 2015 noch einmal
Mark A. Donohoe