Skip to content

Add additional settings for ILMerge #4032

@gep13

Description

@gep13

In the current version of Cake, 2.3.0, the ILMerge alias is defined as the following:

public static void ILMerge(this ICakeContext context, FilePath outputFile, FilePath primaryAssembly, IEnumerable<FilePath> assemblyPaths, ILMergeSettings settings)

with the following settings available to be set:

        /// <summary>
        /// Gets or sets a value indicating whether whether types in assemblies other
        /// than the primary assembly should have their visibility modified to internal.
        /// </summary>
        /// <value>
        /// <c>true</c> if types in assemblies other than the primary assembly should
        /// have their visibility modified to internal; otherwise, <c>false</c>.
        /// </value>
        public bool Internalize { get; set; }

        /// <summary>
        /// Gets or sets the target kind.
        /// </summary>
        /// <value>The target kind.</value>
        public TargetKind TargetKind { get; set; }

        /// <summary>
        /// Gets or sets the target platform.
        /// </summary>
        /// <value>The target platform.</value>
        public TargetPlatform TargetPlatform { get; set; }

However, looking at the output from the help message for the ILMerge tool, there are additional options that can be provided, and I would like to add in these available options:

❯ .\tools\ILMerge.3.0.41\tools\net452\ILMerge.exe -h
Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename | /keycontainer:containername [/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>...]

These options are:

  • /lib
  • /log
  • /keyfile
  • /keycontainer
  • /delaysign
  • /internalize - already covered in current implementation
  • /target - already covered in current implementation
  • /closed
  • /ndebug
  • /ver
  • /copyattrs
  • /allowmultiple
  • /keepfirst
  • /xmldocs
  • /attr
  • /targetplatform - already covered in current implementation
  • /useFullPublicKeyReferences
  • /wildcards
  • /zeroPeKind
  • /allowDup
  • /union
  • /align
  • /out - already covered in current implementation

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions