ILMergeツールを使用してDLLを実行可能ファイルと組み合わせる単純なマージを試みています。マージ自体は正常に機能しますが、マージされたEXEを実行した後も、元のDLLを見つけようとします(EXEにまったくマージされていない場合など)。
ILMergeは内部への参照を自動的に更新しますか、それとも手動で何かを行う必要がありますか?私はILMergeがすべてを自動的に作成することを前提としていました。
EXEとDLLはどちらもWinForms.NET3.5です。
ILMergeツールを使用してDLLを実行可能ファイルと組み合わせる単純なマージを試みています。マージ自体は正常に機能しますが、マージされたEXEを実行した後も、元のDLLを見つけようとします(EXEにまったくマージされていない場合など)。
ILMergeは内部への参照を自動的に更新しますか、それとも手動で何かを行う必要がありますか?私はILMergeがすべてを自動的に作成することを前提としていました。
EXEとDLLはどちらもWinForms.NET3.5です。
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では機能しません。
この問題は、元のアセンブリを使用しようとする他のマージされていない DLL が原因でした。それらもマージする必要がありましたが、今ではすべてが正しく機能しています。
問題の DLL の 1 つがそれ自体を再オープンしようとする可能性はありますか?