|2.12.0803||3 August 2012||Fix a bug where the delaysign option was causing a null dereference exception and terminate the merge.|
|2.11.1103||3 November 2011||
Fix a bug where the runtime version of a 4.0 target assembly was incorrectly set.
Fix the way the [COMVisible] attribute is added to merged assemblies: now only top-level namespace types have it added when necessary, not any nested types and not any non-type members.
|2.11.0930||30 September 2011||Fixes two bugs in custom attributes: 1) nested generic types were not being serialized correctly, and 2) null values for type expressions were not being serialized correctly.|
|2.11.0502||2 May 2011||Dupliate types that are compiler generated no longer have a unique number appended to their name. The assumption is that the compiler has guaranteed that the type is unique within the assembly and since the assembly name is made part of the duplicate type's name, the number is not needed.|
|2.10.0526||26 May 2010||Fixed the checking of compatible PE kinds for a bug that showed up when processing 64-bit assemblies. Now using entirely new mechanism for generics that should fix many generic-related bugs.|
|2.10.0219||19 February 2010||Fixed /ver option so that it correctly implements the AssemblyVersion specification.|
|2.9.1118||18 November 2009||Added v4 option for targetplatform. Added the framework directory as a location that external references will be searched for.|
|2.9.1026||26 October 2009||Bug fix for array indexers: ldelem.ref instructions were getting turned into "ldelem Object" which causes peverify to be unhappy.|
|2.9.0727||27 July 2009||Bug fixes in underlying infrastructure. Fixed an error that showed up only when using /union option.|
|2.9.0210||10 February 2009||Fixed an error where ldelem.any instructions were not being merged correctly. This showed up in F# generated code.|
|2.8.0626||26 June 2008||Fix a small bug for attributes (i.e., their constructors) that take arrays of values.|
|2.8.0502||2 May 2008||Restored the code that controls whether the /v1.1 option is recognized. A build process break caused it to be left out.|
|2.8.0422||22 April 2008||Added an option, /align, that allows the file alignment of the target assembly to be set.|
|2.8.0202||2 February 2008||Fixed a regression that prevented v1.1 assemblies from being merged.|
|18.104.22.1688||28 December 2007||Fix for method security attributes.|
|22.214.171.1246||26 December 2007||Allow Merge() to be called more than once. (This changes ILMerge's behavior only if you are using it programmatically, i.e., not from the command-line.)|
|126.96.36.1999||29 November 2007||Many bug fixes. New /union command-line option for merging duplicate types into a single type in the target assembly.|
|28 February 2007||
Fixes problem where merged assemblies ran as a 32-bit process even on a 64-bit machine.
Various generics fixes.
On an error, the stack trace is now written to the log.
|13 February 2007||Fixes problem with running merged assemblies in the Compact Framework.|
|9 February 2007||
Fixes for running merged assemblies on 64 bit machines.
Treat security attributes the same way as "regular" assembly-level attributes (i.e., the /attr and /copyattrs options).
|12 January 2007||Bug fixes for compact framework.|
|2 January 2007||Changed the default so external references are listed in the manifest with their public key token and not their full public key. Use the new option /useFullPublicKeyForReferences to get the old behavior. Many fixes for generics. Other bug fixes.|
|15 August 2006||Fixed a problem with generics. May have fixed the problem with resources that were not merged properly. Now if a type gets renamed, then any associated resources are also renamed appropriately. Bug fixes.|
|28 February 2006||Public keys that are longer than 1024 bits now work. Bug fixes.|
|7 February 2006||Made the v1.1 version available again. But it does not have the cross-platform capabilities of the v2.0 version.|
Many bug fixes.
|188.8.131.52214||14 December 2005||When the target platform is not v2, then if debug info had been on, it is turned off.|
Added an option /allowMultiple that can be used in combination with the /copyattrs option to allow multiple instances of assembly-level attributes. But only if the attribute is defined to allow multiples, otherwise each instance overwrites any previously copied over instances.
|184.108.40.206209||09 December 2005||Error checking to make sure the version number gets set correctly when specified on the command line. Don't set the version number when there is an error in the version number. Release all assemblies used during the merge, not just the ones specified as input assemblies. Added a check to make sure the target assembly does not list itself as an external reference. This catches situations where ILMerge fails because of a bad user command. Xmldocs files now have the extension ".xml" instead of ".doc". Many bug fixes, especially related to generics.|
|220.127.116.11008||08 October 2005||Some generics fixes, check up front for any null strings passed in as input assembly names.|
|18.104.22.168920||20 September 2005||
ILMerge is now a .NET Framework version 2.0 application. That means in order to run it, the v2 CLR must be installed. To merge assemblies for previous versions of .NET, use the /v1.1 option (e.g. for version 1.1).
The /xmldocs option has been added to merge any XML documentation files that are present for the input assemblies.
Version numbers are now "2.0.0.<last digit of year><month><day>".
|1.0.2081.20884||12 September 2005||More generics fixes. |
Allow "/v2" to be used in place of the targetplatform option as long as the v2 framework is in the standard location.
(Also "/v1" or "/v1.1" can be used in the same way.) Unresolved reference exceptions now print out the name of the offending assembly.
|1.0.2060.16593||22 August 2005||More generics fixes.|
|1.0.2053.16481||15 August 2005||Many bug fixes related to generics and other topics.|
The /allowDup option has been added to allow duplicate public types to be renamed. This allows obfuscated assemblies to be merged since
obfuscators (at least one of them) defines the same attribute in each assembly it creates.
|1.0.1952.21848||9 May 2005||The /delaysign option has been added so the target assembly can be delay signed. Note that the /snk option has been renamed to be /keyfile.|
Retargetable external assembly references are now handled correctly.
Fixed the reading of serialized array types in custom attributes.
Updated the documentation.
|1.0.1923.13862||7 April 2005||All errors encountered in the Main method are now written to the Console instead of the log. It had been the case that if /log was not specified, ILMerge was silent in the face of errors.|
Abort processing if any of the input assemblies has a metadata import error.
Now exclusions to internalize can use the assembly name: "\[A\].*" excludes all types in assembly A from being made non-public. The backslashes are required because the string is treated as a regular expression. The regular expression is still checked against just the type name first, so the assembly
does not need to be specified: "N.T" will exclude all types with that name no matter what assembly they are found in.
The requirement on the PeKind of each input assembly is now weaker: all must agree by either not being machine/processor-specific or have the same machine/processor-specific marking.
|1.0.1899.17933||16 March 2005||Same as previous version, but first released on MSDN which permits commercial usage.|
|1.0.1896.20590||11 March 2005||Fixed a problem that cause the /wildcards option to make the searching in the search directories not |
work. Correctly adjust the accessibility of methods even if they are in a nested type. Correctly implement the /copyattrs option. ILMerge is now instance-based. This should affect only its programmatic use and should be invisible when used from the command line. It might help with releasing resources acquired during merging.
|1.0.1816.20370||21 December 2004||For backward compatibility, wild cards in input assembly names are allowed only when the /wildcards option is specified. Fixed some general errors.|
|1.0.1810.17247||15 December 2004||Allow wild cards in |
input assembly names.
|1.0.1762.21538||28 October 2004||Last release somehow had bad bits in it which meant that exceptions were propagated to the |
|1.0.1760.24350||26 October 2004||Another fix for marshalling of return values. Widen |
method accessibility if it is "protected" and verriding a "protected internal" method from nother input assembly.
|1.0.1733.14048||29 September 2004||General bug fixes (includes marshalling info preservation).|
|1.0.1713.28770||09 September 2004||Added /zeroPeKind option, fix for marshalling of return values|
|1.0.1704.20936||31 August 2004||Added /publickeytokens option, fixes for C++ assemblies.|
|1.0.1698.27076||25 August 2004||General bug fixes.|
|1.0.1683.11907||10 August 2004||General bug fixes.|
|1.0.1663.20263||22 July 2004||Previous version produced unverifiable assemblies. (Sigh.)|
|1.0.1661.24486||19 July 2004||Fix for incorrect behavior for /ndebug option and /t:exe option. General bug fixes.|
|1.0.1545.17990||25 March 2004||Fixed the /t:winexe option.|
|1.0.1532.17922||12 March 2004||General bug fixes.|
|1.0.1528.38113||9 March 2004||Added /targetplatform option. General bug fixes.|
|1.0.1508.17205||17 February 2004||General bug fixes.|
|1.0.1500.21612||10 February 2004||Assembly-level attributes: /copyattrs, /attr options added.|