Я использую элемент управления 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.
Я считаю, что корень проблемы заключается в следующем из журнала сборки:
Цель "RunRdlCompiler": сборка
цель "RunRdlCompiler" полностью.
Выходной файл
"obj \ Release \ RdlCompile.compiled" делает
не существует. Использование задачи "RdlCompile"
из сборки
«Microsoft.ReportViewer.Common,
Версия = 9.0.0.0, Культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a ". Задача
"RdlCompile":
Отчет \ 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), решение скомпилировалось бы.