在SSRS 2008R2下引用System.Core(4.0)时如何解决报告部署错误

Har*_*ada 8 reporting-services ssrs-2008

前言:

开发环境:在本地机器上使用BIDS + MSSQL 2012的Visual Studio 2010

生产环境:用于Live Report Server的MSSQL 2008 R2

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

加载代码模块时出错:'System.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'.详细信息:无法加载文件或程序集"System.Core程序,版本= 4.0.0.0,文化=中性公钥= b77a5c561934e089"或它的一个依赖.此程序集由比当前加载的运行时更新的运行时构建,无法加载.

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

REF

在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
Run Code Online (Sandbox Code Playgroud)

这就像我所说的那样"嵌入"一样多.从它的外观来看它真的只是一个装配的参考.

非常感谢协助.

解决方案 由于您无法引用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实例的正确目录来获取程序集.我已将我的安装移动到另一个目录,但我没有把它放在新路径中.

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

资源

这个似乎表明SSRS 2014也不支持它(我说不出话,MICROSOFT!) MS KB

Har*_*ada 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 实例的正确目录来获取程序集。我已将安装移动到另一个目录,但没有将其放在新路径中。