【问题标题】:Could not load file or assembly 'CrystalDecisions.CrystalReports.Engine' / Windows 2012 server无法加载文件或程序集“CrystalDecisions.CrystalReports.Engine”/Windows 2012 服务器
【发布时间】:2013-05-15 12:44:02
【问题描述】:

我们有一个用 .NET 4.0 编写的应用程序,它使用这个 SAP Crystal Reports。虽然相同的构建 (x86) 在安装了 .NET 4.0 框架 (x86) 和 CrystalReports 运行时(从 SAP 页面http://scn.sap.com/docs/DOC-7824 下载)的 Windows 2003/2008(x86/x64)中运行良好,但使用 13.0.1。 x (32bit_13_0_1.msi)。

当在 MS 2012 服务器 (x64) 中安装相同的东西时,已经预装了 .NET framework 4.5,因此我无法安装 .NET 4.0,但它看起来是向后兼容的,因为应用程序工作正常,但应用程序抛出异常的 Crystal Reports 部分除外。

无法加载文件或程序集“CrystalDecisions.CrystalReports.Engine,版本 10.5.3700.0,culture=neutral,PublicKeyToken=blahblah”或其依赖项之一。系统找不到指定的文件。

当然,运行时已安装,但由于某种原因,我们的应用程序无法识别这些 DLL。我个人认为这不是构建问题,因为它可以在 2003/2008 服务器中使用相同的配置正常工作。

我们只安装了发布版本,因此没有可用的调试选项,也没有安装 VS。

基本上我们只是在执行一些测试,如果应用程序在 2012 服务器中正常工作,但这个问题似乎无法解决。我在谷歌上花了几个小时无济于事。 因此,非常感谢您对检查什么的任何想法:)

谢谢 托马斯


编辑


解决方案:安装旧的 2008 运行时。
根本原因:在我们的构建机器上,我们仍然安装了两个运行时(我们也需要支持旧版本)。在 proj 文件中,CR 程序集不是特定于版本的引用,仅通过名称引用。因此,在构建过程中,使用了来自 GAC 的第一个最低匹配程序集,因此还需要安装 CR 2008。解决方案是也按版本引用项目文件中的第 3 方程序集,以强制使用较新的程序集。

【问题讨论】:

  • 好的,解决了。通过使用“gacutil /lr”,我意识到用于构建的 CR 用于 VS 2008。安装较旧的运行时解决了这个问题。

标签: .net-4.0 x86 crystal-reports-2010 windows-server-2012


【解决方案1】:

我们遇到了同样的问题,但是在我们的项目中指定了版本。此外,我们的项目名称不强。强大的程序集命名将使这成为一个问题。

.csproj 之前

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL">
     <SpecificVersion>False</SpecificVersion>     <HintPath>..\..\..\..\..\Workspace\SharedLibraries\trunk\Lib\CrystalDecisions.ReportSource.dll</HintPath>
   </Reference>

请注意,SpecificVersion 设置为 false。将其切换为真正的解决问题的方法,我们没有尝试过。

提示路径要么未找到,要么是旧版本。如果没有找到,那么它将抓取在 GAC 中找到的第一个 Crystal dll,即 10.5 版本。

.csproj 之后

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" />

这会强制构建针对正确的版本。

【讨论】:

    【解决方案2】:

    另一个解决方案是升级到与 VS2010+ 兼容的 Crystal Reports for Visual Studio。如果您希望能够在最近的 Visual Studio 中编辑报告,这就是您要走的路。您安装较旧运行时的解决方案无需更改解决方案即可解决问题,而较新的水晶安装需要升级解决方案中的所有报告。

    【讨论】:

      【解决方案3】:

      我通过以下方式解决了该装配错误:

      • 第一个使用 NuGet 包的unistall
      • 二是使用NuGet包重新安装
      • 最后是发布并上传到 VPS 就可以了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        相关资源
        最近更新 更多