Подтвердить что ты не робот

Решение Visual Studio - любой способ создать "специальную" папку?

В принципе, я хочу, чтобы одна из моих папок отображалась над другими папками как тип "специальной папки", аналогично тому, как у Свойства есть свое особое место, даже если это папка, то же самое с App_Data и т.д.

Возможно ли это?

4b9b3361

Ответ 1

По умолчанию Visual Studio не поддерживает добавление специальных папок проекта. Папка "Свойства" жестко закодирована, чтобы вести себя так, как она делает.

Однако с кодом возможно все. Вы могли бы построить расширение, чтобы сделать это, но это было бы непросто. Вам, вероятно, нужно будет возиться с IVsHierarchy или даже реализовать подтип проекта .

Ответ 2

В принципе, я хочу, чтобы одна из моих папок появляются над другими папками как тип "специальной папки", аналогичный как у свойств есть собственный даже если это папка, то же самое с App_Data и т.д.

Возможно ли это?

Да:

  • Сделайте это вручную через IDE
  • Напишите свой собственный script, чтобы сгенерировать/изменить ваш *.sln/*.vcproj

Для (1) "руководство" по решениям в среде IDE: Solution Explorer, right-click on Solution node == > Add == > New Solution Folder.

Обычно папки сортируются в алфавитном порядке (я бы вставлял ведущее подчеркивание, чтобы ваша специальная папка была наверху), папки решений, вставленные вручную на моем MSVS2008, оставляют новую папку "наверху", хотя она должна иметь сбиты при сортировке по алфавиту. Тем не менее, папки под Project (которые называются "Filters" ) всегда сортируются в алфавитном порядке и добавляются аналогично от щелчка правой кнопкой мыши, а затем вы можете изменить их "свойства фильтра" с глоссами имени файла для того, что вы хотите (например, добавьте фильтр-глобус для "*.MY_EXTENSION1;*.MY_EXTENSION2" ).

Мы выбрали (2), и мы генерируем собственные *.sln и *.vcproj, добавляя собственные папки/фильтры. Я не видел никаких утилит в Интернете, чтобы помочь с этим (так что нам пришлось писать сами). Форматы не слишком сложны для обратного проектирования, но в основном это недокументированный XML, поэтому вам нужно поэкспериментировать. Есть только пара хороших веб-статей, объясняющих, что в файле, как этот:

http://tim.oreilly.com/pub/a/dotnet/excerpt/vshacks_chap1/index.html?page=4

На "яркой стороне" файлы являются только XML, поэтому при разработке наших скриптов мы просто внесли изменения в среду IDE, сохранили и сравнили "diff" для того, какое изменение мы хотим. Эти изменения вставляются нашими скриптами при изменении наших файлов. Таким образом, если вы измените файл вручную, вы можете просто "diff" сохранить файл, чтобы узнать, что изменилось, и создать свой собственный script. (IMHO, это самый быстрый и простой маршрут, поскольку инструментов, как правило, не существует для управления этими файлами.)

Такие инструменты, как CMake и QMake сгенерируют *.vcproj/*.sln, но на самом деле не делают настройки для настройки папки, как вы говорите. Однако мы также смотрим на их вывод, потому что в этих файлах "есть не один способ сделать что-то", и у файлов, похоже, много недокументированных функций для выполнения разных умных вещей, которые каким-то образом эти инструменты "открыли" (так что вы может попытаться скопировать их сгенерированный вывод).

Мы обнаружили, что .NET API работают с этими файлами как слишком много работы и не предназначены для такого типа манипуляций, но YMMV.

Ответ 3

В VS 2012 есть функция, которую я только что нашел, и она решила эту проблему для меня. Это может быть не ново для VS.

Создайте папку под проектом с ведущим "_" (чтобы сначала отсортировать его).

В свойствах папки задайте "Поставщик пространства имен" в значение false.

Анализ кода VS (или ReSharper?) тогда не жалуется, что "пространство имен не совпадает с расположением файла", что стало источником раздражения для меня, которое в противном случае не позволило бы мне пройти этот маршрут.

Ответ 4

Хотя нет простого способа добавить Custom Folder, есть простой способ "украсть" Properties пользовательскую папку.

  • Добавьте в проект обычную папку. Например MyCustomerFolder.
  • Откройте файл proj xml. Найти строку

    <AppDesignerFolder>Properties</AppDesignerFolder>
    

    заменить

    <AppDesignerFolder>MyCustomFolder</AppDesignerFolder>
    
  • Перезагрузите проект.
  • Теперь у вас есть пользовательская папка, которая всегда будет придерживаться вершины.

    enter image description here