Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Elger MensonidesОтветов: 6

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

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

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

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

visual-studio-2015

Ответы

Ответ 1 · рейтинг 14 · Gerald Davis

Свойство "исключить" не скрывает папку от 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.

Ответ 2 · рейтинг 5 · Blake Mumford

Начиная с 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. Дополнительные сведения см. в этой публикации Скотта Хансельмана.

Ответ 3 · рейтинг 3 · Brian Scott

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

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

Ответ 4 · рейтинг 1 · toddmo

Правильно это или нет, но вот что я сделал, чтобы убрать 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 находятся вне досягаемости системы управления версиями.

Ответ 5 · рейтинг 1 · Ilya Chernomordik

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

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

<ItemGroup>
    <DnxInvisibleFolder Include="wwwroot\" />
</ItemGroup>

Ответ 6 · Elger Mensonides

Глядя на состояние 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 пытается сделать за вас (и не может сделать так много раз).

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы