3

我正在尝试更新我的(以前工作的)创建 pdf 的 Web 应用程序以使用 ABCpdf.NET 和 ABCpdf.NET Gecko Runtime nuget 包。

我已经安装了两个软件包(都是 8.1.1.6 版)但是当我运行我的应用程序时,我得到以下WebSupergoo.ABCpdf8.Internal.PDFException

添加 HTML 失败:Gecko 引擎遇到无法恢复的错误。可能的原因: XULRunner 文件夹已损坏或来自其他版本的 ABCpdf。

安装 ABCpdf.NET Gecko Runtime 包后,我得到一个对话框,告诉我需要手动将 XULRunner 文件夹复制到我的输出目录中。为了实现这一点,我在我的应用程序 .csproj 文件中添加了以下内容:

  <Target Name="AfterBuild">
    <CallTarget Targets="CopyAbcpdfToDeployFolder" />
  </Target>
  <Target Name="CopyAbcpdfToDeployFolder">
    <ItemGroup>
      <SourceDir Include="$(ProjectDir)XULRunner\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(SourceDir)" DestinationFolder="$(WebProjectOutputDir)\$(OutputPath)%(SourceDir.RecursiveDir)\XULRunner" />
  </Target>

(这似乎工作正常 - XULRunner 文件夹及其内容在构建后出现在我的 bin 文件夹中)

失败的代码行如下:

theDoc.AddImageUrl(url);

谁能帮我搞定这个工作?

4

2 回答 2

5

事实证明,我对.csproj文件的更改并未将所有文件复制到正确的子文件夹中。为了递归地复制文件夹结构和文件,XML 应该如下所示:

  <Target Name="AfterBuild">
    <CallTarget Targets="CopyXULRunnerToDeployFolder" />
  </Target>
  <Target Name="CopyXULRunnerToDeployFolder">
      <ItemGroup>
          <MyFiles Include="XULRunner\**\*.*" />
      </ItemGroup>
      <Microsoft.Build.Tasks.Copy SourceFiles="@(MyFiles)"  DestinationFiles="@(MyFiles->'$(OutputPath)\XULRunner\%(RecursiveDir)%(Filename)%(Extension)')"/>
  </Target>
于 2012-08-02T07:05:25.847 回答
2

我能够使用以下 MSBuild xml 完成相同的结果:

<ItemGroup>
    <Content Include="XULRunner\**\*.*">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

在处理了有关通过 MSDeploy 构建包的问题(不包括 XULRunner 文件)后,我选择了这个设置。

不确定这是否有任何明显的问题,但到目前为止,它适用于我的多阶段部署设置。

于 2013-03-05T17:41:01.317 回答