{"id":13414813,"url":"https://github.com/gluck/il-repack","last_synced_at":"2025-05-13T15:12:49.270Z","repository":{"id":630086,"uuid":"2613965","full_name":"gluck/il-repack","owner":"gluck","description":"Open-source alternative to ILMerge","archived":false,"fork":false,"pushed_at":"2025-03-21T19:26:41.000Z","size":2319,"stargazers_count":1249,"open_issues_count":21,"forks_count":221,"subscribers_count":53,"default_branch":"master","last_synced_at":"2025-04-23T21:43:34.170Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gluck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-10-20T15:16:20.000Z","updated_at":"2025-04-23T07:07:34.000Z","dependencies_parsed_at":"2023-07-06T09:16:32.120Z","dependency_job_id":"71d5ca5f-19f5-49d9-b6a6-5db6eb2cbf93","html_url":"https://github.com/gluck/il-repack","commit_stats":{"total_commits":500,"total_committers":45,"mean_commits":11.11111111111111,"dds":0.5700000000000001,"last_synced_commit":"033e89aa521d5865dbdeb094cd521aaa03208359"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluck%2Fil-repack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluck%2Fil-repack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluck%2Fil-repack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluck%2Fil-repack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gluck","download_url":"https://codeload.github.com/gluck/il-repack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253969266,"owners_count":21992264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T21:00:37.119Z","updated_at":"2025-05-13T15:12:44.256Z","avatar_url":"https://github.com/gluck.png","language":"C#","readme":"[![Build status](https://img.shields.io/appveyor/ci/gluck/il-repack.svg?label=build%20windows)](https://ci.appveyor.com/project/gluck/il-repack) [![NuGet](https://img.shields.io/nuget/v/ILRepack.svg)](https://www.nuget.org/packages/ILRepack/) [![GitHub license](https://img.shields.io/github/license/gluck/il-repack.svg)](http://www.apache.org/licenses/LICENSE-2.0)   \n[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat-green.svg)](https://gitter.im/gluck/il-repack)\n\nIntroduction\n============\n\nILRepack is meant at replacing [ILMerge](http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0\u0026displaylang=en) / [Mono.Merge](http://evain.net/blog/articles/2006/11/06/an-introduction-to-mono-merge).\n\nThe former being ~~closed-source~~ ([now open-sourced](https://github.com/Microsoft/ILMerge)), impossible to customize, slow, resource consuming and many more.\nThe later being deprecated, unsupported, and based on an old version of Mono.Cecil.\n\nHere we're using latest (slightly modified) Cecil sources (0.11.5), you can find the fork [here](https://github.com/KirillOsenkov/cecil/tree/ilrepack).\n\nDownloads\n------\n\nYou can grab it using [NuGet](http://nuget.org/packages/ILRepack/).\n\nOr if you're old-school (and want to stay like that), this [direct link](http://nuget.org/api/v2/package/ILRepack) will give you the latest nupkg file, which you can open as a zip file.\n\nDotnet Tool Installation\n-----\n\nILRepack can now be installed as a `dotnet tool`:\n\n```powershell\nPS C:\\\u003e dotnet tool install -g dotnet-ilrepack\n```\n\nYou can then run ILRepack using `ilrepack`.\n\n\u003e [!Note]\n\u003e There's no need to use `dotnet ilrepack`, as the way the tool is installed into the `dotnet tool`s path, all you need to do is issue the command `ilrepack`.\n\nSyntax\n------\n\nA console application is available (can be used as DLL as well), using same syntax as ILMerge:\n```\nSyntax: ILRepack.exe [Options] /out:\u003cpath\u003e \u003cpath_to_primary\u003e [\u003cother_assemblies\u003e ...]\n\n - /help              displays this help\n - @\u003cpath\u003e.rsp        response file containing additional arguments, one per line\n - /log:\u003clogfile\u003e     enable logging to a file (default is disabled)\n - /verbose           more detailed logging\n\n - /out:\u003cpath\u003e        target assembly path, symbol/config/doc files will be written here as well\n - \u003cpath_to_primary\u003e  primary assembly, gives the name, version to the merged one\n - \u003cother_assemblies\u003e other assemblies to merge with the primary one\n - /wildcards         allows (and resolves) file wildcards (e.g. *.dll) in input assemblies\n\n - /lib:\u003cpath\u003e        path(s) to search directories to resolve referenced assemblies \n                      (can be specified multiple times).\n                      If you get 'unable to resolve assembly' errors specify a path to a directory\n                      where the assembly can be found.\n\n - /target:kind       target assembly kind [library|exe|winexe], default is same as primary assembly\n - /ver:M.X.Y.Z       target assembly version\n - /keyfile:\u003cpath\u003e    keyfile to sign the output assembly\n - /keycontainer:\u003cc\u003e  key container\n - /delaysign         set the key, but don't sign the assembly\n\n - /internalize       make all types except in the first assembly 'internal'.\n                      Types in the transitive closure of public API remain public.\n - /internalizeassembly:\u003cpath\u003e\n                      Internalize a specific assembly name (no extension).\n                      May be specified more than once (one per assembly to internalize).\n                      If specified, no need to also specify /internalize.\n - /internalize:\u003cexclude_file\u003e\n                      Each line is either a regex/ full type name not to internalize\n                      or an assembly name not to internalize (.dll extension optional)\n - /renameinternalized\n                      rename each internalized type to a new unique name\n - /excludeinternalizeserializable\n                      do not internalize types marked as Serializable\n\n - /allowdup:Type     keep duplicates of the specified type, may be specified more than once\n - /allowdup          if no other /allowdup arguments specified, allow all duplicate types\n - /union             merges types with identical names into one\n - /repackdrop:RepackDropAttribute \n                      allows dropping members denoted by this attribute name when merging\n - /allowduplicateresources \n                      allows to duplicate resources in output assembly (by default they're ignored)\n - /noRepackRes       do not add the resource '{ResourcesRepackStep.ILRepackListResourceName}' with all merged assembly names\n\n - /copyattrs         copy assembly attributes (by default only the primary assembly attributes are copied)\n - /attr:\u003cpath\u003e       take assembly attributes from the given assembly file\n - /allowMultiple     when copyattrs is specified, allows multiple attributes (if type allows)\n - /targetplatform:P  specify target platform (v1, v1.1, v2, v4 supported)\n - /keepotherversionreferences\n                      take reference assembly version into account when removing references\n\n - /preservetimestamp preserve original file PE timestamp\n - /skipconfig        skips merging config files\n - /illink            merge IL Linker files\n - /xmldocs           merges XML documentation as well\n - /ndebug            disables symbol file generation (omit this if you want symbols and debug information)\n - /zeropekind        allows assemblies with Zero PeKind (but obviously only IL will get merged)\n - /index             stores file:line debug information as type/method attributes (requires PDB)\n\n - /parallel          use as many CPUs as possible to merge the assemblies\n - /pause             pause execution once completed (good for debugging)\n\n - /usefullpublickeyforreferences - NOT IMPLEMENTED\n - /align             - NOT IMPLEMENTED\n - /closed            - NOT IMPLEMENTED\n\nNote: for compatibility purposes, all Options are case insensitive, and can be specified using '/', '-' or '--' prefix.\n```\n\nHow to build\n------\n\nBuilds directly from within Visual Studio 2022, or using msbuild:\n\n```\ngit clone --recursive https://github.com/gluck/il-repack.git\ncd il-repack\nmsbuild\n```\n\nTODO\n------\n  * Crash-testing\n  * Add remaining features from ILMerge (closed / align)\n  * Un-fork Cecil\n  * Merge import process \u0026 reference fixing\n\nDONE\n------\n  * PDBs \u0026 MDBs should be merged (Thanks Simon)\n  * Fixed internal method overriding public one which isn't allowed in the same assembly (Simon)\n  * Attribute merge (/copyattrs)\n  * XML documentation merge\n  * Clean command line parameter parsing\n  * Add usage / version\n  * App.config merge\n  * Internalizing types (Simon)\n  * Delay signing (Simon)\n  * Target platform selection (Simon)\n  * Automatic internal type renaming\n\nSponsoring / Donations\n------\nIf you like this tool and want to express your thanks, you can contribute either time to the project (issue triage or pull-requests) or donate money to the Free Software Foundation.\n\n[![Donate](https://www.gnu.org/graphics/logo-fsf.org-tiny.png)](https://my.fsf.org/donate/)\n","funding_links":[],"categories":["Assembly Manipulation","程序集处理","DevOps","TOOL"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluck%2Fil-repack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgluck%2Fil-repack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluck%2Fil-repack/lists"}