web-dev-qa-db-ja.com

'CrystalDecisions.CrystalReports.Engine.ReportDocument'の型初期化子が例外をスローしました

Crystal Reports APIを使用してフォームを表示および印刷するデスクトップアプリケーションをクライアントに展開しています。 InstallShield 2012を使用してインストーラーを構築しています。また、すべてのCrystalアセンブリとともに.NET 4.0 Frameworkも含まれています。私には2つの(ちょっと関連した)懸念があります:

1)クライアントマシンでアプリケーションを実行しようとすると、次のエラーが表示されます。

The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' 
      threw an exception.

ここで何を忘れているのか分かりません。 CrystalDecisions.CrystalReports.Engine dllは、約10個の他のCrystalアセンブリと同様に、GACに正しく登録されています。

2) SAPフォーラムでこの質問をしました で、.NET 2.0 Frameworkと.NET 4.0 Frameworkを含める必要があると言われました。インストーラパッケージに.NET 2.0再頒布可能パッケージを含めようとしましたが、インストーラはインストールしません。インストーラーは4.0がインストールされていることを確認しているので、2.0のインストールはスキップされますか?

29
gwin003

静的コンストラクターが例外をスローすると、TypeInitializationException内にラップされます。実際の例外を確認するには、例外オブジェクトのInnerExceptionプロパティを確認する必要があります。

ステージング/運用環境(Visual Studioがインストールされていない環境)では、次のいずれかが必要です。

  1. 例外とそのInnerExceptionを(再帰的に)トレース/ログ記録する:イベントハンドラーをAppDomain.UnhandledExceptionイベントに追加し、そこにログ記録/トレースコードを配置します。 System.Diagnostics.Debug.WriteLineをトレースに使用するか、ロガー(log4net、ETW)を使用します。 DbgView(Sysinternalsツール)を使用して、Debug.WriteLineトレースを表示できます。
  2. 実稼働デバッガー(WinDbgやNTSDなど)を使用して、例外を診断します。
  3. Visual Studioのリモートデバッグを使用して、例外を診断します(開発コンピューターからターゲットコンピューターのコードをデバッグできるようにします)。
12
M.A. Hanin

ここに私のために働いたものがあります:

64ビットマシンにインストールする場合、[ビルド]タブのアプリケーションプロパティにプラットフォームターゲットとして[すべてのCPU]があることを確認し、オプションがある場合は[32ビットを優先]のチェックボックスをオフにします。 Crystalはvery 32/64ビットアセンブリについて扱いにくいものであり、トラブルシューティングが非常に難しいかなり直感に反する仮定を行います。

15
Jeremy Holovacs

同様のメッセージがあり、オンラインで何度か検索してすべての提案を行ったが、何も助けにはならなかった。最後に解決策を見つけました。 my IISサーバーでは、アプリケーションプールの詳細オプションの下に、[32ビットアプリケーションを有効にする]オプションがあります。これはfalseからtrueに変更され、IISサーバー、私のプログラムはpdfファイルの生成を開始しました。

7
shahk26

プラットフォームターゲットのプロジェクトのプロパティを確認します。 Crystal Reportsの対応するバージョンをインストールします。

To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
5
tyrodeveloper

バグの内部例外はファイルまたはアセンブリ 'log4net、バージョン= 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304'をロードできませんでした

AppPool設定の変更False for 2ビットアプリケーションの有効化問題を解決しました

3
user3192640

1日中オンラインで検索し、自分で解決策を見つけました。同じシナリオで、アプリケーションは開発者のマシンで正常に動作しますが、デプロイ時に「crystaldecisions.crystalreports.engine.reportdocumentが例外をスローしました」という例外をスローしています。詳細:sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayerバージョン13.0.2000がありません

私のIDE:MS VS 2010 Ultimate、CR V13.0.10

解決:

  1. アプリケーションにx86を設定してから、セットアップアプリケーションにx64を設定します

  2. 前提条件:i次のディレクトリC:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\Crystal Reports for .NET Framework 4.0にサポートCRランタイムファイルCRRuntime_32bit_13_0_10.msi、CRRuntime_64bit_13_0_10.msiを配置しました

  3. マージモジュールファイルをセットアッププロジェクトに含めます。ここでは、13.0.10ソフト、13.0.16マージモジュールファイルを使用しているため、深刻な問題ではありません。ファイルiが含まれています。CRRuntime_13_0_16.msmこのファイルは、msmファイルのセットの中にあります。

このマージモジュールをインストールすると、次のディレクトリに必要なdllが追加されます。C:\ Program Files(x86)\ SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet

dllファイルのバージョンは問題を引き起こしません。

開発者のマシンで同じことを確認します。

評価ポイントが必要です。この回答が役立つ場合は、親切にマークしてください(+1)

2

最近、log4netエラーで同様のエラーが発生しました。

ファイルまたはアセンブリ「log4net、バージョン= 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304」をロードできませんでした

これは64ビットマシン上にありましたが、32bitランタイムのみをインストールしていました。

ビルドのターゲットがx86のみであることを確認してください。

1
ScottC

「M.A.ハニン」が上記のように、次のようなInnerExceptionによって引き起こされる可能性があります。

"Unrecognized configuration section userSettings. (C:\Users\Pourakbar.h\AppData\Local\Accounting\Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g\1.0.0.0\user.config line 3)"

フォルダーを削除しました:C:\Users\Pourakbar.h\AppData\Local\Accounting\Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g私のコンピューターから、それは私のために働いた!

1

これは、機能が不足しているためです....内部例外が表示される場合、このメッセージが表示されます。

"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."

この例外を取り除くために。マニフェストファイルから音声認識機能を有効にします。

私は同じ問題を抱えていました、そしてそれは私の問題を解決しました。 :)

0
Zia Ur Rahman

The type initializer for CrystalDecisions.CrystalReports.Engine.ReportDocument例外をスロー

ターゲットプラットフォームをx86からAny CPUに変更し、問題を解決しました。

0
Faheem

32ビットマシンではエラーが発生していませんでしたが、64ビットであったため、ターゲットプラットフォームをx86から​​Any CPUに変更し、問題を解決しました。

0
Rob King

ターゲットマシンのアーキテクチャに応じて、ターゲットマシンを「任意のCPU」から「x64」または場合によっては「x86」に変更しました。より複雑な問題を示すより複雑なソリューションに移る前に、まずこれを試します。

0
  1. Cr redist 2005または2008(ツール)をダウンロードするか、C:\ Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReportsからコピーします

  2. C++ redist 2005または2008をダウンロードします(これがツールです)

  3. 両方をインストールしてシステムを再起動します

  4. 問題が解決しました。

0
user1970708

visual Studioを使用している場合は、ビルドプロパティ「32ビットを優先」を有効にします。下の画像をご覧ください。

enter image description here

0
Ravinda lakshan

タイプイニシャライザという問題が発生しました。設定ファイルで解決しました。

私はこのような接続要素を持つことを忘れました
"connectionStrings" "/ connectionStrings"これは、コードで行ったことに依存する可能性があります。私のエラーは、この接続要素のためにクラスを開くことができないということです。

0
Antonio Cabilos