В чем разница добавления ссылки напрямую и добавления пакета Nuget - PullRequest
2 голосов
/ 16 апреля 2019

Я хочу сослаться на system.management.automation.dll из Powershll5.0 в моем проекте C #, в чем разница между добавлением ссылки вручную и добавлением с помощью пакета Nuget?
И как я могу гарантировать, что машина, на которой работает мое приложение, работаетесть эта сборка в пути ссылки?Даже если я включаю эту dll в мой установщик приложения, эта dll не находится в ссылочном пути, может ли машина автоматически найти dll?

Ответы [ 4 ]

0 голосов
/ 16 апреля 2019

Ваш вопрос более специфичен для build-engineering , чем powershell .Вы должны использовать инструмент управления пакетами на любом языке, чтобы вывести за пределы вашего проекта все внешние или сторонние зависимости.(nuget, artifactory, nexus, gradle chache и т. д.)

Таким образом:

  • ваш проект будет работать одинаково в любой среде, и вам не нужно документировать, чтонеобходимо поместить в вашу среду и где это сделать:)

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

  • вы будете иметь полный контроль над версиями.Зависимости меняются со временем, и вы можете придерживаться более старой версии.

  • вы можете использовать одну и ту же зависимость в нескольких местах, не сохраняя ее 1000 раз, и убедитесь, что это один и тот же пакет виспользовать везде (единственный источник правды)

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

0 голосов
/ 16 апреля 2019

В чем разница добавления ссылки напрямую и добавления пакета по Nuget

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

Для более подробной информации, вы можете проверить документ о nuget:

Проще говоря, пакет NuGet представляет собой один ZIP-файл с .nupkg расширение, содержащее скомпилированный код (DLL), другие файлы, связанные с этот код и описательный манифест, который включает в себя информацию, такую ​​как номер версии пакета. Разработчики с кодом, чтобы поделиться создать пакеты и публиковать их на общедоступном или частном хосте. Пакет потребители получают эти пакеты от подходящих хостов, добавляют их в свои проекты, а затем вызвать функциональность пакета в своем проекте код. Затем NuGet обрабатывает все промежуточные детали.

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

Это просто, что .nupkg может содержать целый ряд других вещей, кроме из .dll (например, документация)?

Да, пакет NuGet может включать в себя указание файлов в пакете.

Зачем мне использовать один или другой?

Nuget предоставляет несколько дополнительных преимуществ:

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

Надеюсь, это поможет.

0 голосов
/ 16 апреля 2019

Я не собираюсь давать определение ответа, кроме как ответить на ваш последний вопрос

И как я могу гарантировать, что машина, на которой запущено мое приложение, имеет эту сборку в ссылочном пути? Даже если я включаю эту dll в мой установщик приложения, эта dll не находится в ссылочном пути, может ли машина автоматически найти dll?

Насколько я понимаю, добавление dll из Nuget эквивалентно Загрузите dll в packages и установите путь ссылки в .csproj. Но добавление dll вручную не является гарантией того, что dll есть.

Лучше иметь ссылочный путь в .csproj, чтобы Visual Studio примет эти dll-пакеты для рассмотрения в вашей папке вывода сборки. В заключение, если пакеты имеют версию Nuget, используйте ее; иначе добавьте его вручную.

0 голосов
/ 16 апреля 2019

Нет разницы в dll-эталонной точке зрения. NuGet-ссылки заканчиваются обычными dll-ссылками на вашу сборку. NuGet - это инструмент, который автоматически добавляет нам сборки и управляет ими. Вы также можете сделать это управление вручную (добавив ссылки вручную).

Как указывает документация , NuGet-пакет является более широкой концепцией, чем одиночная dll-refence. Внутри одного пакета NuGet может быть несколько dll, других файлов и метаданных.

Проще говоря, пакет NuGet представляет собой один ZIP-файл с .nupkg расширение, содержащее скомпилированный код (DLL), другие файлы, связанные с этот код и описательный манифест, который включает в себя информацию, такую ​​как номер версии пакета. Разработчики с кодом, чтобы поделиться создать пакеты и публиковать их на общедоступном или частном хосте. пакет потребители получают эти пакеты от подходящих хостов, добавляют их в свои проекты, а затем вызвать функциональность пакета в своем проекте код. Затем NuGet обрабатывает все промежуточные детали.

Используйте NuGet всякий раз, когда это возможно.

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