исключить папку в project.json

в новом шаблоне asp.net 5 есть файл project.json, в котором вы можете исключить определенные каталоги.

"exclude": [
    "wwwroot",
    "node_modules",
    "bower_components",
    "dist",
    ".tmp"
]

Как видите, я добавил несколько папок, таких как «dist» и «.tmp», но они все еще включены в обозреватель решений. Документации по этому поводу не так много. Как исключить файлы/папки из вашего проекта в сравнении с 2015?


person Elger Mensonides    schedule 02.06.2015    source источник
comment
Где находится dist в иерархии папок? Это прямо из корневой папки проекта?   -  person Gerald Davis    schedule 02.06.2015
comment
Я согласен. Это большая проблема. Когда я ищу свое решение для текста, я не хочу искать эту папку. И что еще хуже, система управления исходным кодом считает, что все эти файлы необходимо добавить. Это совсем не хорошо.   -  person toddmo    schedule 04.09.2015
comment
В моем случае node_modules не отображается, но есть bower_components.   -  person toddmo    schedule 04.09.2015


Ответы (6)


Свойство «исключить» не скрывает папку от Visual Studio, оно не приводит к «исчезновению» папки из обозревателя решений.

Свойство «исключить» удаляет папку из пути поиска компиляции. Это инструкция для компилятора (Roslyn), а не для IDE. В качестве более полного ответа «project.json» намеренно не зависит от IDE. Вот почему существуют как projecname.xspoj, так и project.json, которые содержат информацию о конфигурации проекта. Это необходимо для обеспечения более надежной кросс-платформенной и IDE-разработки.

Вы можете сами проверить это поведение, выполнив простое упражнение.

  1. Добавьте новый файл класса (buildfail.cs) в существующий проект (или создайте новый проект) в корневой папке проекта.
  2. Убедитесь, что buildfail.cs имеет то же пространство имен, что и другие исходные файлы в проекте, содержит ошибки компиляции и находится в корневом каталоге.
  3. Вы должны увидеть ошибки сборки в VS. Если вы не строите вручную.
  4. Создайте новую папку (excludeme) в корне проекта и переместите файл buildfail.cs в эту папку. У вас все еще должны быть ошибки сборки.
  5. Добавьте excludeme в свойство exclude в project.json. Ошибки сборки должны быть удалены, поскольку файл buildfail.cs больше не находится в пути поиска сборки.

Вам может быть интересно, что использует VS, чтобы скрыть папку node_packages из окна обозревателя решений. Я не уверен, и это может быть не настраиваемым пользователем, но это не свойство исключения. Закомментируйте node_packages в project.json, и вы получите ошибки сборки (ошибка восстановления пакета), но папка по-прежнему будет скрыта от обозревателя решений. Поскольку это поведение, специфичное для IDE, можно предположить, что, возможно, оно определено в projectname.xproj, но я не нашел такого свойства, поэтому в настоящее время это выглядит как магия черного ящика от VS.

person Gerald Davis    schedule 02.06.2015
comment
Спасибо, папка dist находится на том же уровне, что и bower_components и node_modules. Он создается с помощью gulp. Но... _references.js также включает файлы .js в dist и .tmp, так что это отстой. Вы правы насчет магии "черного ящика". Вот только магия на самом деле пока не работает. - person Elger Mensonides; 02.06.2015
comment
Что ж, магия работает. exclude НЕ скрывает папки от обозревателя решений. Магия, о которой я говорил, это то, как VS скрывает папки от обозревателя решений. Насколько я знаю, в VS 2015 нет способа скрыть эту папку, чтобы она не отображалась в обозревателе решений. VS делает это для определенных папок (например, node_packages), но это просто волшебство. Нет никаких параметров конфигурации, чтобы управлять им или отключать его. Например, верно и обратное. Допустим, вы хотели увидеть папку node_dependencies в VS. Вы не можете. Это волшебство, и волшебство говорит, что его не видно. - person Gerald Davis; 02.06.2015
comment
@Elger, я могу сказать вам, что если вы отключите автоматическое обновление для своего _references.js и вручную удалите записи фреймворка (весь код, который вы не предоставляете), это будет намного лучше. На самом деле, если вы этого не сделаете, вы, вероятно, обречены на гибель своего интеллекта. - person toddmo; 04.09.2015

Начиная с Asp.Net 5 beta-8 и дополнительного обновления инструментов для Visual Studio 2015 теперь вы можете исключать/скрывать папки из отображения в обозревателе решений. Дополнительные сведения об этом и других изменениях приведены в объявление. Чтобы скрыть файл или папку, щелкните правой кнопкой мыши, чтобы вызвать контекстное меню, и выберите Hide from solution explorer. Это создает запись в файле .xproj:

