Групувати файли у Visual Studio


78

Я дивлюсь на впорядкування макета свого проекту у Visual Studio, і мені цікаво, чи існує якийсь хакер, плагін чи хитрість для асоціювання файлу .xml із файлом .cs з такою ж назвою, щоб вони відображалися згрупованими в моєму навігаторі рішення / дослідник.

Подібно до того, як файл із кодом пов'язаний з його aspx.

текст заміщення

Будь-які пропозиції вітаються. Дякую


Пов’язане: Дивіться цю відповідь про те, як вкладати (групувати) .csфайли у проект .NET Core.
DavidRR

Відповіді:


72

У файлі проекту:

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

Або ви можете скористатися Group Itemsкомандою розширення VSCommands 2010 .

Редагувати: На випадок, якщо ваш файл знаходиться в папці, не включайте ім’я папки в DependentUponтег. Наприклад, якщо ваш файл знаходиться в Helpersпапці:

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

2
Ідеально! Я насправді не думав, що це буде можливо
mat-mcloughlin

Я виявив, що у проекті VB VS2010, якщо ви намагаєтесь додати дочірній клас (наприклад, частковий) до елемента керування XAML, дочірній файл буде прихований, якщо ви не вибрали "Показати всі файли". Заплутано, тому просто додайте .xaml.vb в кінець, і тоді він відобразиться.
Rocklan

1
Мене бентежило, як користуватися функцією VSCommands Group, поки не побачив цю публікацію. Щоб скористатися функцією групи VSCommands, ВИДІЛИТИ ВСІ файли, які ви хочете згрупувати, потім ПРАВО клацнути на БУДЬ-ЯКУ з них, а потім клацнути групу.
Кріс

1
@Julien, поки я збирався проголосувати за це, я подумав, бо технічно це вкладає файли, і саме це питання задавало. Більшість з них не знають і натхнення для моєї початкової реакції на голосування проти, тому що це порушує здатність VS перейменовувати файли. Дивіться мою відповідь тут для отримання додаткової інформації та того, чому ми врешті-решт вирішили не робити цього.
Mark A. Donohoe

Для VS2017 мені довелося використовувати <Compile Update = "FileA.xml" DependentUpon = "FileA.cs" />
Джеймі Бернс,

57

Якщо ви не хочете сповільнювати роботу IDE за допомогою важкого та патентованого розширення VSCommands, ви можете замість цього використовувати невелике розширення NestIn . Це не може нічого, крім групування / розгрупування файлів


Дуже зручно, але він не може перейменовувати вкладені елементи.
stian.net

6
Також цей: Вкладання
Тохід

1
@Tohid, ваше посилання на Розширення вкладених файлів надто цінне, щоб бути простим коментарем. Краще було б розмістити як відповідь, мабуть.
AlexMelw

2

У простому випадку, коли файл є файлом "верхнього рівня", опис Жульєна працює ідеально. Однак у випадку, коли файл DependentUpon знаходиться у папці проекту, це виглядає інакше. Мені особисто це не подобається, тому що, здається, це може призвести до двозначності, але це думка.

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

Зверніть увагу, що залежний елемент НЕ включає папку батьківського елемента. Це правда у VS2013 ... можливо, це правда у попередніх версіях, але я не перевірив це.


Дякую, біт папки "відсутній" корисно знати. Цікавився, чому він не виявився коректно у VS2013.
Джон Корснес

Я вважаю, що це не потрібно, оскільки він робить припущення, що пов'язаний "батьківський" файл (sans path) є рідним братом "дочірнього" файлу, і дочка вказує шлях. Простий тест додавання другого файлу CKDTree.cs в іншому місці, а потім створення дочірнього місця в цьому іншому місці, але з точно таким же DependentUponелементом, підтвердив би цю гіпотезу. Проте, як я вже зазначав у своїй відповіді нижче, це порушує можливість VS перейменовувати файли, тому будьте обережні, роблячи це.
Mark A. Donohoe

1

Розширення File Nesting для візуальної студії є хорошим. На момент написання цієї відповіді воно має близько 500 тис. Завантажень. Я додав його особисто до свого VS 2015, і він працював нормально (ще не пробував з VS 2017).


0

Не впевнені, чи знають люди про це, але вкладання таких файлів, здається, порушує здатність VS перейменовувати кореневий файл, принаймні, коли ваш новий вкладений файл також є частковим класом. Наприклад, ось дерево, яке ми створили ...

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

MainWindow.Commands.cs - це лише черговий частковий клас MainWindow, такий самий, як MainWindow.xaml.cs. Однак якщо ви спробуєте перейменувати MainWindow.xaml, замість того, щоб автоматично перейменовувати залежні файли, він видає виняток.

Для повноти я також спробував назвати файл MainWindow.xaml.Commands.cs але це теж не спрацювало.

Без зайвого файлу 'команд', перейменування, звичайно, працює нормально.

MainWindow.xaml
    MainWindow.xaml.cs

У будь-якому випадку, це було достатньою причиною для того, щоб ми відмовились від таких файлів, як вкладання. Без можливості перейменувати це просто не варто.


Я просто перевірив це з частковими класами (1 корінь, 2 дітей), і я не отримав жодних помилок при перейменуванні кореня. VS 2015
ATD

Мені доведеться перевірити ще раз з 2015 року. Я думаю, я використовував 2012/3 на той час
Марк А. Донохо 02
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.