Почему в VS 2015 community Manage NuGet создает папку пакетов и скриптов и скрывает папку пакетов?

#visual-studio #visual-studio-2015 #nuget #nuget-package

#visual-studio #visual-studio-2015 #nuget #nuget-package

Вопрос:

Если я установлю пакет AngularJS Core с помощью NuGet Package Manager, я получу имя папки «package» в корне проекта с заполненными сценариями, но в то же время будет создана папка «scripts» с дубликатами тех же сценариев.

Есть ли какая-либо причина для создания папок «скрипты» и «пакеты»?

Почему, если я нажму «Показать все файлы», обозреватель решений продолжит скрывать папку «пакеты»?

Ответ №1:

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

Если вы добавили пакет один раз, он будет добавлен в папку пакетов, и в зависимости от этого пакета внутри вашего проекта будут созданы некоторые папки, например: Скрипты, некоторые другие пакеты изменяют web.config или добавляют некоторые строки кода в некоторые файлы, в зависимости от того, что делает пакет.

Если вы добавили тот же пакет в другой проект, он не будет загружен снова, но он будет скопирован из локальной папки пакетов.

Большинство пакетов содержат библиотеки DLL, и когда вы добавляете такой пакет, проект будет ссылаться на DLL непосредственно из папки пакетов, он не будет копировать ее в саму папку проекта.

Однако с пакетами, содержащими содержимое, такое как скрипты, его необходимо скопировать в папку проекта, поскольку оно будет опубликовано вместе с проектом, и это в основном происходит с самим веб-проектом.

Комментарии:

1. Так в чем причина, по которой он создаст папку «скрипты» и «пакет» с теми же сценариями, что и в случае с AngularJS Core package?

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

3. Теоретически я могу ссылаться на «пакеты» так же, как на «скрипты», поэтому мне действительно не нужны скрипты для запуска проекта. если я интегрирую другой проект в решение, NuGet не будет дублировать пакеты, но он переделает «скрипты» для этого проекта. Итак, с несколькими проектами я по-прежнему получаю «скрипты», созданные для каждого из них в примере пакета AngularJS Core, так для чего нам нужны «пакеты»?

4. Скрипты — это просто особый случай, обычный случай только для DLL, и это зависит от создателя пакета, который решил скопировать папку scripts внутри проекта, если вы этого не хотите, вы можете удалить, но обходным путем будет то, что вам нужно будет добавить ссылку на каждый отдельный файл.файл внутри папки скриптов, который находится в папке пакетов, приведет к большому беспорядку внутри папки проекта и большому количеству ненужной работы

5. Я специально говорил о NuGet. На самом деле кажется, что менеджер пакетов NuGet хочет, чтобы вы использовали папку Scripts, поскольку в моем примере папка b / c Packages не отображается в обозревателе решений.

Ответ №2:

На самом деле папка пакета находится не в корневой папке проекта, а в папке решения. Он не будет добавлен в окна обозревателя решений, поскольку он использовался для управления целыми пакетами решений для всех проектов.

(1) Папка скриптов в папке «Пакеты», например снимок экрана 1, принадлежала пакету, она была частью загруженного пакета.

(2) Папка скриптов в обозревателе решений, например снимок экрана 2, была добавлена в конкретный проект в качестве папки содержимого. Я понимаю, что только конкретный пакет имеет эту функцию, например, он будет добавлен в установочный файл, если вы хотите установить приложение на другой компьютер. Но мы не смогли установить все пакеты в папку «Package» для этого проекта.

На самом деле Хайтам Шаддад ранее предоставил правильное определение, но, короче говоря, я понимаю, что эта ссылка на содержимое скрипта отличалась от ссылки на сборку, это было связано с тем, как члены пакета создают пакет. Конечно, если у вас есть инструмент NuGet Package Explorer, вы найдете структуры этого пакета.

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. итак, почему существуют две копии одних и тех же скриптов, как на вашем рисунке, сценарии angular находятся в этой папке Scripts, но они также будут в папке Packages, которая скрыта, как показано на вашем рисунке.

Ответ №3:

Для большинства пакетов nuget при их восстановлении будет создана только папка «пакеты». Причина, по которой вы не видели ее в обозревателе решений, заключается в том, что это просто папка, созданная для размещения файлов пакета nuget, и вы можете изменить путь к папке, если хотите, она не является частью проекта / решения. И если вы используете контроль версий, также не рекомендуется проверять папку «пакеты» в системе управления версиями.

Для папки «scripts» она управляется автором пакета nuget, а имя папки может быть anystring . Если автор хочет, чтобы папка была скопирована и добавлена в проект, он поместит ее в папку «содержимое» при создании пакета nuget.

Комментарии:

1. итак, почему существует 2 копии одних и тех же скриптов?

2. @MilesMorales При выполнении действия восстановления все файлы пакетов nuget восстанавливаются в папку «пакеты». И обычно папка «пакеты» находится за пределами папки вашего проекта. И затем nuget обнаружил, что в папке «содержимое» существуют некоторые файлы / папки, затем он скопирует эти файлы / папки в папку вашего проекта. Обратитесь к этой ссылке для получения подробной информации: docs.nuget.org/ndocs/create-packages /…