Wix 部署:WinForms 报告

Wix deployment: WinForms Report

我正在尝试使用 WIX 部署一个 winforms 应用程序来创建 .exe。 我能够创建 .exe 并安装我的应用程序。 但我无法打印报告 - 没有报告预览,应用程序只打印我的报告。当我尝试时出现错误:

Object reference not set to an instance of an object

在以下行中:

LocalReport localReport = new LocalReport();

当我 运行 我的应用程序在 VS2013 上工作正常,但部署的应用程序不工作(同一台机器)。

我有一个 Bundle.wxs:

<PackageGroup Id="ReportViewer">
  <MsiPackage Id="ReportViewer"
              SourceFile="Files\ReportViewer.msi"
              Cache="no"
              Compressed="yes"
              Permanent="yes"
              Vital="yes"
              InstallCondition="VersionNT >= v5.1 AND NOT ReportViewer10Install = 1"/>
</PackageGroup>

和一个Product.wxs

<Component Guid="xxx">
    <File Source="$(var.Forms.TargetDir)\Microsoft.ReportViewer.Common.dll" KeyPath="yes" />
</Component>
<Component Guid="xxx">
    <File Source="$(var.Forms.TargetDir)\Microsoft.ReportViewer.WinForms.dll" KeyPath="yes" />
</Component>
<Component Guid="xxx">
    <File Source="$(var.Forms.TargetDir)\Reports\MyReport.rdlc" KeyPath="yes" />
</Component>

Microsoft.ReportViewer.WinForms.dll 和 Microsoft.ReportViewer.Common.dll 被标记为 "Copy local"。

有人能帮帮我吗?

事实证明,不是 LocalReport 为 null。 问题出在报告路径上,它是空的。所以我修复了它,它现在运行正常了。

我想也没有必要添加这行:

<Component Guid="xxx">
<File Source="$(var.Forms.TargetDir)\Microsoft.ReportViewer.Common.dll" KeyPath="yes" />
</Component>
<Component Guid="xxx">
<File Source="$(var.Forms.TargetDir)\Microsoft.ReportViewer.WinForms.dll" KeyPath="yes" />
</Component>