如何使用NuGet包分发可执行文件

Cha*_*ion 7 .net exe process nuget

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

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

是否有建议的方法在NuGet中执行此操作?

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

Adr*_*man 7

您可以将可执行content文件添加到NuGet包的文件夹中.当程序包安装在项目中时,可执行文件将在项目中显示为文件.来自NuGet文档:

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

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

然后,您可以将一个install.ps1脚本添加到NuGet包,以配置项目以将可执行文件复制到输出目录,如此问题的答案所述.

  • 这适用于 packages.config,但不幸的是不适用于现代 PackageReference 场景 (2认同)