Nuget包是真正的exe命令吗?

luc*_*iet 11 exe nuget

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

hal*_*gre 18

您可以在NuGet包中包含可执行程序.从创建和发布包:

tools - 包的tools文件夹用于可从Package Manager控制台访问的powershell脚本和程序.将文件夹复制到目标项目后,它将添加到`$ env:Path(PATH)环境变量中.

但是,如果您选择这样做,您应该注意一些事项:

  • 你是对的,与RubyGems不同,NuGet没有系统或机器级包的概念; 软件包既可以针对单个项目,也可以(更少)针对解决方案.因此,对于使用它的每个解决方案,此可执行文件将放在包的文件夹中.
  • NuGet Visual Studio扩展将包的工具文件夹的路径添加到其控制台的PATH环境变量中,因此您可以方便地执行其中的程序.在Visual Studio之外,当使用其他NuGet客户端(例如nuget.exe)时,不会有任何自动PATH处理,因此您必须处理获取程序的路径.
  • 此NuGet功能专为与开发项目有关的脚本和可执行程序而设计(例如,代码生成器,操作项目文件的工具,补充模拟器或开发服务器等框架的工具等).虽然您当然可以以未设计的方式使用此功能,但如果您希望提供与项目开发无关的系统程序,您可能需要查看Chocolatey,"机器包管理器,有点像apt-get,但是考虑到了windows."

  • 如果可执行文件依赖于lib文件夹中的程序集,那么它将无法加载它们,除非它们在tools文件夹中重复,对吧? (2认同)