我们有一个用.NET 4.0编写的应用程序,它使用这个SAP Crystal Reports。虽然安装了.NET 4.0框架(x86)和使用13.0安装的CrystalReports运行时(从SAP页面http://scn.sap.com/docs/DOC-7824中删除),但Windows 2003/2008(x86 / x64)中的相同版本(x86)工作正常。 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。解决方案是按版本引用项目文件中的第三方程序集以强制使用较新的程序集。
答案 0 :(得分: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>
请注意,SpecificVersion设置为false。将此切换为true可能解决了问题,我们没有尝试过。
提示路径未找到或是旧版本。如果没有找到它,它将获取GAC中找到的第一个Crystal dll,这是10.5版本。
.csproj
之后<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" />
这会强制构建版本不正确。
答案 1 :(得分:1)
另一种解决方案是升级到Visual Studio的Crystal Reports,它与VS2010 +兼容。如果您希望能够在最近的Visual Studios中编辑报告,这是可行的方法。您安装旧运行时的解决方案可以在不更改解决方案的情况下解决问题,而较新的Crystal安装需要升级解决方案中的所有报告。
答案 2 :(得分:1)
我通过以下方式解决了装配错误: