1

C#でコンパイルされたアプリが他のコンピューターで動作しないのはなぜですか?

.NetFramework4.0が既にインストールされています。

.exe別のコンピューターで自分を開くと、次のエラーが発生します。

ERROR SIGNATURE:

    Event Type: clr20r3  
    P1:         myapp.exe 
    P2:         1.0.0.0
    P3:         502051f 
    P4:         myapp 
    P5:         1.0.0.0 
    P6:         502051f 
    P7:         2 
    P8:         6 
    P9:         System.IO.FileNotFoundException
4

5 に答える 5

3

system.io.filenotfoundexception通常は、プログラムがそこにないファイルを開こうとしたことを意味します。プログラムが、他のコンピュータの別の場所に存在しないか、別の場所にあるパスまたはファイル名を使用してファイルにアクセスしようとしている可能性があります。何をすべきかわからなければmyapp.exe、これ以上答えることはできません。

解決策はおそらく、アプリを書き直して、ファイルを開こうとする前にファイルの存在を確認するなど、何らかの方法でその例外をより適切に処理できるようにすることです。

于 2012-08-06T22:16:05.113 に答える
2

参照が欠落している場合のように私には聞こえます。ソリューションエクスプローラーからの参照を確認するか、bin/debugまたはbin/release(構成に応じて)に移動し、プロジェクトが依存するすべてのdllまたはexeをコピーしてください。

于 2012-08-06T22:16:49.840 に答える
0

アプリがアセンブリを読み込もうとしていて、それを見つけられない可能性があります

少し外れたトピックですが、理想的には、「未処理」の例外処理を追加してログファイルまたはイベントログに書き込み、より多くの例外スタックをキャプチャできるようにします。

多くの場合、最後の例外メッセージのみが表示され、コールスタックも表示されません。

次のようなものを使用して、例外を非常に簡単にロールアップできます。

string RollupException(Exception ex)
{
    StringBuilder sb = new StringBuilder();

    sb.Append(ex.Message);

    while(ex.InnerException != null) 
    {
         sb.Append(Environment.Newline);
         sb.Append(ex.Message);
         ex = ex.InnerException;
    }

    return sb.ToString();
}

このクラスを使用しEventLogて、イベントログに書き込むこともできます。

ここの情報:

http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx

例を確認してください-最初にイベントソースを登録することを忘れないでください!

于 2012-08-06T22:21:51.653 に答える
0

プログラムにDLLがない(またはDLLが置き忘れられている)ようです。

http://social.msdn.microsoft.com/Forums/pl-PL/clr/thread/782217a8-46bd-4371-9915-28655d9b2c2f

.NETclr20r3例外パラメータの解読P1..P10

これを回避する簡単な方法は、セットアッププロジェクトを作成することです。これにより、プロジェクトの依存関係がインストールファイルにバンドルされます。ただし、Visual Studio Expressエディションを使用している場合は、このオプションは利用できないと思います。。。

http://www.dreamincode.net/forums/topic/58021-deploying-ac%23-application-visual-studio-setup-project/

欠落しているのが.netFrameworkであると確信している場合は、次のツールでマシン/クライアントの内容が表示されるため、欠落しているものを特定できます。

http://www.asoft.be/prod_netver.html

お役に立てば幸いです。

于 2012-08-06T22:22:06.677 に答える
0

私はまったく同じ問題を抱えていましたが、Joaoのように、最終的にはWindowsフォームの線形が原因であることがわかりました。これにより、Microsoft.VisualBasic.PowerPacks参照がプロジェクトに追加されます。次に、PowerPackがインストールされていないシステムで実行すると、どのファイルが欠落しているかについての手がかりがなく、役に立たないSystem.IO.FileNotFoundExceptionエラーが発生します。

はい、ユーザーにインストールを促す適切な配布設定を行うのに苦労した場合、これは修正されるはずです...など。しかし、EXEを別のシステムにコピーできるようにしたいだけです。

解決するには:フォームからLineShapesを削除してから、参照内のVisualBasicおよびVisualBasic.PowerPacksへの参照を削除します。

デビッド

【VS2008SP使用】

于 2013-06-09T21:05:39.880 に答える