2012-02-29 25 views
10

我正在研究一些Nuget的东西。我想知道Nuget是否适合分发.exe命令 - 或者如果Nuget仅仅用于引用项目(当然你也可以链接到exe而不是dll - IIRC)。很显然,我可以轻松创建一个控制台应用程序,然后引用Nuget包,但是我想知道这是否应该始终是必需的。此外,它似乎不像宝石,没有宝石的本地回购,所以我觉得.exe(s)不是用于Nuget包的目的,但我不明白他们为什么需要限制在这个时尚 - 或者我错过了什么?Nuget包是真正的exe命令?

回答

17

你可以在你的NuGet包中包含可执行程序。从Creating and Publishing a Package

工具 - 一包的工具文件夹是PowerShell脚本和程序 从Package Manager控制台访问。将文件夹复制到目标 项目后,它将被添加到`$ env:Path(PATH)环境变量中。

有一些事情你应该知道的,不过,如果你选择这样做:

  • 你是正确的,不像RubyGems的,的NuGet不具备的系统 - 概念或机器级包装;软件包既可以针对单个项目,也可以(更不常用)解决方案。所以这个可执行文件将被放置在它所使用的每个解决方案的包的文件夹中。
  • NuGet Visual Studio扩展程序将包的工具文件夹的路径添加到其控制台的PATH环境变量,以便您可以方便地执行其中的程序。在Visual Studio之外,当使用其他NuGet客户端(如nuget.exe)时,不会有任何自动PATH处理,因此您必须处理获取程序的路径。
  • 此NuGet功能是为与开发项目相关的脚本和可执行程序(例如,代码生成器,操纵项目文件的工具,补充框架如仿真器或开发服务器等的工具)而设计的。虽然你可以肯定地使用这个功能,但是如果你想要提供与项目开发无关的系统程序,你可能想看看Chocolatey,“一个机器包管理器,有点像apt-get,但是在脑海中建立了Windows。“
+0

感谢您的建议 - 我从来没有听说过巧克力。 ;-) – lucidquiet 2012-03-01 19:51:56

+1

如果可执行文件依赖于lib文件夹中的程序集,那么它将无法加载它们,除非它们被复制到工具文件夹中,对吧? – 2013-05-01 02:40:23