我想为我的.NET Core项目安装phantomJS nuget包。此nuget包中包含.exe文件(phantomjs.exe)。 (C:\ Users \用户.nuget \包\ PhantomJS \ 2.1.1 \工具\ phantomjs)
构建或发布解决方案不会在bin或publish文件夹中复制.exe文件。
我必须在project.json中添加特定配置,以便在我发布或构建时自动复制.exe吗?
答案 0 :(得分:7)
目前PhantomJS nuget包(v.2.1.1)针对经典的Windows专用.NET项目; phantomjs.exe包含在'工具'文件夹和安装nuget执行脚本(install.ps1),添加' phantomjs.exe'使用CopyToOutputDirectory = true选项到项目。遗憾的是,netcore项目不支持安装脚本;由于PhantomJS nuget包不包含任何托管程序集,因此可以为netcore项目安装它,但是工具'文件夹被忽略。
可以使用"脚本" project.json中的部分(" postcompile" /" postpublish" @Pawel提到)明确复制phantomjs.exe,但似乎没有任何可接受的方法来解析PhantomJS nuget的路径在构建过程中打包。无论如何,PhantomJS nuget包仅包含Windows PhantomJS版本,如果您计划在Linux或OS-X下运行.NET Core项目,它将毫无用处。
也许最好避免将PhantomJS nuget用于netcore项目,并创建自定义构建脚本(使用" postcompile"执行),为目标运行时平台下载并提取适当的phantomjs构建。
答案 1 :(得分:0)
我发现以下将exe复制到发布时的输出文件夹的方法:
<Target Name="PhantomJsOnBuild" AfterTargets="Build">
<Copy SourceFiles="$(NugetPackageRoot)PhantomJS\2.1.1\tools\phantomjs\phantomjs.exe" DestinationFolder="$(OutputPath)" />
</Target>
<Target Name="PhantomJsOnPublish" AfterTargets="Publish">
<Copy SourceFiles="$(NugetPackageRoot)PhantomJS\2.1.1\tools\phantomjs\phantomjs.exe" DestinationFolder="$(PublishDir)" />
</Target>