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

Tom*_*lik 6 x86 .net-4.0 crystal-reports-2010 windows-server-2012

我们有一个用.NET 4.0编写的应用程序,它使用这个SAP Crystal Reports.虽然安装了.NET 4.0框架(x86)和安装了CrystalReports运行时的Windows 2003/2008(x86/x64)中的相同版本(x86)工作正常(从SAP页面http://scn.sap.com/上删除)docs/DOC-7824)使用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服务器上正常运行,我们只是执行一些测试,但这个问题似乎无法解决.我花了几个小时在Google上无济于事.所以任何想法检查什么是高度赞赏:)

谢谢托马斯


编辑


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

Chu*_*way 5

我们遇到了同样的问题,但是在我们的项目中指定了版本.我们的项目也没有名字.强烈命名程序集会使这成为一个问题.

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

请注意,SpecificVersion设置为false.将此切换为true可能解决了问题,我们没有尝试过.

提示路径未找到或是旧版本.如果没有找到它,它将获取GAC中找到的第一个Crystal dll,这是10.5版本.

.csproj之后

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" />
Run Code Online (Sandbox Code Playgroud)

这会强制构建版本不正确.