MSBuild 使用错误版本的程序集来编译 RDLC 文件

2024-03-27

我正在使用 VS 2010 中的 reportviewer 控件来创建客户端报告 (rdlc)。在我的开发机器上一切正常,当我手动编译(通过 VS2010)并手动部署到没有安装开发工具的测试机器时。

为了让测试机正常工作(无需安装 VS2010 或 ReportViewer.exe),我必须在项目中添加对 Microsoft.ReportViewer.Winforms、Microsoft.ReportViewer.Common 和 Microsoft.ReportViewer.ProcessingModel 的引用,并将它们全部添加到“复制本地”。

我为构建操作配置了 rdlc 文件 => 嵌入资源。这是向项目添加新 rdlc 时的默认设置。我愿意配置这个,否则如果这可以解决这个问题(不知道它是否相关)。

问题:自从添加 rdlc 文件后,解决方案不再在构建服务器上构建。我已在生成服务器上安装了 ReportViewer.exe,并验证了 GAC 中是否存在所需的程序集。 .Net 4 框架未安装在构建服务器上——我认为这不是必需的,因为该解决方案针对的是 3.5 运行时。

我认为问题的根源在于构建日志中的以下内容:

目标“RunRdlCompiler”:构建 完全针对“RunRdlCompiler”。 输出文件 “obj\Release\RdlCompile.compiled”确实 不存在。使用“RdlCompile”任务 从装配 “微软.ReportViewer.Common, 版本=9.0.0.0,文化=中立, PublicKeyToken=b03f5f7f11d50a3a”。任务 “Rdl编译”: 报告\RDLC\GreenReport.rdlc (0,0): 错误 rsInvalidReportDefinition: 报告定义无效。 详细信息:报告定义有一个 无效的目标命名空间 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' 无法升级。

据我所知,Microsoft.ReportViewer.Common 版本 10.0.0.0 应该用于“编译”rdlc,但 MSBuild 似乎使用 9.0.0.0。我相信,如果我可以强制它使用正确的版本(安装在 GAC 中),该解决方案就能编译。


这是因为您的 Microsoft.Common.Targets 文件指向 9.0 版本的程序集。

如果你查看 [sysdir]\Microsoft.NET\Framework\v3.5 你会发现Microsoft.Common.targets,这推动了 MSBuild 的许多工作。此版本的通用目标文件指向[Program Files]\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets强制 MSBuild 以 9.0 版本运行。

当您安装 .NET 4.0 时,您会在 v4.0.x 目录中获得一个新的通用目标文件,这个新文件现在指向[Program Files]\MSBuild\Microsoft\VisualStudio\v10.0\ReportingServices\Microsoft.ReportingServices.targets它指向 ReportViewer 程序集的 10.0 版本。

10.0 ReportViewer 是针对 .NET 3.5 编译的,旨在在 3.5 和 4.0 中工作。您很可能摆脱 .NET 4.0 框架,并更改 3.5 通用目标文件以指向新的 ReportingServices 目标文件,并且它应该可以工作。无论如何,从理论上讲,我从未真正尝试过。您可能最好坚持使用 4.0,因为这就是我们为新查看器设计 MSBuild 支持时的意图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSBuild 使用错误版本的程序集来编译 RDLC 文件 的相关文章