<ItemGroup>
  <DnxInvisibleContent Include="myhiddenfile.txt" />
</ItemGroup>

Также обратите внимание, что изменилось место установки пакетов Bower по умолчанию. Ранее шаблоны Asp.Net 5 в Visual Studio устанавливали пакеты Bower в папку с именем bower_components — практика, знакомая веб-разработчикам, не использующим Visual Studio. Однако, по-видимому, из-за путаницы разработчиков, это было изменено на wwwroot/lib. Это можно изменить, отредактировав файл bowerrc. Таким образом, папка bower_components не существует в новых шаблонах бета-8. Дополнительные сведения см. в этой публикации Скотта Хансельмана.

person Blake Mumford    schedule 25.10.2015
comment
Кажется, что после того, как вы скрыли папку, функция поиска все еще видит эти файлы, хотя, на мой взгляд, этого не должно быть. Есть ли лучший способ с RC1 теперь, когда вы можете полностью исключить папку из своего проекта? Например. Я использую gulp для создания пакетов, и я не хочу их ни в системе управления версиями, ни в Visual Studio... - person Ilya Chernomordik; 18.12.2015

Это может быть не идеально, но мне удалось скрыть папку из обозревателя решений в проекте Asp.net 5, пометив папку как скрытую в диалоговом окне свойств проводника Windows. У меня была папка .idea, используемая WebStorm, поэтому ее скрытие не было большой проблемой. WebStorm не возражает.

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

person Brian Scott    schedule 21.07.2015
comment
Это хорошее решение. И скрывать нужно только папку, а не содержимое. - person toddmo; 04.09.2015

Правильно это или нет, но вот что я сделал, чтобы убрать bower_components и .sass-cache с дороги. В моем случае node_modules каким-то образом уже был исключен из моего проекта, хотя он находится на том же уровне, что и gruntfile.js. Я до сих пор не понимаю, почему к этому относятся по-разному. Кто-нибудь знает?

Во-первых, я установил свое местоположение следующим образом в файле .bowerrc:

{
  "directory": "../../artifacts/bower_components"
}

Затем я скорректировал свои пути по мере необходимости в моем gruntfile.js

Кроме того, чтобы убрать папку sass-cache, поскольку я использовал grunt-contrib-compass, я настроил свою задачу компаса с этой опцией:

  cacheDir: '../../artifacts/.sass-cache',

Есть и другие способы сделать это, если вы используете другие инструменты sass/compass.

РЕЗУЛЬТАТ:

  • Теперь я могу выполнять поиск текста по всему проекту и не получать совпадений в своих библиотеках.
  • bower_components и .sass-cache находятся вне досягаемости системы управления версиями.
person toddmo    schedule 04.09.2015
comment
Это действительно решение — удалить Bower_components из вашего проекта. Я использую GIT для управления исходным кодом, поэтому я могу легко исключить эти папки в файле .gitignore, было бы неплохо, если бы вы могли исключить папки с vs2015, чтобы мне не пришлось реструктурировать свои проекты. - person Elger Mensonides; 05.09.2015

В последней версии Visual Studio вам просто нужно щелкнуть правой кнопкой мыши папку/файл и выбрать «Скрыть из обозревателя решений».

Это изменит «xproj» следующим образом:

<ItemGroup>
    <DnxInvisibleFolder Include="wwwroot\" />
</ItemGroup>
person Ilya Chernomordik    schedule 30.10.2016

Глядя на состояние asp.net 5 с Visual Studio 2015, я могу только сказать, что они сильно усложнили и усложнили работу с таскраннерами вроде gulp или grunt. Поскольку я использую Web API 2 для управления своими данными, я переключился на код Visual Studio с Bower, gulp и browsersync, и это оказалось НАМНОГО проще и быстрее с гораздо меньшим количеством беспорядка.

Чтобы создать шаблон запуска: https://github.com/Swiip/generator-gulp-angular

Теперь вы можете использовать любой редактор, и вы получите четкое разделение фронтенда и бэкенда. Кроме того, вы познакомитесь с gulp и bower, а также с (минимальной) работой с командной строкой, которую VS2015 пытается сделать за вас (и не может сделать так много раз).

О да: вам больше не нужно исключать папки, так как шаблон имеет гораздо более разумную структуру папок

person Elger Mensonides    schedule 05.09.2015