### Install ILRepack with nuget.exe Source: https://github.com/gluck/il-repack/wiki/Home Installs the ILRepack NuGet package using nuget.exe. Ensure nuget.exe is available and the path is correct. ```bash mono tools/NuGet.exe install -ExcludeVersion ILRepack -OutputDirectory tools ``` -------------------------------- ### Install ILRepack as Dotnet Tool Source: https://github.com/gluck/il-repack/blob/master/README.md Installs ILRepack globally as a dotnet tool. After installation, you can run it using the 'ilrepack' command. ```powershell PS C:\> dotnet tool install -g dotnet-ilrepack ``` -------------------------------- ### Clone and Build IL-Repack Source: https://github.com/gluck/il-repack/blob/master/README.md Instructions for cloning the IL-Repack repository and building the project using msbuild. Ensure you clone recursively to include submodules. ```bash git clone --recursive https://github.com/gluck/il-repack.git cd il-repack msbuild ``` -------------------------------- ### ILRepack Options: Logging and Output Source: https://github.com/gluck/il-repack/blob/master/README.md Illustrates options for enabling logging and specifying the output path for the merged assembly. Symbol, config, and doc files are also written to the output path. ```bash - /log: enable logging to a file (default is disabled) - /verbose more detailed logging - /out: target assembly path, symbol/config/doc files will be written here as well ``` -------------------------------- ### ILRepack Options: Target Assembly Configuration Source: https://github.com/gluck/il-repack/blob/master/README.md Covers options for configuring the target merged assembly, including its kind (library, exe, winexe), version, and signing using key files or containers. ```bash - /target:kind target assembly kind [library|exe|winexe], default is same as primary assembly - /ver:M.X.Y.Z target assembly version - /keyfile: keyfile to sign the output assembly - /keycontainer: key container - /delaysign set the key, but don't sign the assembly ``` -------------------------------- ### ILRepack Options: Input Assemblies Source: https://github.com/gluck/il-repack/blob/master/README.md Details options for handling input assemblies, including resolving references from specified directories and supporting wildcards for input files. ```bash - primary assembly, gives the name, version to the merged one - other assemblies to merge with the primary one - /wildcards allows (and resolves) file wildcards (e.g. *.dll) in input assemblies - /lib: 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. ``` -------------------------------- ### Basic ILRepack Syntax Source: https://github.com/gluck/il-repack/blob/master/README.md Shows the basic command-line syntax for ILRepack, similar to ILMerge. Specify the output path, primary assembly, and other assemblies to merge. ```bash Syntax: ILRepack.exe [Options] /out: [ ...] ``` -------------------------------- ### ILRepack Options: Attributes and Resources Source: https://github.com/gluck/il-repack/blob/master/README.md Describes options related to copying assembly attributes and handling specific resources. You can copy attributes from the primary assembly or another specified file. ```bash - /repackdrop:RepackDropAttribute allows dropping members denoted by this attribute name when merging - /copyattrs copy assembly attributes (by default only the primary assembly attributes are copied) - /attr: take assembly attributes from the given assembly file - /allowMultiple when copyattrs is specified, allows multiple attributes (if type allows) ``` -------------------------------- ### ILRepack Options: Handling Duplicates and Resources Source: https://github.com/gluck/il-repack/blob/master/README.md Details options for managing duplicate types and resources during the merge process. This includes allowing specific duplicate types, allowing all duplicates, or merging identical types. ```bash - /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 - /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 ``` -------------------------------- ### Run ILRepack on Assemblies Source: https://github.com/gluck/il-repack/wiki/Home Executes ILRepack to merge assemblies. This command includes options for signing, versioning, XML documentation, internalization, parallel processing, target platform, and verbose output. Adjust paths and options as needed for your project. ```bash mono tools/ILRepack/tools/ILRepack.exe \ /keyfile:src/signing/LogaryPublic.snk \ /ver:1.2.3 /xmldocs /internalize /parallel \ /targetplatform:v4 \ /index /verbose /out:Logary.dll \ src/Logary/bin/Release/Logary.dll \ src/Logary/bin/Release/FSharp.Actor.dll \ src/Logary/bin/Release/FSharp.Core.dll \ src/Logary/bin/Release/Intelliplan.JsonNet.NodaTime.dll \ src/Logary/bin/Release/Intelliplan.JsonNet.dll \ src/Logary/bin/Release/Newtonsoft.Json.dll \ src/Logary/bin/Release/NodaTime.dll \ src/Logary/bin/Release/policy.2.3.FSharp.Core.dll ``` -------------------------------- ### GitHub Comparison URL Source: https://github.com/gluck/il-repack/wiki/Forks Provides a direct link to compare branches on GitHub, showing differences between two repositories. ```text https://github.com/jbevain/cecil/compare/master...gluck:cecil:master ``` -------------------------------- ### Define NuGet Packages and Platforms Source: https://github.com/gluck/il-repack/wiki/Forks Defines a collection of NuGet packages and their associated platforms, including versioning and matching logic. Used for build or dependency management. ```csharp public static readonly IEnumerable Platforms = Platform.From( Package.From("UnionArgParser", "0.8.7"), Package.From("FSharp.Core", "3.0.2") Package.From("MassTransit", "2.9.9"), Package.From("Magnum", "2.1.3"), Package.From("Newtonsoft.Json", "6.0.8") Platform.From( Package.From("Microsoft.Bcl", "1.1.10") .WithMatcher(p => p.StartsWith($ ``` ```csharp lib{Path.DirectorySeparatorChar}net40")), Package.From("Microsoft.Bcl.Async", "1.0.168") .WithMatcher(p => p.StartsWith($ ``` ```csharp lib{Path.DirectorySeparatorChar}net40")), Package.From("System.Runtime", "4.3.0").WithFwk("net462"), Package.From("System.Collections.Immutable", "1.3.1").WithFwk("portable-net45+win8+wp8+wpa81") ) IKVM VerifiesMergedPdbKeepSourceIndexationForHttpIndexation ); ``` -------------------------------- ### ILRepack Options: Internalizing Types Source: https://github.com/gluck/il-repack/blob/master/README.md Explains how to internalize types within the merged assembly. This includes making types internal by default, internalizing specific assemblies, excluding types from internalization, and renaming internalized types. ```bash - /internalize make all types except in the first assembly 'internal'. Types in the transitive closure of public API remain public. - /internalizeassembly: 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: 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 ``` -------------------------------- ### GitHub Commit URL Source: https://github.com/gluck/il-repack/wiki/Forks Provides a direct link to a specific commit on GitHub. ```text https://github.com/gluck/cecil/commit/d9b47f346e061c0f0e9e6e431262533955a6caed ``` -------------------------------- ### Find Merge Base for Git Branches Source: https://github.com/gluck/il-repack/wiki/Forks Determines the common ancestor commit between two Git branches. Useful for identifying divergence points. ```bash git merge-base jbevain/master gluck/master 51d55cb3e9228638382eefdb4c8a633e2249569e ``` ```bash git merge-base alexx999/master gluck/master f2aef65ff21e85d628f84bd586de96374f75e24e ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.