随机推荐

  • 如何授予 cron 作业文件权限?

    我已经为我的网站设置了 cron 选项卡 但我的邮件 ID 中收到了类似于脚本 权限被拒绝 的消息 谁能帮我告诉我可能是什么问题 谢谢 您在设置 crontab 时遇到此错误吗 或者从 cron 运行的脚本 如果在设置 crontab 时
  • 在“资源”参数中多次指定该项目。 “资源”参数不支持重复项目

    编译我的 Visual Studio C 项目时 出现以下错误 The item obj Debug SampleProject Forms MDIMain resources was specified more than once in
  • 单击/聚焦时更改 Select 组件的 InputLabel 颜色

    如果您查看此处的组件 https material ui com components selects https material ui com components selects 您会看到单击时 标签向上移动并最小化 但也会更改颜色
  • Bitbucket API 2 - 在团队项目中创建存储库

    我的 bitbucket 帐户上有一个团队 myteam 其中包含一个名为mainproject 每当我想在其中创建存储库时 我只需要执行以下命令行 curl X POST v u myaccount passwd https api bi
  • 访问数组中的对象

    我有以下输出 Array 0 gt stdClass Object id gt 20 news title gt Startup finance docs in GitHub news url gt http venturebeat com
  • 如何判断一个字符是否是元音

    我正在尝试使用vector substr 但我不知道这是否可能 有谁知道另一种方法可以做到这一点 我的目标是取出一个向量中的单词并将其与第一个元音分开 任何帮助表示赞赏 我的代码如下所示 include
  • 从日志文件解析 Log4j 布局 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有可以读取所有内容的开源工具布局实现 http logging apache org log4j
  • 如何学习 SQL Server 索引调优? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在编写 tsql 查询时学习索引调优的最佳实用方法是什么 我有 VS2008 SQL Express 有
  • 如何以编程方式验证 Play 商店上的应用程序版本?

    我在 Play 商店中有一个应用程序 我想执行以下操作 当用户启动应用程序时 它应该验证 Play 商店中的应用程序版本是否与安装的版本相同 如果不是 我将显示一个对话框来警告这种情况 并提供重定向到 Play 商店进行更新的选项 我知道游
  • 接受用户输入

    我目前正在 Malbolge 中编写一款文字冒险类型游戏 谁能告诉我如何在 Malbolge 中接受用户输入 我能够将文本输出到屏幕上 但是 我似乎不知道如何接受输入 GHJUYGHJKLKUJHM MJ 6AG9F5D8V A8 gt 7
  • PHP 正则表达式中的 [\S\s]* 是什么意思?

    是什么意思 s S 在 PHP 的正则表达式中 做 s S 实际上匹配每个字符串相同 默认情况下 与新行不匹配 s S 是解决这个问题的一个技巧 这在 JavaScript 中很常见 但在 PHP 中你可以使用 s标记 to 以使点匹配所有
  • Kendo Ui 数据源添加功能无法正常工作

    我定义了一个 Kendo 数据源 如下所示 它正在填充 ListView 中的值 var datasourceAppList new kendo data DataSource transport create function optio
  • .NET Framework 中的“AssemblyTitle”属性

    实际用途是什么AssemblyTitle属性 MSDN 表示它指定了程序集的描述 并且程序集标题是一个可以包含空格的友好名称 Visual Studio 要求在项目的属性窗口中提供程序集名称以及默认命名空间 有一个AssemblyName属
  • 如何在SQLite中获取ROWID?

    考虑这个简单的表 tbl1 A first letter B second letter C third letter 第一列是letter第二列是desc 我可以毫无问题地执行此查询 select from tbl1 where lett
  • 从数组创建 mpf

    我正在尝试使用fsolve结合mpmath包裹 但是 我收到错误cannot create mpf from array mpf 1 0 dtype object 这是重现错误的最小示例 对于这个例子 技术上我不需要mpmath包 但我的实
  • 如何 rbind 与其列名称匹配的向量?

    rbind 在将向量绑定在一起时不检查列名 l list row1 c 10 20 row2 c 20 10 names l row1 c A B names l row2 c B A l row1 A B 10 20 row2 B A 2
  • 水豚与 :js => true 导致测试失败

    我对 Capybara 和 Rails 测试都很陌生 所以如果这是一个简单的答案 请原谅我 我有这个测试 it should be able to edit an assignment do visit dashboard path sel
  • 在 RabbitMQ 监听器中隐藏运行时异常

    在某些故意发生的情况下 我使用了一些异常来拒绝消息 但在控制台中显示了乍一看似乎不太正常的异常 如何在登录控制台 文件时隐藏该特定异常 我正在使用 spring boot 和默认记录器 public static class Undispa
  • 用于平滑开放 3D 网格边缘的算法

    我有一个 3D 网格 它代表一个具有一些粗糙边界的表面 我想对其进行平滑处理 我使用半边数据结构来存储几何图形 因此我可以轻松地迭代边界边 顶点和面 我还可以使用点积和叉积轻松确定给定的一对边是否是凸 凹的 平滑边缘的最佳方法是什么 使它们
  • MSBuild 使用错误版本的程序集来编译 RDLC 文件

    我正在使用 VS 2010 中的 reportviewer 控件来创建客户端报告 rdlc 在我的开发机器上一切正常 当我手动编译 通过 VS2010 并手动部署到没有安装开发工具的测试机器时 为了让测试机正常工作 无需安装 VS2010