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のインストールはスキップされますか?
静的コンストラクターが例外をスローすると、TypeInitializationException
内にラップされます。実際の例外を確認するには、例外オブジェクトのInnerException
プロパティを確認する必要があります。
ステージング/運用環境(Visual Studioがインストールされていない環境)では、次のいずれかが必要です。
AppDomain.UnhandledException
イベントに追加し、そこにログ記録/トレースコードを配置します。 System.Diagnostics.Debug.WriteLine
をトレースに使用するか、ロガー(log4net、ETW)を使用します。 DbgView(Sysinternalsツール)を使用して、Debug.WriteLineトレースを表示できます。ここに私のために働いたものがあります:
64ビットマシンにインストールする場合、[ビルド]タブのアプリケーションプロパティにプラットフォームターゲットとして[すべてのCPU]があることを確認し、オプションがある場合は[32ビットを優先]のチェックボックスをオフにします。 Crystalはvery 32/64ビットアセンブリについて扱いにくいものであり、トラブルシューティングが非常に難しいかなり直感に反する仮定を行います。
同様のメッセージがあり、オンラインで何度か検索してすべての提案を行ったが、何も助けにはならなかった。最後に解決策を見つけました。 my IISサーバーでは、アプリケーションプールの詳細オプションの下に、[32ビットアプリケーションを有効にする]オプションがあります。これはfalseからtrueに変更され、IISサーバー、私のプログラムはpdfファイルの生成を開始しました。
プラットフォームターゲットのプロジェクトのプロパティを確認します。 Crystal Reportsの対応するバージョンをインストールします。
To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
バグの内部例外はファイルまたはアセンブリ 'log4net、バージョン= 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304'をロードできませんでした
AppPool設定の変更False for 2ビットアプリケーションの有効化問題を解決しました
1日中オンラインで検索し、自分で解決策を見つけました。同じシナリオで、アプリケーションは開発者のマシンで正常に動作しますが、デプロイ時に「crystaldecisions.crystalreports.engine.reportdocumentが例外をスローしました」という例外をスローしています。詳細:sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayerバージョン13.0.2000がありません
私のIDE:MS VS 2010 Ultimate、CR V13.0.10
解決:
アプリケーションにx86を設定してから、セットアップアプリケーションにx64を設定します
前提条件: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を配置しました
マージモジュールファイルをセットアッププロジェクトに含めます。ここでは、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)
最近、log4netエラーで同様のエラーが発生しました。
ファイルまたはアセンブリ「log4net、バージョン= 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304」をロードできませんでした
これは64ビットマシン上にありましたが、32bit
ランタイムのみをインストールしていました。
ビルドのターゲットがx86
のみであることを確認してください。
「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
私のコンピューターから、それは私のために働いた!
これは、機能が不足しているためです....内部例外が表示される場合、このメッセージが表示されます。
"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."
この例外を取り除くために。マニフェストファイルから音声認識機能を有効にします。
私は同じ問題を抱えていました、そしてそれは私の問題を解決しました。 :)
The type initializer for CrystalDecisions.CrystalReports.Engine.ReportDocument
例外をスロー。
ターゲットプラットフォームをx86
からAny CPU
に変更し、問題を解決しました。
32ビットマシンではエラーが発生していませんでしたが、64ビットであったため、ターゲットプラットフォームをx86からAny CPUに変更し、問題を解決しました。
ターゲットマシンのアーキテクチャに応じて、ターゲットマシンを「任意のCPU」から「x64」または場合によっては「x86」に変更しました。より複雑な問題を示すより複雑なソリューションに移る前に、まずこれを試します。
Cr redist 2005または2008(ツール)をダウンロードするか、C:\ Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReportsからコピーします
C++ redist 2005または2008をダウンロードします(これがツールです)
両方をインストールしてシステムを再起動します
問題が解決しました。
タイプイニシャライザという問題が発生しました。設定ファイルで解決しました。
私はこのような接続要素を持つことを忘れました
"connectionStrings" "/ connectionStrings"これは、コードで行ったことに依存する可能性があります。私のエラーは、この接続要素のためにクラスを開くことができないということです。