前言:
开发环境: 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 中使用此类的其他问题,并且按照这些问题中的任何建议,我无法解决该问题。
参考
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\
现在您可以部署您的报告了。所以我的错误如下
我没有参考 3.5
我没有复制到我的 Visual Studio 实例的正确目录来获取程序集。我已将我的安装移动到另一个目录,但我没有将它放在新路径中。
更新 如果有人试图引用 .NET 4.0 ins SSRS 2012 及更高版本但仍然出现错误,答案很简单。SSRS 2012 和 2014(?)仍然不支持 .NET 4.0
这似乎表明 SSRS 2014 也不支持它(我无语,微软!) MS KB