8

前言:

开发环境: Visual Studio 2010 with BIDS + MSSQL 2012 on local box

生产环境: MSSQL 2008 R2 For Live Report Server

在我的报告中引用 System.Core 时,我在部署报告时遇到问题。错误如下。

加载代码模块时出错:'System.Core,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'。详细信息:无法加载文件或程序集“System.Core,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。

我在报告中引用了 System.Core,以便可以使用 TimeZoneInfo 类。我已经看到有关在 SSRS 中使用此类的其他问题,并且按照这些问题中的任何建议,我无法解决该问题。

参考

在 SSRS 中使用时区

SSRS 2k8,自定义 dll,找不到文件

Reporting Services 2012 部署错误:“加载代码模块时出错”

我可以参考 System.Core 4.0 并在本地运行,没有任何问题;但是,当我部署时,我收到上述错误消息。进一步澄清..这发生在部署过程中,而不是在部署并尝试在服务器上运行报告之后。

编辑

CodeModules 的报告 RDL xml 如下所示:

<CodeModules>
<CodeModule>System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

这就是我可以说的尽可能多的“嵌入”。从外观上看,它实际上只是对程序集的引用。

协助将不胜感激。

解决方案 由于您不能引用 4.0,您可以引用 3.5 来访问 TimeZoneInfo 类。

步骤 1. 为您希望使用的 TimeZoneInfo 逻辑创建一个包装类

步骤 2. 目标 3.5

步骤 3. 构建发布版本并将其复制到您的 [DRIVE]:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies 目录,以便您的设计人员可以加载它

步骤 4. 将相同的程序集部署到 SQL Server @ 以下文件夹 [DRIVE]:\Program Files\Microsoft SQL Server\MSRS10.SQL2008\Reporting Services\ReportServer\bin\

现在您可以部署您的报告了。所以我的错误如下

  1. 我没有参考 3.5

  2. 我没有复制到我的 Visual Studio 实例的正确目录来获取程序集。我已将我的安装移动到另一个目录,但我没有将它放在新路径中。

更新 如果有人试图引用 .NET 4.0 ins SSRS 2012 及更高版本但仍然出现错误,答案很简单。SSRS 2012 和 2014(?)仍然不支持 .NET 4.0

资源

这似乎表明 SSRS 2014 也不支持它(我无语,微软!) MS KB

4

1 回答 1

0

按照要求:

解决方案

由于无法引用 4.0,因此可以引用 3.5 来访问 TimeZoneInfo 类。

步骤 1. 为您希望使用的 TimeZoneInfo 逻辑创建一个包装类

步骤 2. 目标 3.5

步骤 3. 构建发布版本并将其复制到您的 [DRIVE]:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies 目录,以便您的设计人员可以加载它

步骤 4. 将相同的程序集部署到 SQL Server @以下文件夹 [DRIVE]:\Program Files\Microsoft SQL Server\MSRS10.SQL2008\Reporting Services\ReportServer\bin\

现在您可以部署您的报告了。所以我的错误如下

我没有参考 3.5

我没有复制到我的 Visual Studio 实例的正确目录来获取程序集。我已将我的安装移动到另一个目录,但我没有将它放在新路径中。

于 2015-06-29T14:32:56.123 回答