Папка с решениями Visual Studio на уровне проекта - PullRequest
7 голосов
/ 28 октября 2011

В Visual Studio (2010) возможно ли создать «Папку решений» на уровне проекта?
«Виртуальная» папка проекта в Visual Studio?

Проблема:

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

Поскольку файлы ресурсов для разных культур должны храниться в одном и том же месте (пути), в результате получается проект, содержащий много файлов ресурсов на корневом уровне.Это хорошо на данный момент, но, поскольку мы добавим поддержку для разных культур, количество файлов ресурсов вырастет до неуправляемого числа

Поэтому, чтобы лучше организовать наш проект, мы хотели бы создать «виртуальный»"папка на уровне проекта, где мы можем создать одну папку для каждой культуры.Возможно ли это?

Есть мысли?

1 Ответ

5 голосов
/ 28 октября 2011

Я уверен, что вы не можете.Для VS это всегда было странным нюансом: папки в решениях являются виртуальными, а папки Project - нет.В любом случае мне не нравятся виртуальные папки, потому что вы можете столкнуться со странными нюансами, потому что ваше физическое перемещение файлов не синхронизируется со структурой в виртуальных папках.Вызвала у меня головные боли.Я всегда хотел, чтобы на уровне решения были физические папки для размещения вещей, совместно используемых проектами.

Шаг 1) Если им просто нужно, чтобы все они были в одной физической папке, то для начала я бы переместил ихв подпапку ресурсов проекта.Я очень мало держу в корне своих проектов.Даже исходный код помещается в папку «src».Оставляя в корне только такие вещи, как * .config файлы.

Шаг 2) Создайте несколько виртуальных папок по мере необходимости на уровне решения, где вы перетаскиваете файлы из проекта в соответствующую папку виртуального решения.Файл будет по-прежнему физически существовать и показываться в папках «Ресурсы» в проекте, но для более удобного просмотра файлов они будут существовать в виртуальных папках, которые просто ссылаются на исходный файл.

Я понимаю, что это далеко не идеально, но подумал, что хотел бы отметить, что ничто не мешает вам использовать папки уровня решения, когда файлы физически существуют в проекте.

Но какЯ уже упоминал, что если вы добавляете новые файлы ресурсов в свой проект, вам всегда нужно будет выполнить этот дополнительный шаг «категоризации» их, перетащив их в папку виртуального решения.Это одна из тех вещей, которые могут быть не синхронизированы, потому что вы забудете об этом, если вы потратите несколько недель, не касаясь этого проекта.

Лучшим решением может быть использование какого-то пользовательского шага сборки, может быть, с помощью nant или msbuild, которая берет ресурсы, хранящиеся в разделенных на физическом уровне папках ресурсов, и копирует их в одну папку ресурсов перед компиляцией.Таким образом, вы создаете ресурсы в каждой подпапке, и шаг сборки автоматически копирует их в одну целевую папку.

...