web-dev-qa-db-ja.com

C#Windowsアプリケーションイベント:アプリケーション開始時のCLR20r3

C#アプリケーションを作成し、テストボックスにインストールしました。私のアプリは開発ボックスで完璧に動作しますが、別のマシンにインストールすると、Main()でクラッシュします。 EventType:CLR20r3を取得します

こちらがイベントメッセージです

    Problem signature:
    Problem Event Name: CLR20r3
    Problem Signature 01:   logfileviewer.exe
    Problem Signature 02:   1.0.0.0
    Problem Signature 03:   4f356c9c
    Problem Signature 04:   LogFileViewer
    Problem Signature 05:   1.0.0.0
    Problem Signature 06:   4f356c9c
    Problem Signature 07:   94
    Problem Signature 08:   44
    Problem Signature 09:   System.IO.FileNotFoundException
    OS Version: 6.1.7601.2.1.0.256.1
    Locale ID:  1033
    Additional Information 1:   0a9e
    Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
    Additional Information 3:   0a9e
    Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

詳細を使用して、IL逆アセンブラーでエラーコードを調べ、次のようにカムバックしました...

    Method #5 (06000094) 
    -------------------------------------------------------
    MethodName: .ctor (06000094)
    Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886)
    RVA : 0x000081d0
    ImplFlags : [IL] [Managed] (00000000)
    CallCnvntn: [DEFAULT]
    hasThis 
    ReturnType: Void
    No arguments.

.NET 4.0はアンインストールされ、システムに再インストールされたため、何も変更されていません。私はネット上で検索しましたが、同じ問題を抱えている人は誰も解決策がないようです。私はこの問題に1日半を費やしました。私はアプリケーションを起動できないために私の締め切りを逃したくない。

これは私のMain()の唯一のコードです

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmMain());
    }

イベントビューアーの詳細を以下に示します。

    Application: LogFileViewer.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.IO.FileNotFoundException
    Stack:
        at LogFileViewer.frmMain.InitializeComponent()
        at LogFileViewer.frmMain..ctor()
        at LogFileViewer.Program.Main()

EventData

    Application: LogFileViewer.exe 
    Framework Version: v4.0.30319 
    Description: The process was terminated due to an unhandled exception. 
    Exception Info: System.IO.FileNotFoundException 
    Stack: at LogFileViewer.frmMain.InitializeComponent() at LogFileViewer.frmMain..ctor() at LogFileViewer.Program.Main() 

デザイナーがFileNotFound例外をどのように持つことができるかはわかりません。私はDotNetBar.dllを使用しており、インストールディレクトリから参照しているので、それで十分でしょう。必要に応じてデザイナーを投稿することもできますが、かなりの量があります。

23
Tyler

私のアプリケーションが、展開マシンに存在しない参照アセンブリに依存しているときに、同じ問題が発生しました。 「インストールディレクトリからDotNetBarを参照する」ことの意味がわかりません-プロジェクトで CopyLocal = true に設定されているか、開発と開発の両方で同じフルパスに存在することを確認してください生産機械。

21
RyanR

以前にXPマシンで保守されていたWindows 7ボックスでアプリケーションをビルドしたときに、同じ問題が発生しました。

デバッグ用にビルドした場合、プログラムは正常に動作しましたが、リリース用にビルドした場合、このエラーで失敗しました。プロジェクトのプロパティページで答えを見つけました。 [ビルド]タブに移動し、プラットフォームターゲットを[任意のCPU]から[x86]に変更してみます。

3
Dale Lutes

.NETには2つのCLR 2.0および4.0があります。 CLR 2.0は、.NET framework 3.5まで動作します。 CLR 4.0は.NET 4.0以降で動作します。ソリューションが参照アセンブリとは異なるCLRを使用している可能性があります。ローカル開発環境では、両方のCLRが存在する可能性があるため、問題は発生していません。ただし、展開環境に移動した場合、単一のCLRのみが存在する可能性があり、このエラーが発生しました。

3
xs2mayank

午前中ずっと戦い続けてきましたが、今では解決し、なぜ起こったのでしょうか。他の人に役立つことを願って投稿する

Visual Studioツールボックスにツールを自動的に追加するKrypton.Toolkitをインストールしました。次に、ツールをデザイナーに追加し、自動的にDLLをプロジェクト参照に追加しましたが、ツールキットはCopyLocal = falseとしてマークされていました

リリースビルドフォルダー内のすべてのdllを使用してインストーラーをビルドしました(もちろん、上記のdllはありませんでした)。

Copylocal = trueを設定してからインストーラーを再構築すると、すべてが正常に機能しました。

0
Martin