【发布时间】:2021-05-20 08:06:41
【问题描述】:
我正在使用 VS 2010 中的 reportviewer 控件来创建客户端报告 (rdlc)。在我的开发机器上一切正常,当我手动编译(通过 VS2010)并手动部署到没有安装开发工具的测试机器时。
为了让测试机器正常工作(无需安装 VS2010 或 ReportViewer.exe),我必须在我的项目中添加对 Microsoft.ReportViewer.Winforms、Microsoft.ReportViewer.Common 和 Microsoft.ReportViewer.ProcessingModel 的引用并拥有他们都是“复制本地”。
我为 Build Action => 嵌入式资源配置了 rdlc 文件。这是向项目添加新 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"。任务 “Rdl编译”: 报告\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 中),解决方案就会编译。
【问题讨论】:
标签: msbuild reportviewer rdlc