23

我已经看过关于 SO 的类似问题,但据我所知,没有什么能与我的问题完全匹配。

异常消息:

无法加载文件或程序集“CrystalDecisions.ReportAppServer.ClientDoc,版本=13.0.2000.0,文化=中性,PublicKeyToken=692fbea5521e1304”或其依赖项之一。该系统找不到指定的文件。

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

让我大吃一惊的是,它在 GAC 中找不到该文件。这是一个 IIS 应用程序;是否存在某种权限问题?我认为 IIS 可以访问 GAC。

一些关于做什么的建议将不胜感激。

4

4 回答 4

15

事实证明,答案简单得可笑,但令人费解的是为什么它是必要的。

在服务器上的 IIS 管理器中,我将 Web 应用程序的应用程序池设置为不允许 32 位程序集。

它似乎假设,在 64 位系统上,您必须需要 32 位程序集。奇怪。

于 2012-04-04T14:26:22.487 回答
3

1) 将您的 .net 配置文件从客户端配置文件更改为 .Net Framework 4.0 http://msdn.microsoft.com/en-us/library/bb398202.aspx

2) 检查您的嵌入互操作类型标志

嵌入互操作类型标志 http://weblogs.asp.net/cazzu/archive/2011/03/11/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work.aspx

于 2012-04-03T22:50:55.820 回答
2

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

尽管部署到 64 位系统,但这并不意味着所有引用的程序集都必须是 64 位 Crystal Reports 程序集。此外,Crystal Reports 程序集在很大程度上只是它们所基于的遗留 DLL 集合的包装器。主要引用的程序集需要许多 32 位 DLL。错误消息“无法加载程序集”也涉及这些 DLL。要直观地查看它们是什么,请访问 www.dependencywalker.com 并直接在该 IIS 服务器上对相关程序集运行“依赖”。

于 2012-04-07T04:40:58.607 回答
2

您只需在部署服务器上安装Crystal Report Report Run Time下载。如果问题仍然存在,则将检查 asp_client 文件夹放在项目主文件夹中。

于 2015-07-14T12:14:49.343 回答