2012-02-29 3 views
10

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

ответ

17

Вы можете включить исполняемые программы в пакеты NuGet. От Creating and Publishing a Package:

инструментов - Папка инструментов пакета для Powershell сценариев и программ , доступных из Package Manager Console. После копирования папки в целевой проект он добавляется в переменную среды $ env: Path (PATH).

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

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

Спасибо за предложение - я никогда не слышал о Шоколаде. ;-) – lucidquiet

+1

, если исполняемые файлы зависят от сборок в папке lib, тогда они не смогут их загрузить, если они не дублируются в папке с инструментами, верно? –