发布RDLC文件
我的WPF应用程序中有一些RDLC文件。 当我发布项目时,报告文件不会被发布,当我尝试使用客户端访问它们时,我会收到错误消息,说明找不到它们。 我已经检查了发布文件夹,事实上,它们并不存在。 我使用以下代码调用RDLC文件:
Microsoft.Reporting.WinForms.ReportViewer rvReportViewer; /* ... */ rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName);
我已经尝试将这些构建操作设置为“资源”,这是我对我的静态图像文件所拥有的,但这似乎没有任何区别。
为什么不将报告复制到发布目录? 有没有办法强迫这种情况发生,或者我应该以其他方式访问它们?
谢谢!
我不知道RDLC文件是否有特殊问题,但这是确保其他文件发布的一般方法。
右键单击解决方案资源管理器中的文件,选择“属性”。 将“构建操作”设置为“内容”,将“复制到输出目录”设置为“如果较新则复制”。
转到项目属性 – >发布页面。 点击“应用程序文件按钮”,选中“显示所有文件”。 将“发布状态”设置为“包含(自动)”
文件属性
应用文件
我一直在使用@nos的答案一段时间,但我注意到在发布中,.rdlc文件集被复制到两个地方:
- 原始webapplication项目的相对位置;
- 在bin文件夹里面。
所以如果我有\ Reports \ Report1.rdlc,我会在发布的位置找到:
1. \Reports\Report1.rdlc; 2. \bin\Reports\Report1.rdlc.
我不是要在第二个位置使用rdlc的副本,实际上,如果我删除它们,仍会生成报告。
我将每个rdlc文件的设置更改为:
Build Action: Content; Copy to Output Directory: Do not copy.
现在没有任何东西写到第二个位置。
对不起,这与“一直复制”或“复制如果更新”无关。 实际上我把它设置为“永不复制”。 通过将“构建操作”从“嵌入式资源”更改为“内容”,可以解决此问题。 然后,当您构建和发布RLDC文件时,将被复制到正确的位置。
而不是使用.ReportPath
- **使用以下代码:
reportViewer1.LocalReport.ReportEmbeddedResource="[Project Name].[FolderName if Exist].[ReportName].rdlc";
- 然后重建部署项目。