【问题标题】:Nuget packages that are really exe commands?Nuget 包真的是 exe 命令吗?
【发布时间】:2012-03-18 15:29:02
【问题描述】:

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

【问题讨论】:

    标签: exe nuget


    【解决方案1】:

    您可以在 NuGet 包中包含可执行程序。来自Creating and Publishing a Package

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

    不过,如果您选择这样做,您应该注意以下几点:

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

    【讨论】:

    • 感谢您的建议——我从未听说过 Chocolatey。 ;-)
    • 如果可执行文件依赖于 lib 文件夹中的程序集,那么它将无法加载它们,除非它们在工具文件夹中重复,对吧?
    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 2018-04-11
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多