无法加载文件或程序集CrystalDecisions.ReportAppServer.ClientDoc

问题描述:

我看了看SO类似的问题,但没有相当我的问题,因为据我可以告诉匹配。无法加载文件或程序集CrystalDecisions.ReportAppServer.ClientDoc

异常消息:

无法加载文件或程序集 'CrystalDecisions.ReportAppServer.ClientDoc,版本= 13.0.2000.0文化=中性公钥= 692fbea5521e1304' 或它的一个依赖。该系统找不到指定的文件。

该文件是我的GAC。我正在开发运行VS2010的32位机器(Windows 7),一切都是.NET4。目标托管机器是64位Win 2008 R2。我的本地机器具有VS2010的CR安装;主机拥有VS2010的64位运行时。我正在为这个Web应用程序以“任何CPU”模式编译我的所有代码。

我在想,它无法在GAC中找到该文件。这是一个IIS应用程序;是否有某种权限问题?我认为IIS可以访问GAC。

一些建议如何做将不胜感激。

+0

在我使用过的几个第三方dll中,32位和64位版本的PublicKeyToken是不同的。如果它在一台机器上工作,但不在另一台机器上,这可能是某个地方看的。这只是一个猜测,尽管... – David 2012-04-03 21:04:48

+0

那么,具有该公钥标记的文件存在于GAC中,完全如上所述。我不明白为什么我的Web应用程序找不到它。 – 2012-04-03 21:08:39

原来答案简直是荒谬可笑,但为什么这是必要的。

在服务器上的IIS管理器,我设置的应用程序池,我的web应用程序不允许32位的组件。

看来它假定,在64位系统上,你必须要在32位汇编。离奇。

+0

或者:或者:C:\ inetpub \ AdminScripts \ adsutil.vbs SET w3svc/AppPools/Enable32bitAppOnWin64 0 – ariscris 2015-06-30 16:54:53

+0

我的情况是一个WPF应用程序。必须在Project的首选项中禁用“32位偏好”选项。 – RonaldPaguay 2018-02-28 18:13:17

+0

我的所有项目都已使用4.0配置文件;我从来没有在客户档案中取得过很多成功(不知道为什么这是任何项目的默认设置)。我将在明天早上检查Interop设置。 – 2012-04-04 02:15:54

+0

我的所有参考都已设置为不嵌入Interop类型。 – 2012-04-04 12:27:19

+0

啊对不起值得一试 – 2012-04-04 14:47:52

关于需要32位支持的64位系统。我并不觉得这么离奇:

虽然部署到64位系统,这并不意味着所有被引用的组件是必然的64位水晶报表组件。除此之外,Crystal Reports程序集很大程度上只是它们所基于的传统DLL集合的封装。主要引用的程序集需要许多32位DLL。错误消息“无法加载程序集”也涉及这些DLL。要直观地查看这些内容,请访问www.dependencywalker.com并直接在该IIS服务器上运行相关程序集上的“取决于”。

你只需要安装部署服务器上Crystal Report Report Run Time下载。如果问题仍然出现,请将asp_client文件夹复制到项目主文件夹中。

+0

它应该工作,而不必安装运行时。在云服务器上运行您的网站并且您无法访问桌面时,解决方案是什么?单元测试怎么样? – 2017-09-06 10:25:29