我们有几个非.NET exes(例如PhantomJs),我们通过Process
类从我们的.NET Web应用程序执行。
我想将这些exes包装到NuGet包中,以便它们可以可靠地放置在不同的环境(Web应用程序,控制台应用程序和单元测试)中,而无需将每个可能需要的版本预先放置在某个魔术位置上每台机器。
是否有建议的方法在NuGet中执行此操作?
一种有效但似乎有点笨拙的方法是将EXE作为包装.NET dll中的资源嵌入,然后在运行时将其提取到文件系统。我想知道是否有更简单的方法。
答案 0 :(得分:6)
您可以将可执行文件添加到NuGet包的content
文件夹中。当程序包安装在项目中时,可执行文件将在项目中显示为文件。来自NuGet docs:
content
文件夹中的文件将复制到应用程序的根目录 什么时候安装包。将 Content 文件夹视为根目录 您的目标应用程序。例如,如果我想要一个包添加 目标应用程序的
/images
目录中的图像,请确保 将图像放在包的Content/images
文件夹中。
然后,您可以向NuGet包添加install.ps1
脚本,以配置项目将可执行文件复制到输出目录,如the answer to this question中所述。