【问题标题】:PhantomJS nuget package doesn't install .exe file inside .NET Core projectPhantomJS nuget 包没有在 .NET Core 项目中安装 .exe 文件
【发布时间】:2016-08-19 09:10:26
【问题描述】:

我想为我的 .NET Core 项目安装 phantomJS nuget 包。此 nuget 包包含一个 .exe 文件 (phantomjs.exe)。 (C:\Users\.nuget\packages\PhantomJS\2.1.1\tools\phantomjs)

构建或发布解决方案不会将 .exe 文件复制到 bin 或发布文件夹中。

我是否必须在我的 project.json 中添加特定配置才能在我发布或构建时自动复制 .exe??

【问题讨论】:

  • 您可以使用 postcompile/postpublish 脚本复制文件或将其包含在 publishOptions 包含部分中。

标签: phantomjs asp.net-core nuget-package


【解决方案1】:

目前 PhantomJS nuget 包 (v.2.1.1) 针对经典的仅限 Windows 的 .NET 项目; phantomjs.exe 包含在“工具”文件夹中,并且在安装 nuget 时执行脚本(install.ps1),该脚本使用 CopyToOutputDirectory=true 选项将“phantomjs.exe”添加到项目中。不幸的是,netcore 项目不支持安装脚本;由于 PhantomJS nuget 包不包含任何托管程序集,因此可以为 netcore 项目安装它,但忽略“工具”文件夹。

可以使用 project.json 中的“脚本”部分(@Pawel 提到的“postcompile”/“postpublish”)显式复制 phantomjs.exe,但似乎没有任何可接受的方法来解析 PhantomJS 的路径构建过程中的 nuget 包。无论如何,PhantomJS nuget 包仅包含 windows PhantomJS 构建,如果您打算在 Linux 或 OS-X 下运行 .NET Core 项目,它是无用的。

也许最好完全避免将 PhantomJS nuget 用于 netcore 项目,并创建自定义构建脚本(使用“postcompile”执行)为您的目标运行时平台下载和提取适当的 phantomjs 构建。

【讨论】:

    【解决方案2】:

    我发现以下方法可以在发布时将 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多