Edited at

ILMergeのオプション(internalize他)

More than 1 year has passed since last update.

ILMergeを使ってDLLファイルを結合することがあったので、そのときに触ったオプションについて記載します。


基本ケース

B.dllとC.dllを結合してA.dllを作成します。

ilmerge /out:A.dll B.dll C.dll


オプション


/target

library、exe、winexeが使えます。

特にtarget指定しなくても、以下のDLL同士の結合は問題なくできました。

何かdllからexeとかに変更するときに指定するのかもしれません。

ilmerge /target:library /out:A.dll B.dll C.dll


/internalize[:filename]

publicのものをinternalにします。

ilmerge /internalize /out:A.dll B.dll C.dll D.dll

とすると、CとDはinternalになります。

ilmerge /internalize:exclude.txt /out:A.dll B.dll C.dll D.dll

とした場合、exclude.txtにNamespaceまたclassを記載して、internalにしないものを指定します。

例として、exclude.txtにC.dllのNamespaceを指定した場合は、internalになるのはD.dllだけになります。


/ndebug

指定することで、pdbファイルを同梱しないように設定できます。

デバッグ用途でない場合は指定しておけばよさげです。


オプションのリスト

Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysign]] [/internalize[:filename]] 

[/t[arget]:(library|exe|winexe)] [/closed] [/ndebug] [/ver:version] [/copyattrs [/allowMultiple] [/keepFirst]]
[/xmldocs] [/attr:filename] [/targetplatform:<version>[,<platformdir>] | /v1 | /v1.1 | /v2 | /v4]
[/useFullPublicKeyForReferences] [/wildcards] [/zeroPeKind] [/allowDup:type]* [/union] [/align:n]
/out:filename <primary assembly> [<other assemblies>...]


参考