发布RDLC文件

时间:2010-08-13 23:06:04

标签: c# visual-studio-2010 reportviewer

我的WPF应用程序中有一些RDLC文件。当我发布项目时,报告文件不会被发布,当我尝试使用客户端访问它们时,我会收到错误消息,说明找不到它们。我已经检查了发布文件夹,事实上,它们并不存在。我使用以下代码调用RDLC文件:

Microsoft.Reporting.WinForms.ReportViewer rvReportViewer;
/* ... */
rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName);

我已经尝试将这些构建操作设置为“资源”,这就是我对静态图像文件所拥有的,但这似乎没有任何区别。

为什么报告不会被复制到发布目录?有没有办法强迫这种情况发生,或者我应该以其他方式访问它们?

谢谢!

4 个答案:

答案 0 :(得分:39)

我不知道RDLC文件是否有特殊问题,但这是确保其他文件发布的一般方法。

右键单击解决方案资源管理器中的文件,选择“属性”。将“Bu​​ild Action”设置为“Content”,将“Copy to output Directory”设置为“如果更新则复制”。

转到项目属性 - >发布页面。点击“应用程序文件按钮”,选中“显示所有文件”。将“发布状态”设置为“包含(自动)”

文件属性

File Properties

申请文件

Publish Properties

答案 1 :(得分:34)

我一直在使用@nos的答案,但我注意到在出版物中,.rdlc文件集被复制到两个地方:

  1. 原始webapplication项目的相对位置;
  2. 在bin文件夹中。
  3. 所以如果我有\ Reports \ Report1.rdlc,我会在发布的位置找到:

     1. <published folder>\Reports\Report1.rdlc;
     2. <published folder>\bin\Reports\Report1.rdlc.
    

    我不是要在第二个位置使用rdlc的副本,实际上,如果删除这些副本,报告仍会生成。

    我将每个rdlc文件的设置更改为:

    Build Action: Content;
    Copy to Output Directory: Do not copy.
    

    现在没有任何内容写入第二个位置。

答案 2 :(得分:6)

对不起家伙这与“一直复制”或“复制如果更新”无关。实际上我把它设置为“永不复制”。 通过将“构建操作”从“嵌入式资源”更改为“内容”,可以解决此问题。然后,当您构建和发布RLDC时,文件将被复制到正确的位置。

答案 3 :(得分:2)

而不是使用.ReportPath

  1. **使用以下代码:
  2. reportViewer1.LocalReport.ReportEmbeddedResource="[Project
    Name].[FolderName if Exist].[ReportName].rdlc";
    
    1. 然后重建部署项目。