Skip to content

Commit

Permalink
Update readme.md with the latest options and update changelog
Browse files Browse the repository at this point in the history
  • Loading branch information
KirillOsenkov committed Dec 10, 2024
1 parent dd64a70 commit 9a32097
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 36 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# IL Repack changelog

## 2.0.36
### Added
* PR #381 - Add /preservetimestamp command line option

## 2.0.35
### Fixed
* PR #366 - assembly strong name Linux compatibility
Expand Down
104 changes: 68 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,43 +37,75 @@ Syntax

A console application is available (can be used as DLL as well), using same syntax as ILMerge:
```
Syntax: ILRepack.exe [options] /out:<path> <path_to_primary> [<other_assemblies> ...]
- /help displays this usage
- /keyfile:<path> specifies a keyfile to sign the output assembly
- /keycontainer:<name> specifies a key container to sign the output assembly (takes precedence over /keyfile)
- /log:<logfile> enable logging (to a file, if given) (default is disabled)
- /ver:M.X.Y.Z target assembly version
- /union merges types with identical names into one
- /ndebug disables symbol file generation
- /copyattrs copy assembly attributes (by default only the primary assembly attributes are copied)
- /attr:<path> take assembly attributes from the given assembly file
- /allowMultiple when copyattrs is specified, allows multiple attributes (if type allows)
- /target:kind specify target assembly kind (library, exe, winexe supported, default is same as first assembly)
- /targetplatform:P specify target platform (v1, v1.1, v2, v4 supported)
- /xmldocs merges XML documentation as well
- /lib:<path> adds the path to the search directories for referenced assemblies (can be specified multiple times)
- /internalize[:<excludefile>] sets all types but the ones from the first assembly 'internal'. <excludefile> contains one regex per
line to compare against FullName of types NOT to internalize.
- /renameInternalized rename all internalized types
- /excludeinternalizeserializable do not internalize types marked as Serializable
- /delaysign sets the key, but don't sign the assembly
Syntax: ILRepack.exe [Options] /out:<path> <path_to_primary> [<other_assemblies> ...]
- /help displays this help
- @<path>.rsp response file containing additional arguments, one per line
- /log:<logfile> enable logging to a file (default is disabled)
- /verbose more detailed logging
- /out:<path> target assembly path, symbol/config/doc files will be written here as well
- <path_to_primary> primary assembly, gives the name, version to the merged one
- <other_assemblies> other assemblies to merge with the primary one
- /wildcards allows (and resolves) file wildcards (e.g. *.dll) in input assemblies
- /lib:<path> path(s) to search directories to resolve referenced assemblies
(can be specified multiple times).
If you get 'unable to resolve assembly' errors specify a path to a directory
where the assembly can be found.
- /target:kind target assembly kind [library|exe|winexe], default is same as primary assembly
- /ver:M.X.Y.Z target assembly version
- /keyfile:<path> keyfile to sign the output assembly
- /keycontainer:<c> key container
- /delaysign set the key, but don't sign the assembly
- /internalize make all types except in the first assembly 'internal'.
Types in the transitive closure of public API remain public.
- /internalizeassembly:<path>
Internalize a specific assembly name (no extension).
May be specified more than once (one per assembly to internalize).
If specified, no need to also specify /internalize.
- /internalize:<exclude_file>
Each line is either a regex/ full type name not to internalize
or an assembly name not to internalize (.dll extension optional)
- /renameinternalized
rename each internalized type to a new unique name
- /excludeinternalizeserializable
do not internalize types marked as Serializable
- /allowdup:Type keep duplicates of the specified type, may be specified more than once
- /allowdup if no other /allowdup arguments specified, allow all duplicate types
- /union merges types with identical names into one
- /repackdrop:RepackDropAttribute
allows dropping members denoted by this attribute name when merging
- /allowduplicateresources
allows to duplicate resources in output assembly (by default they're ignored)
- /noRepackRes do not add the resource '{ResourcesRepackStep.ILRepackListResourceName}' with all merged assembly names
- /copyattrs copy assembly attributes (by default only the primary assembly attributes are copied)
- /attr:<path> take assembly attributes from the given assembly file
- /allowMultiple when copyattrs is specified, allows multiple attributes (if type allows)
- /targetplatform:P specify target platform (v1, v1.1, v2, v4 supported)
- /keepotherversionreferences
take reference assembly version into account when removing references
- /preservetimestamp preserve original file PE timestamp
- /skipconfig skips merging config files
- /illink merge IL Linker files
- /xmldocs merges XML documentation as well
- /ndebug disables symbol file generation (omit this if you want symbols and debug information)
- /zeropekind allows assemblies with Zero PeKind (but obviously only IL will get merged)
- /index stores file:line debug information as type/method attributes (requires PDB)
- /parallel use as many CPUs as possible to merge the assemblies
- /pause pause execution once completed (good for debugging)
- /usefullpublickeyforreferences - NOT IMPLEMENTED
- /align - NOT IMPLEMENTED
- /closed - NOT IMPLEMENTED
- /allowdup:Type allows the specified type for being duplicated in input assemblies
- /allowduplicateresources allows to duplicate resources in output assembly (by default they're ignored)
- /zeropekind allows assemblies with Zero PeKind (but obviously only IL will get merged)
- /wildcards allows (and resolves) file wildcards (e.g. `*`.dll) in input assemblies
- /parallel use as many CPUs as possible to merge the assemblies
- /pause pause execution once completed (good for debugging)
- /repackdrop:AttributeClass allows dropping specific members during merging (#215)
- /verbose shows more logs
- /out:<path> target assembly path, symbol/config/doc files will be written here as well
- <path_to_primary> primary assembly, gives the name, version to the merged one
- <other_assemblies> ...
Note: for compatibility purposes, all options can be specified using '/', '-' or '--' prefix.
- /align - NOT IMPLEMENTED
- /closed - NOT IMPLEMENTED
Note: for compatibility purposes, all Options are case insensitive, and can be specified using '/', '-' or '--' prefix.
```

How to build
Expand Down

0 comments on commit 9a32097

Please sign in to comment.