#c# #visual-studio #resources #solution
#c# #visual-studio #Ресурсы #решение
Вопрос:
В Visual Studio (2010) возможно ли создать «Папку решения» на уровне проекта?
«Виртуальная» папка проекта в Visual Studio?
Проблема:
В нашем решении есть проект, который содержит все наши файлы ресурсов культуры. Мы используем один файл ресурсов для каждой бизнес-цели, то есть у нас есть более одного файла ресурсов, представляющих каждую культуру.
Поскольку файлы ресурсов для разных языков должны храниться в одном и том же местоположении (пути), это приводит к тому, что проект or содержит много файлов ресурсов на корневом уровне. На данный момент это нормально, но по мере добавления поддержки для разных языков количество файлов ресурсов вырастет до неуправляемого числа
Итак, чтобы лучше организовать наш проект, мы хотели бы создать «виртуальную» папку на уровне проекта, где мы можем создать одну папку для каждой культуры. Возможно ли это?
Есть мысли?
Ответ №1:
Я почти уверен, что вы не можете. Для меня всегда было странным нюансом VS, что папки в решениях являются виртуальными, а папки проекта — нет. Мне все равно не нравятся виртуальные папки, потому что вы можете столкнуться со странными нюансами, потому что ваше физическое перемещение файлов не синхронизируется со структурой в виртуальных папках. Вызвал у меня головную боль. Я всегда хотел, чтобы на уровне решения были физические папки для совместного использования между проектами.
Шаг 1) Если они просто должны быть в одной физической папке, то для начала я бы переместил их во вложенную папку ресурсов проекта. Я храню очень мало в корне своих проектов. Даже исходный код попадает в папку «src». Оставляя в корне только такие вещи, как файлы * .config.
Шаг 2) Создайте несколько виртуальных папок по мере необходимости на уровне решения, куда вы перетаскиваете файлы из проекта в соответствующую папку виртуального решения. Файл по-прежнему будет физически существовать и отображаться в папках «Ресурсы» в проекте, но для более удобного просмотра файлов они будут существовать в виртуальных папках, которые просто ссылаются на исходный файл.
Я понимаю, что это далеко не идеально, но подумал, что хотел бы отметить, что ничто не мешает вам использовать папки уровня решения, когда файлы физически существуют в проекте.
Но, как я уже упоминал, если вы добавляете новые файлы ресурсов в свой проект, вам всегда нужно будет выполнять дополнительный шаг по их «категоризации», перетаскивая их в папку виртуального решения. Это одна из тех вещей, которые, вероятно, будут не синхронизированы, потому что вы забудете о них, если проведете несколько недель, не касаясь этого проекта.
Лучшим решением может быть использование какого-либо пользовательского шага сборки, возможно, с помощью nant или msbuild, который берет ресурсы, хранящиеся в физически отдельных папках ресурсов, и копирует их в одну папку ресурсов перед компиляцией. Таким образом, вы создаете ресурсы в каждой вложенной папке, а этап сборки автоматически копирует их в единую папку назначения.
Комментарии:
1. AaronLS это отличная идея. Хотя это и не лучшее из решений, это хороший обходной путь, который позволит нам разделить файлы ресурсов каждой культуры в отдельную папку. Я также должен исправить себя, мы храним файлы resource.resx в отдельной папке, а не в корне проекта. Нам тоже нравится поддерживать чистоту корня проекта.