.net 4.0 无法加载文件或程序集';CrystalDecisions.CrystalReports.Engine';/Windows 2012服务器

.net 4.0 无法加载文件或程序集';CrystalDecisions.CrystalReports.Engine';/Windows 2012服务器,.net-4.0,x86,crystal-reports-2010,windows-server-2012,.net 4.0,X86,Crystal Reports 2010,Windows Server 2012,我们有一个用.NET 4.0编写的应用程序,它使用SAP Crystal Reports。虽然同一版本(x86)在Windows 2003/2008(均为x86/x64)中工作正常,但安装了.NET 4.0 framework(x86)并使用13.0.1.x(32位_13_0_1.msi)安装了CrystalReports运行时(从SAP页面下载) 当同样的东西安装在MS 2012服务器(x64)中时,已经预装了.NET framework 4.5,因此我无法安装.NET 4.0,但是它看起来是

我们有一个用.NET 4.0编写的应用程序,它使用SAP Crystal Reports。虽然同一版本(x86)在Windows 2003/2008(均为x86/x64)中工作正常,但安装了.NET 4.0 framework(x86)并使用13.0.1.x(32位_13_0_1.msi)安装了CrystalReports运行时(从SAP页面下载)

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

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

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

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

基本上,如果应用程序在2012服务器上正常工作,我们只是执行一些测试,但这个问题似乎不可能解决。我在谷歌上花了好几个小时都没用。 因此,任何关于检查内容的想法都将受到高度赞赏:)

谢谢 托马斯


编辑


解决方案:安装较旧的2008运行时。

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

我们遇到了相同的问题,但是在我们的项目中指定了版本。此外,我们的项目也没有很强的名称。对程序集进行强命名将不会产生问题

.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>

False..\..\..\..\Workspace\SharedLibraries\trunk\Lib\CrystalDecisions.ReportSource.dll
请注意,SpecificVersion设置为false。把它转换成真正的力量解决了这个问题,我们没有尝试

找不到提示路径,或者提示路径是旧版本。如果没有找到,那么它将获取GAC中找到的第一个Crystal dll,即10.5版本

.csproj之后

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


这将强制生成正确的版本。

另一个解决方案是升级到与VS2010+兼容的Crystal Reports for Visual Studio。如果您希望能够在最近的Visual Studio中编辑报告,这是一个不错的选择。您安装较旧运行时的解决方案在不更改解决方案的情况下解决了问题,而较新的crystal安装需要升级解决方案中的所有报告。

我通过以下方式解决了该程序集错误:

  • 仅限使用NuGet软件包的第一个unistall软件包
  • 第二个是使用NuGet软件包再次安装
  • 最后一个是发布并上传到VPS,它会起作用
好的,解决了。通过使用“gacutil/lr”,我意识到用于构建的CR是针对VS2008的。安装较旧的运行时解决了此问题。