Я использую элемент управления reportviewer из VS 2010 для создания отчетов на стороне клиента (rdlc). Все работает отлично на моей машине разработки, и когда я вручную компилирую (через VS2010) и вручную развертываю на тестовой машине, на которой не установлены средства разработки.
Чтобы заставить тестовую машину работать (без установки VS2010 или ReportViewer.exe), мне пришлось добавлять ссылки в моем проекте в Microsoft.ReportViewer.Winforms, Microsoft.ReportViewer.Common и Microsoft.ReportViewer.ProcessingModel и имеют все они "Копировать локальные".
У меня есть файлы rdlc, настроенные для Build Action = > встроенных ресурсов. Это значение по умолчанию при добавлении нового проекта rdlc в проект. Я открыт для настройки этого в противном случае, если это разрешит эту проблему (не знаю, связано ли это).
Проблема: с момента добавления файлов rdlc решение больше не строится на сервере сборки. Я установил ReportViewer.exe на сервер сборки и проверил, что необходимые сборки существуют в GAC. Рамка .Net 4 НЕ установлена на сервере сборки - я не думаю, что это требуется, потому что решение нацелено на 3.5 runtime.
Я считаю, что корень проблемы следующий из журнала сборки:
Цель "RunRdlCompiler": создание цели "RunRdlCompiler" полностью. Выходной файл "obj\Release\RdlCompile.compiled" делает не существует. Использование задачи "RdlCompile" от сборки "Microsoft.ReportViewer.Common, Версия = 9.0.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a". Задача "RdlCompile": Report\RDLC\GreenReport.rdlc(0,0): Ошибка rsInvalidReportDefinition: определение отчета недействительно. Подробности: определение отчета имеет недопустимое пространство имен задач 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' который не может быть обновлен.
Из того, что я могу сказать, Microsoft.ReportViewer.Common версии 10.0.0.0 является тем, что следует использовать для "компиляции" rdlc, но MSBuild, похоже, использует 9.0.0.0. Я считаю, что если бы я мог заставить его использовать правильную версию (которая установлена в GAC), решение будет компилироваться.