【问题标题】:How can I use a NuGet package to distribute an executable如何使用 NuGet 包分发可执行文件
【发布时间】:2015-07-14 07:14:35
【问题描述】:

我们有几个非 .NET exe(例如 PhantomJs),我们通过 Process 类从我们的 .NET Web 应用程序执行。

我想将这些 exe 打包到 NuGet 包中,以便它们可以可靠地定位在不同的环境(Web 应用程序、控制台应用程序和单元测试)中,而无需将每个可能需要的版本预先放置在某个神奇的位置每台机器。

在 NuGet 中有推荐的方法吗?

一种可行但似乎有点笨拙的方法是将 EXE 作为资源嵌入到包装器 .NET dll 中,然后在运行时将其提取到文件系统中。我想知道是否有更简单的方法。

【问题讨论】:

  • NuGet 用于开发时间包管理。我认为您不应该强迫它支持部署甚至运行时场景。
  • @LexLi 虽然我能理解这种理念,但今天许多 NuGet 包已经做了这种事情(例如“安装”javascript 或 CSS)。
  • @LexLi 你能推荐一个替代方案吗?

标签: .net process nuget exe


【解决方案1】:

您可以将可执行文件添加到 NuGet 包的 content 文件夹。将包安装到项目上后,可执行文件将在项目中显示为文件。来自NuGet docs

content 文件夹中的文件被复制到应用程序的根目录 安装软件包时。

Content 文件夹视为根文件夹 的目标应用程序。 例如,如果我想要一个包添加一个 图像在目标应用程序的/images 目录中,确保 将图片放在包的Content/images文件夹中。

然后您可以将install.ps1 脚​​本添加到 NuGet 包,以配置项目以将可执行文件复制到输出目录,如the answer to this question 中所述。

【讨论】:

  • 这适用于 packages.config,但不幸的是不适用于现代 PackageReference 场景
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-24
  • 2015-11-27
  • 1970-01-01
  • 2015-03-28
  • 2011-02-09
相关资源
最近更新 更多