Пакеты Nuget, которые действительно являются командами exe?

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

Ответ 1

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

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

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

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