質問: <前提> ILMerge.exeを使用して、自作ライブラリと参照設定している外部ライブラリの結合を行おうと考えています。 結合対象はいくつかあります。 ・log4net.dll ・Newtonsoft.Json.dll ・AML.Engine.dll ・AML.Engine.Services.dll <問題> log4net.dll、Newtonsoft.Json.dllについては、結合後の動作確認が取れました。 ただ、AML.Engine系を結合すると、例外が発生するようになりました。 例外はTypeLoadException。 メッセージは 「型 'Aml.Engine.CAEX.InstanceHierarchyType' にあるメソッド 'GetEnumerator' に実装が含まれていません。」 とのことです。 なぜAML.Engine系のみそうなるのかが分かりません。 自作ライブラリや、コマンドなどに問題があるんでしょうか。 ご教授の程、お願いいたします。 <補足> 開発環境:VisualStudio 2015 Professional .NET:バージョン4.6 ILMerge実行コマンド: cd "C:\" "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /internalize /ndebug /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6" /out:"Marge\自作ライブラリ" 自作ライブラリ log4net.dll Newtonsoft.Json.dll AML.Engine.dll AML.Engine.Services.dll ILMerge.exe.configの内容:
回答: こちらの環境では自作exe + log4net + Newton.Json + AMLで問題なくマージできました 自作ライブラリ含め全てのdllのターゲットの.NETバージョンが一致している事を一度確認してみてください。 補足を受けて ====== 軽く調べたところILMergeのバグの可能性が高いです オープンソース版ILMergeであるILRepackを使用したところ正常なバイナリが吐かれたので 一度こちらを使ってみてはいかがでしょうか 引数は全く変えずにできると思います (またはDirectLinkから .nupkg -> .zip に変更 )