2010-08-13 98 views
22

我在我的WPF应用程序中有几个RDLC文件。当我发布该项目时,报告文件不会发布,并且当我尝试通过客户端访问它们时,我收到一条错误消息,说他们找不到。我检查了发布文件夹,事实上,他们不在那里。我所说的RDLC文件,用下面的代码:发布RDLC文件

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

我试着用以下的生成操作设置为“资源”,这是我对我的静态图像文件,但似乎没有不有什么区别。

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

谢谢!

回答

35

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

右键单击解决方案资源管理器中的文件,选择属性。将“Bu​​ild Action”设置为“Content”,然后“Copy to output Directory to”Copy if newer“

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

文件属性

File Properties

应用程序文件

Publish Properties

+0

使用这些设置会将每个rdlc文件的额外副本发布到bin文件夹。查看我的答案以了解其他设置。 – 2013-07-09 08:03:45

27

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

  1. 原来的web应用项目相对位置;
  2. 在bin文件夹中。

所以,如果我有\报告\ 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

这应该是正确的答案 – mork 2014-05-12 12:49:50

+0

同样在这里,这应该是正确的解决方案 – 2015-12-10 01:46:35

2

而不是使用。ReportPath

  1. **使用该代码如下:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project 
Name].[FolderName if Exist].[ReportName].rdlc"; 
  • 然后重建部署项目。
  • 2

    对不起,这与“复制总是”或“如果是新的复制”无关。事实上,我将它设置为“永不复制”。 通过将生成操作从“嵌入式资源”更改为“内容”来解决此问题。然后,当你建立和发布RLDC文件将被复制到正确的地方。