0

.net 4.0 の c# で最初の winform アプリケーションを開発しました。コンパイルされた出力には、.exe ファイルと .dll ファイルがあります。マージする前に、実行可能ファイルが正常に動作していることを確認しました。ILMerge を使用してこれら 2 つのファイルをマージしました。初めてILmergeを使用しています。だから私はどこかで間違いを犯したに違いありませんが、この問題を解決することはできません. エラーなしで単一の実行可能ファイルを取得しました。しかし、結果ファイルを開くと、クラッシュします。

Windows は、アプリケーションのクラッシュ時に次のエラーの詳細を生成しました。

Description:
   Stopped working

Problem signature:
   Problem Event Name:  CLR20r3
   Problem Signature 01:    mywinapp.exe
   Problem Signature 02:    1.0.0.0
   Problem Signature 03:    52383768
   Problem Signature 04:    mscorlib
   Problem Signature 05:    2.0.0.0
   Problem Signature 06:    4ca2b851
   Problem Signature 07:    f99
   Problem Signature 08:    14e
   Problem Signature 09:    System.TypeLoadException
   OS Version:  6.1.7601.2.1.0.256.1
   Locale ID:   16393

ILMerge をインストールし、ILMerge の場所から cmd で次のコマンドを使用して、マージされた .exe ファイルを作成しました。

 ilmerge D:\abc\RemittanceForm.exe D:\abc\PdfFileWriter.dll  /out:D:\out\MyWinApp.exe      /target:winexe /ndebug /log:D:\out\aaa.txt

ログ ファイルの内容は次のとおりです。

ILMerge バージョン 2.12.803.0
Copyright (C) Microsoft Corporation 2004-2006. 全著作権所有。
ILMerge D:\abc\RemittanceForm.exe D:\abc\PdfFileWriter.dll /out:D:\out\MyWinApp.exe /target:winexe /ndebug /log:D:\out\aaa.txt
mscorlib.dll のディレクトリ 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\..\v2.0.50727' を使用して、プラットフォームを 'v2' に設定します。
Microsoft (R) .NET Framework v2.0.50727 上で動作
mscorlib.dll バージョン = 2.0.0.0
入力アセンブリのリストは次のとおりです。
    D:\abc\送金フォーム.exe
    D:\abc\PdfFileWriter.dll
ファイル 'D:\abc\RemittanceForm.exe' からアセンブリを読み取ろうとしています。
    アセンブリで正常に読み込まれました。
    送金フォームのメタデータにエラーは報告されていません。
ファイル 'D:\abc\PdfFileWriter.dll' からアセンブリを読み取ろうとしています。
    アセンブリで正常に読み込まれました。
    PdfFileWriter のメタデータで報告されたエラーはありませんでした。
すべての入力アセンブリに互換性のある PeKind があることを確認しています。
    送金フォーム.PeKind = ILonly
    PdfFileWriter.PeKind = ILonly
すべての入力アセンブリには、互換性のある PeKind 値があります。
AssemblyResolver: アセンブリ '送金フォーム' がアセンブリ 'System.Windows.Forms' を参照しています。
    AssemblyResolver: アセンブリのディレクトリを参照しようとしています。
    AssemblyResolver: アセンブリのディレクトリを参照しているアセンブリが見つかりませんでした。
    AssemblyResolver: 入力ディレクトリを試行しています。
    AssemblyResolver: 入力ディレクトリにアセンブリが見つかりませんでした。
    AssemblyResolver: ユーザー指定のディレクトリを試行しています。
    AssemblyResolver: ユーザー指定のディレクトリはありません。
    AssemblyResolver: フレームワーク ディレクトリを試行しています。
アセンブリ参照 'System.Windows.Forms' を 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\..\v2.0.50727\System.Windows.Forms.dll' に解決しました。(使用されるフレームワーク ディレクトリ。)
AssemblyResolver: アセンブリ '送金フォーム' がアセンブリ 'システム' を参照しています。
    AssemblyResolver: アセンブリのディレクトリを参照しようとしています。
    AssemblyResolver: アセンブリのディレクトリを参照しているアセンブリが見つかりませんでした。
    AssemblyResolver: 入力ディレクトリを試行しています。
    AssemblyResolver: 入力ディレクトリにアセンブリが見つかりませんでした。
    AssemblyResolver: ユーザー指定のディレクトリを試行しています。
    AssemblyResolver: ユーザー指定のディレクトリはありません。
    AssemblyResolver: フレームワーク ディレクトリを試行しています。
アセンブリ参照 'System' を 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\..\v2.0.50727\System.dll' に解決しました。(使用されるフレームワーク ディレクトリ。)
AssemblyResolver: アセンブリ '送金フォーム' がアセンブリ 'System.Drawing' を参照しています。
    AssemblyResolver: アセンブリのディレクトリを参照しようとしています。
    AssemblyResolver: アセンブリのディレクトリを参照しているアセンブリが見つかりませんでした。
    AssemblyResolver: 入力ディレクトリを試行しています。
    AssemblyResolver: 入力ディレクトリにアセンブリが見つかりませんでした。
    AssemblyResolver: ユーザー指定のディレクトリを試行しています。
    AssemblyResolver: ユーザー指定のディレクトリはありません。
    AssemblyResolver: フレームワーク ディレクトリを試行しています。
アセンブリ参照 'System.Drawing' を 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\..\v2.0.50727\System.Drawing.dll' に解決しました。(使用されるフレームワーク ディレクトリ。)
ターゲット組立品の組立品レベルの属性に組立品「送金フォーム」を使用します。
アセンブリ '送金フォーム' をターゲット アセンブリにマージしています。
アセンブリ 'PdfFileWriter' をターゲット アセンブリにマージしています。
1 つの Win32 リソースをアセンブリ '送金フォーム' からターゲット アセンブリにコピーしています。
エントリ ポイント 'Remittance_Form.Program.Main' をアセンブリ '送金フォーム' からアセンブリ 'MyWinApp' に転送しています。
    ターゲット アセンブリのメタデータで報告されたエラーはありませんでした。
ILMerge: ターゲット アセンブリ 'D:\out\MyWinApp.exe' を書き込んでいます。
AssemblyResolver: アセンブリ 'System' がアセンブリ 'System.Configuration' を参照しています。
    AssemblyResolver: アセンブリのディレクトリを参照しようとしています。
アセンブリ参照 'System.Configuration' を 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Configuration.dll' に解決しました。(モジュールのディレクトリを参照して使用されます。)
参照モジュール 'gdi32.dll' の場所は '' です
参照モジュール 'Kernel32.dll' の場所は '' です
参照アセンブリ 'System.Windows.Forms' の場所は 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Windows.Forms.dll' です
    System.Windows.Forms のメタデータで報告されたエラーはありませんでした。
参照アセンブリ 'System' の場所は 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\system.dll' です
    システムのメタデータで報告されたエラーはありませんでした。
参照アセンブリ 'mscorlib' の場所は 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll' です。
    mscorlib のメタデータで報告されたエラーはありませんでした。
参照アセンブリ 'System.Drawing' の場所は 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Drawing.dll' です
    System.Drawing のメタデータで報告されたエラーはありませんでした。
ILMerge: 完了。

この問題を解決するために私を助けてください。

4

1 に答える 1

0

ILMerge コマンドを次のように変更しました。

ilmerge D:\abc\RemittanceForm.exe D:\abc\PdfFileWriter.dll  /out:D:\out\MyWinApp.exe /target:winexe /ndebug /log:D:\out\aaa.txt /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

ありがとう@Magnus Grindal Bakken

于 2013-09-19T13:56:02.100 に答える