Report Viewer SSRS 2005 to SSRS 2008 Upgrade and Web Deploy - Local Mode

After upgrading some SSRS reports in Visual Studio 2010 for my web project I ran into some issues. Here are the updates I had to make to get them working and deployed:

Error:
The report definition is not valid. Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded
Solution:
Reference 10.0 versions of the Microsoft.ReportViewer.Common, Microsoft.ReportViewer.ProcessingModel and Microsoft.ReportViewer.WebForms.dll


Error:

The base class includes the field 'ReportViewer1', but its type (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer)
Solution:
Change the referenced version of the assembly in the aspx where the ReportViewer control lives:
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

And when you go to deploy with Cruise Control.NET / MSBuild and it fails...


Error:

The report definition is not valid.  Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.
Solution:
In the your project, change the Build Action to "None" and change Copy to Output to "Copy if Newer" for each of the .rdlc files (so MSBuild ignores them).

Remove this block from web.config (not even sure if this is relevant... certainly not necessary)
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>
I installed ReportViewer.exe on the web server which added the newer dlls to the GAC so they don't need to be copied with the build.

Hope this helps.

No comments: