Пакеты Nuget, которые действительно являются исполняемыми командами? - PullRequest
11 голосов
/ 29 февраля 2012

Я исследую некоторые вещи Nuget.Мне интересно, подходит ли Nuget для распространения команд .exe или, если на то пошло, если Nuget предназначен только для использования в ссылках на проект (конечно, вы можете также ссылаться на exe вместо dll -IIRC).Очевидно, я могу легко создать консольное приложение и затем ссылаться на пакеты Nuget, но мне интересно, всегда ли это необходимо.Кроме того, кажется, что в отличие от драгоценных камней, нет локального хранилища драгоценных камней, поэтому я чувствую, что .exe (-ы) не предназначены для использования в пакетах Nuget, но я не понимаю, почему их нужно ограничивать в этоммода - или я что-то упустил?

1 Ответ

18 голосов
/ 29 февраля 2012

Вы можете включать исполняемые программы в свои пакеты NuGet.Из Создание и публикация пакета :

tools - Папка tools пакета предназначена для сценариев и программ powershell, доступных из консоли диспетчера пакетов.После того, как папка скопирована в целевой проект, она добавляется в переменную окружения `$ env: Path (PATH).

Однако следует помнить о нескольких вещах, если вырешите сделать это:

  • Вы правы в том, что, в отличие от RubyGems, NuGet не имеет концепции пакетов системного или машинного уровня;пакеты ориентированы либо на один проект, либо (реже) на решение.Таким образом, этот исполняемый файл будет помещен в папку пакета для каждого решения, в котором он используется.
  • Расширение NuGet Visual Studio добавляет путь к папке инструментов пакета в переменную среды PATH его консоли, так что вы можетеудобно выполнять программы в нем.Вне Visual Studio при использовании других клиентов NuGet (например, nuget.exe) не будет автоматической обработки PATH, поэтому вам придется обрабатывать получение пути к программе.
  • Этот NuGetЭта функция предназначена для сценариев и исполняемых программ, которые каким-то образом связаны с разработкой проекта (например, генераторы кода, инструменты, управляющие файлами проектов, инструменты, которые дополняют фреймворки, такие как эмуляторы или серверы разработки и т. д.).Хотя вы, безусловно, можете использовать эту функцию способами, для которых она не предназначена, если вы хотите поставлять системные программы, которые на самом деле не связаны с разработкой проекта, вы можете посмотреть на Chocolatey ,«Диспетчер пакетов компьютеров, похожий на apt-get, но созданный с учетом Windows.»
...