Estoy usando el control del reportviewer de VS 2010 para crear informes del lado del cliente (rdlc). Todo funciona bien en mi máquina de desarrollo, y cuando compilo manualmente (a través de VS2010) y despliegue manualmente en una máquina de prueba que no tiene herramientas de desarrollo instaladas.MSBuild utilizando la versión incorrecta del ensamblado para compilar el archivo RDLC
Para que la máquina de prueba funcione (sin instalar VS2010 o ReportViewer.exe), tuve que agregar referencias en mi proyecto a Microsoft.ReportViewer.Winforms, Microsoft.ReportViewer.Common y Microsoft.ReportViewer.ProcessingModel y tener todos ellos "Copiar local".
Tengo los archivos rdlc configurados para Build Action => recursos incrustados. Esta es la configuración predeterminada al agregar una nueva rdlc al proyecto. Estoy abierto a configurar esto, de lo contrario, si esto resolvería este problema (no sé si está relacionado).
El problema: desde que se agregaron los archivos rdlc, la solución ya no se genera en el servidor de compilación. He instalado ReportViewer.exe en el servidor de compilación y he verificado que los ensamblados necesarios existen en el GAC. El framework .Net 4 NO está instalado en el servidor de compilación. No creo que sea necesario porque la solución se dirige al tiempo de ejecución 3.5.
creo que la raíz del problema es el siguiente desde el registro de generación:
Target "RunRdlCompiler": Building target "RunRdlCompiler" completely. Output file "obj\Release\RdlCompile.compiled" does not exist. Using "RdlCompile" task from assembly "Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "RdlCompile": Report\RDLC\GreenReport.rdlc (0,0): error rsInvalidReportDefinition: 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.
De lo que puedo decir, Microsoft.ReportViewer.Common versión 10.0.0.0 es lo que se debe utilizar para "compilar" el rdlc, pero parece que MSBuild está usando 9.0.0.0. Creo que si pudiera forzarlo a utilizar la versión correcta (que está instalada en el GAC), la solución se compilaría.
No voy a meterme con eso ahora que está funcionando, pero la explicación es ciertamente esclarecedora: busqué alto y bajo en Google esta información y no pude encontrar nada. –