Папка решений Visual Studio в качестве реальных папок

У меня есть решение Visual Studio. В настоящее время это пустое решение (= нет проектов), и я добавил несколько папок решений.

Пакеты решений только кажутся "виртуальными папками", потому что они действительно не созданы в Файловой системе, а файлы внутри папок решений просто находятся в той же папке, что и файл .sln.

Есть ли параметр, который я забыл, что говорит Visual Studio рассматривать Пакеты решений как "реальные" папки, то есть создавать их в файловой системе и перемещать в нее файлы, когда я перемещаю их внутри решения в один из эти папки?

Изменить: Спасибо. Собираясь делать предложение для VS2010, тогда:)

Ответ 1

Никакой специальной настройки. Я не думаю, что это поддерживается.

Вы можете создавать настоящие папки в "проекте" внутри решения, но не в самом решении.

Ответ 2

Существует обходной путь, который действительно ведет себя как ожидалось.

  • Добавьте в решение Новый или Существующий веб-сайт. (Я обычно создаю новый.)
  • Просто убедитесь, что он создан в папке с вашим решением. (Иногда я даже создаю "ссылку" на внешнюю папку, например "Документы" или "Маркетинг" на сетевом ресурсе. В этом случае, конечно, он игнорируется Git.)
  • Обязательно перейдите в настройки "Project" или Configuration Manager, чтобы исключить этот "веб-сайт" из "Сборка и развертывание" !

Готово. Теперь Solution Explorer будет отображать любые изменения в файловой системе и наоборот (включая подпапки).

Я (пропустить) использую его для спецификаций, документов, PM и некоторых сценариев DevOps, которые используются в команде. Легко выбрать, что включить в исходное управление или нет, и (если правильно настроено), он не конфликтует со сборкой.

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

Ответ 3

В Visual Studio 2017 щелкните значок "Решения и папки" в окне обозревателя решений. Эта кнопка переключает из виртуального представления "решение" в "представление источника", которое соответствует макету папок и файлов в файловой системе. Когда вы добавляете новую папку, она физически создается в ожидаемом месте. solutions and folders.

Ответ 4

Сара Форд внесла макрос, чтобы добавить это. В Visual Studio 2010, если вы откроете свой Macro Explorer, вы увидите макрос под названием "GenerateSlnFolderOnDirStructure". Это автоматизирует создание папок решений и добавляет файлы.

Ответ 5

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

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

Но некоторое время назад Visual Studio представила новый тип проекта: Общий проект (расширение .shproj). Этот тип проекта не компилируется по умолчанию, а только тогда, когда (и только если) на него ссылается другой проект.

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

Затем, используя предложение <None Include="**/*" /> в файле .shproj, мы можем сделать так, чтобы оно автоматически отражало любые новые файлы и/или подпапки.

В общем, сделайте это:

  • Создайте новую папку в своем решении.
  • Добавьте новый файл .shproj в корень этой новой папки.
  • Ссылка на новый .shproj в вашем решении.

Например, в моем случае я создал DockerDev.shproj, поэтому я могу сгруппировать некоторые связанные с докером сценарии, которые мы запускаем только на наших машинах разработки:

<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="**/*" />
  </ItemGroup>
</Project>

Этот файл .shproj будет отслеживать любой файл в любой подпапке этой новой папки DockerDev в моем решении.

Насколько я мог видеть, это решение во многом похоже на то, что запрашивал OP: оно будет работать как некомпилируемая ссылка на папку и автоматически будет отражать любые изменения, внесенные в нее.

Ответ 7

Нет, он не поддерживается. Как вы подозревали, папки решений - это просто виртуальные подстанции в файле .sln, не связанные с файловой системой.

Ответ 8

Папка для папки решений By Cecilia Wirén - CeciliaSHARP

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

Ответ 9

Примечание. Да, возможно, вы можете создать папку на корне, но ее lil бит сложно....

Предоставляя дополнительные усилия, вы можете это сделать как? Переходим к следующему шагу -

  • 1-Create Folder, например: " newfolder" в корне (где находится ваш .sln файл).
  • 2.Copy и вставьте свои проекты внутри папки.
  • 3.go в ваш sln файл и найти перемещенные проекты и добавить новую папку\в перемещенный адрес проекта.
  • Файл 4.Save sln.
  • 5.Откройте свой проект и скопируйте репозиторий в git или так...
  • 6.Вставьте репозиторий в новое место.

    ВЫ сделаны...

если вы еще не видите свою папку -----

  • 1. Добавить папку решения xyz.
  • 2. Откройте файл sln и измените имя этой папки с именем вашей папки.

Поздравляем вас с этим.

Если вы столкнулись с какой-либо проблемой, просто напишите мне о помощи.

Ответ 10

Я хотел эту функцию несколько раз сам, но в конце дня вы действительно НЕ хотите эту возможность. Подумайте о своем решении (файле) как о корневом каталоге веб-приложения и подумайте о папках решений как виртуальных каталогах (буквально и функционально). Содержимое виртуального виртуального каталога может быть физически размещено на другом сервере. Там, где Visual Studio запутывает концепцию папок решений, вы можете создавать новые файлы внутри папки. При добавлении контента всегда следует "Добавить существующий" . Когда вы добавляете существующий, он создает ссылку на исходное местоположение файла.

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

Ответ 11

В Visual Studio нет поддержки. Я сделал расширение, которое делает что-то подобное для VS2013. Он отображает папки решений в физические папки на вашем жестком диске, хотя сопоставление является одним из способов (от жесткого диска до решения). Это означает, что содержимое папки решения будет отображать содержимое папки на жестком диске, а не наоборот.

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

Хостинг в галерее визуальных студий: https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd

Изменить: Загружено в битбакет. Теперь с открытым исходным кодом. Лицензия MIT. https://bitbucket.org/LSS_NorthWind/physical-solution-folders

Ответ 12

Создайте папку "Решение". Это создаст логическую папку, но не физическую. Щелкните правой кнопкой мыши папку решения и откройте диалоговое окно нового проекта. Но прежде чем нажимать "ОК", вы должны изменить местоположение проекта на нужную физическую папку, а VS создаст его и разместит проект внутри.

Ответ 13

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

ps- на более близком взгляде, может быть, я должен объяснить, "боб твой дядя" означает твою прекрасную/отсортированную.

Ответ 14

Вы можете добавить реальные папки, выбрав "Добавить новый фильтр" для файла проекта Visual Studio. Вы также можете сделать "Добавить новый фильтр" в существующую папку. Как только папка будет создана, переименуйте ее и добавьте исходный или заголовочный файл или в зависимости от вашего проекта. Это один из способов, которым я знаю, что позволяет нам создавать реальные папки через среду Visual Studio.

Ответ 15

У меня есть немного обходного пути для этого (это не здорово, но оно работает).

  • Создайте папку в своем решении (т.е. "Contoso" )
  • Щелкните правой кнопкой мыши по решению, а затем нажмите "Открыть папку в обозревателе решений".
  • Создайте физическую папку (то есть "Contoso" ) в каталоге решений
  • Копировать/Создать файлы в физической папке.
  • Перетащите файлы в виртуальную папку в проводнике решений.

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