Где находятся папки с решениями Visual Studio 2013?

Моя текущая ситуация:

У меня было решение, в котором я разделил большой проект MVC на два небольших проекта. Конечно, два небольших проекта ссылаются на тот же JavaScript и файлы содержимого, которые были в старом более крупном проекте.

Что я хочу сделать:

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

Как я пытаюсь подойти к проблеме:

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

Однако моя проблема заключается в том, что мне нужно перемещать файл за файлом в эту папку, поскольку мы не можем просто добавить существующую папку (я переместил папки сценариев и содержимого в сам каталог решений, а не в конкретный проект). И это так утомительно.

Вот что я пытался сделать:

  1. Сначала я попытался определить, где создаются папки с решениями. Однако я обнаружил, что папки с решениями физически не существуют. Я думаю, что это просто какая-то логическая структура вашего решения. Каждый раз, когда вы добавляете файл в папку решения, он физически добавляется в каталог решения.
  2. Я подумал, что файл решения (.sln) может содержать конфигурацию папок решения и их содержимое в каком-то формате xml. Тем не менее, это не так.
  3. Я открыл файл SQL Server Compact Edition (.sdf) решения, думая, что, возможно, существует таблица БД, описывающая папки решения. Однако, это также не похоже на случай.

Итак, наконец, мой вопрос:

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

Обновить:

Спасибо за ответы и предложения. В итоге я выбрал несколько иной подход. Я использовал команду перед сборкой: XCOPY "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E, Я сделал это, потому что предложенные решения и моя предыдущая попытка заключались в добавлении ссылок / ярлыков к файлам внешних ресурсов. Хотя это было хорошо, и ярлыки были фактически добавлены в проект, когда я тестировал проект MVC, IIS не удалось загрузить файлы ресурсов, поскольку он ищет физические файлы (конечно).

Итак, мой вопрос сейчас таков : есть ли каким-то образом, будь то событие сборки или конфигурация в файле csproj, чтобы "включить в проект" недавно "физически" скопированные файлы?

5 ответов

Решение

Мое окончательное решение проблемы - это сочетание предложенных решений и подходов, которые я решил использовать, чтобы локальный IIS мог видеть файлы.

Я добавил следующий раздел в файл csproj:

    <Content Include="..\Files\**">
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
</Content>

Я также добавил следующую команду в качестве события перед сборкой в ​​моем проекте:XCOPY /y "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E

Папки решения (в файловой системе) являются необязательными, и в Visual Studio они обычно используются только для организации файлов в Visual Studio.

Это ручной подход к созданию "физической" папки на том же уровне, что и решение, но это уменьшает сложность.

Ниже приведены шаги для перемещения одного файла скрипта:

В файловой системе

  1. Создайте папку решения (обычно в каталоге верхнего уровня)
  2. Скопировать файл сценария из (одного) проекта в папку решения

В Visual Studio

  1. Создать папку решения
  2. Щелкните правой кнопкой мыши папку решения, выберите Добавить> Существующий элемент...
  3. Выберите файл сценария из новой папки решения в файловой системе, затем нажмите кнопку "Добавить".
  4. Исключить / удалить файл скрипта из проекта1
  5. Щелкните правой кнопкой мыши проект1, выберите Добавить> Существующий элемент...
  6. Выберите файл сценария из папки решения в файловой системе, выберите "Добавить как ссылку" в раскрывающемся списке кнопки "Добавить"
  7. Повторите шаги 6-8 для всех других проектов

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

Обратите внимание, что вы не ограничены работой с одним файлом за раз, его проще отслеживать.

Самый быстрый из известных мне способов найти папку с вашим решением:

  1. В Visual Studio откройте " Обозреватель решений", если он еще не открыт. " Вид" -> "Другие окна" -> "Обозреватель решений" (CTRL + ALT + L).

  2. В обозревателе решений щелкните правой кнопкой мыши свой проект или решение.

  3. Выберите Добавить -> Новый элемент.

  4. Всплывающее окно позволит вам выбрать новый шаблон файла, но вам нужно поле " Расположение " внизу. Он должен иметь путь к папке с вашим решением. Можно с уверенностью сказать, что ваша папка с решениями находится в этом месте или выше пары уровней.

  5. Получив путь к папке с решением, вы можете нажать Отмена, чтобы выйти из мастера.

Как и советовал Дрю: редактировать файл проекта можно одним способом. Другой способ - отредактировать файл Solution в механизме, аналогичном механизму файла csproj. В файле решения проект с определенным GUID содержит сведения о наборе папок.

Напишите небольшое приложение, которое будет читать вашу папку и выводить небольшой текст желаемого вывода. Создавайте новые направляющие, пока файл не будет создан. Просто вставьте это вверху файла.sln. 2150E333-8FDC-42A3-9474-1A3956D46DE8, кажется, GUID, используемый для элементов решения.

Этот образец имеет несколько подпапок с содержимым во вложенной структуре. т.е.

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder1", "NewFolder1", "{4CDFCC66-45BD-4B6D-8758-FEF7E9F61C1C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder1", "SubFolder1", "{771BDBFB-5C01-4C51-A170-D88ECA8DE896}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder2", "SubFolder2", "{5D23AB90-5EF6-4611-A575-34F7B50BB1B6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder2", "NewFolder2", "{135E9F67-2DF8-4458-AC6D-FF82FC1B3BC6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubSubFolder1", "SubSubFolder1", "{B41C7BAA-7E3D-405B-96AB-005120D12D26}"
ProjectSection(SolutionItems) = preProject
    NewFolder1\SubFolder1\SubSubFolder1\a.txt = NewFolder1\SubFolder1\SubSubFolder1\a.txt
EndProjectSection

EndProject

Насколько я могу судить, visual studio не предоставляет эту функцию через свой интерфейс. Вероятно, предполагается, что файлы проекта существуют в папке проекта, а не в отдельности. Обычно это облегчает работу с проектами (перемещение, совместное использование и т. Д.).

Тем не менее, вам не нужно, чтобы каждая реальная папка в местоположении проекта была фактически включена в этот проект. Таким образом, вы можете сделать что-то вроде следующей структуры папок:

+ /Projects (contains ProjectA.csproj and ProjectB.csproj)
    |
    +-- /ProjectA (folder with files that are just for "ProjectA"
    |
    +-- /ProjectB (folder with files just for "ProjectB")
    |
    +-- /Shared (Folder with your shared scripts/files)

С этой структурой вы сможете использовать кнопку "Показать все файлы" и включить общую папку в оба проекта. Возможно, вам придется вручную редактировать файлы csproj, чтобы отобразить эту новую структуру, но это не должно быть слишком сложным.

Единственный другой вариант, о котором я могу подумать, - это попытаться вручную отредактировать файлы csproj, как показано в этом вопросе.

Надеюсь, что все помогает. Удачи!

Другие вопросы по тегам