web-dev-qa-db-ja.com

ファイルまたはアセンブリCrystalDecisions.ReportAppServer.ClientDocをロードできませんでした

SOで同様の質問を見てきましたが、私の知る限り、私の問題に完全に一致するものはありません。

例外メッセージ:

ファイルまたはアセンブリ「CrystalDecisions.ReportAppServer.ClientDoc、Version = 13.0.2000.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

ファイルは私のGACにあります。 VS2010を実行する32ビットマシン(Windows 7)で開発しています。すべてが.NET4です。ターゲットホスティングマシンは、64ビットWin 2008 R2です。私のローカルマシンには、VS2010用のCRインストールがあります。ホスティングマシンには、VS2010用の64ビットランタイムがあります。このWebアプリケーションのすべてのコードを「任意のCPU」モードでコンパイルしています。

GACでファイルを見つけることができないという私の心を吹き飛ばしています。これはIISアプリケーションです。何らかのアクセス許可の問題がありますか?IISはGACにアクセスできます。

何をすべきかの提案をいただければ幸いです。

22
Jeremy Holovacs

答えはとてつもなくシンプルでしたが、なぜそれが必要なのか謎めいていました。

サーバー上のIIS Managerで、32ビットアセンブリを許可しないようにWebアプリケーションのアプリケーションプールを設定します。

64ビットシステムでは、32ビットアセンブリが必要であると想定しているようです。奇妙な。

14
Jeremy Holovacs

1).netプロファイルをクライアントプロファイルから.Net Framework 4.0に変更します http://msdn.Microsoft.com/en-us/library/bb398202.aspx

2)Embed Interop Typesフラグを確認します

Embed Interop Types flag http://weblogs.asp.net/cazzu/archive/2011/03/11/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work.aspx

3

Deployment Serverに Crystal Report Report Run Time downloadsをインストールするだけです。それでも問題が発生する場合は、asp_clientフォルダーをプロジェクトのメインフォルダーに配置します。

2
ZahidKakar

32ビットサポートを必要とする64ビットシステムについて。私はそれがそんなに奇妙だとは思わない:

64ビットシステムにデプロイされますが、これは必ずしもすべての参照アセンブリが64ビットCrystal Reportsアセンブリであることを意味しません。それに加えて、Crystal Reportsアセンブリは、大部分が、それらが基づいているレガシーDLLのコレクションの単なるラッパーです。主に参照されるアセンブリには、多くの32ビットDLLが必要です。 「アセンブリをロードできません」というエラーメッセージには、これらのDLLも含まれます。それらが何であるかを視覚的に確認するには、www.dependencywalker.comにアクセスして、問題のアセンブリに「依存」を実行します。IISサーバー。