0

ILMergeツールを使用してDLLを実行可能ファイルと組み合わせる単純なマージを試みています。マージ自体は正常に機能しますが、マージされたEXEを実行した後も、元のDLLを見つけようとします(EXEにまったくマージされていない場合など)。

ILMergeは内部への参照を自動的に更新しますか、それとも手動で何かを行う必要がありますか?私はILMergeがすべてを自動的に作成することを前提としていました。

EXEとDLLはどちらもWinForms.NET3.5です。

4

3 に答える 3

1

ILMergeはいくつかのことを自動的に行います...
しかしILMergeは実際にはDLLとEXEの両方の内部構造を変更します...

すべてのDLLなどがこのように「混乱」しているわけではありません...

たとえば、EXEやDLLがReflectionまたはWPFのマージを使用すると、それらが失敗する可能性があります...

このような状況では、(マージではなく)「埋め込み」が最適です...約10行のコードを記述する必要がありますが、 http: //blogs.msdn.com/b/microsoft_press/archive/2010/02/03を参照してください。/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

それ(および他のいくつかのこと)を実現するためのツールが必要な場合は、SmartAssemblyなどのツールがあります...

ただし、上記のいずれも.NETDLLでのみ機能します。ネイティブDLLでは機能しません。

于 2011-08-18T18:35:56.273 に答える
1

この問題は、元のアセンブリを使用しようとする他のマージされていない DLL が原因でした。それらもマージする必要がありましたが、今ではすべてが正しく機能しています。

于 2011-08-20T11:32:04.313 に答える
0

問題の DLL の 1 つがそれ自体を再オープンしようとする可能性はありますか?

于 2011-08-18T18:40:54.827 に答える