0

私は C# のアプリケーションに取り組んでおり、Visual Studio がインストールされている OS で正常に動作します。
実行可能ファイルを他の OS に移動すると、実行時にクラッシュします。
問題を解決できるように、何が欠けているかを正確に知るにはどうすればよいですか?
このケースをより正確に言うと、いくつかの Telerik コンポーネントを使用しましたが、実行可能ファイルの横に、それに関連する Dll が既にいくつかあることに気付きました。
プロジェクトにレポートがあったので(CR 2008で)、Crystal Report for Visual Studio 2010もインストールしましたが、これまで使用していませんでした。(インストールも試しました)

SAP_Crystal_Reports_runtime_engine_for_.NET_Framework_4_32bit

CRforVS_redist_install_32bit_13_0_1

これらのシステムでは、アプリケーションが失敗します。しかし、やはり運が悪いです。

何が欠けているかを正確に知ることができれば、自分が何を扱っているかを知り、まっすぐ進んで問題を解決することができます

4

4 に答える 4

3

1 つのオプションは、Fusion ログ ビューアを使用して、ターゲット マシン上のアセンブリ バインド情報を表示することです。アセンブリ バインディングの失敗はすべてログに記録され、どのアセンブリが読み込みに失敗しているか、およびランタイムがそれらを探している場所を確認できます。

于 2012-09-16T17:32:07.330 に答える
1

ターゲットマシンのイベントログを確認してください。いくつかの依存関係が欠落している可能性があります。Dependeciesを参照してください。アプリケーションの例外が原因でクラッシュしている場合は、アプリケーションの例外イベントでそれをキャッチします。

于 2012-09-16T17:28:03.927 に答える
1

これにはAssemblyResolveイベントを使用できると思います

AppDomain.CurrentDomain.AssemblyResolve += (object sender, ResolveEventArgs args)=>
    {
        string assemblyToResove = args.Name;
        //return Assembly.Load(....);
    };
于 2012-09-16T17:59:36.660 に答える
1

参照のリストに目を通してください。フレームワークで標準でないものはすべて、参照のプロパティを設定して、アセンブリをビルド ディレクトリにコピーします。]

また、プロジェクト プロパティで正しいプロセッサ アーキテクチャ用にビルドしていることを確認してください。

于 2012-09-16T17:23:32.513 に答える