I have a few RDLC files in my WPF application. When I publish the project, the report files don't get published, and when I try to access them with the client I get an error saying that they're not found. I've checked the publish folder, and indeed, they're not there. I call the RDLC files with the following code:
Microsoft.Reporting.WinForms.ReportViewer rvReportViewer;
/* ... */
rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName);
I've tried setting the Build Action on these to "Resource", which is what I have for my static image files, but that doesn't seem to make any difference.
Why don't the reports get copied to the publish directory? Is there a way to force this to happen, or should I be accessing them in some other way?
Thanks!
I don't know if there's special concerns with RDLC files, but here's the general approach for making sure other files get published.
Right click the file in the solution explorer, select Properties. Set the "Build Action" to "Content", and "Copy to output Directory to "Copy if newer".
Go to the project properties->Publish page. Hit "Application Files Button", check "Show all files". Set the "Publish Status" to "Include (auto)"
File Properties
Application Files
I've been using the answer by @nos for a while, but I noticed that in the publication, the set of .rdlc-files is copied to two places:
- The original webapplication project relative location;
- Inside the bin folder.
So if I had \Reports\Report1.rdlc, I would find in the published location:
1. <published folder>\Reports\Report1.rdlc;
2. <published folder>\bin\Reports\Report1.rdlc.
I don't mean to use copies of the rdlc's in the second location and, indeed, if I delete these, the reports are still generated.
I changed the settings for each rdlc-file to:
Build Action: Content;
Copy to Output Directory: Do not copy.
And now nothing is written to the second location.
Sorry guys this has nothing to do with "Copy Always" or "Copy if Newer". In fact I set it to "Never Copy".
This issue is resolved by changing the Build Action from "Embedded Resource" to "Content". Then when you build and publish RLDC files will get copied to the right place.
instead of using .ReportPath
- **used this below codes:
reportViewer1.LocalReport.ReportEmbeddedResource="[Project
Name].[FolderName if Exist].[ReportName].rdlc";
- Then rebuild your deployment Project.