Git Product home page Git Product logo

ilrepack.lib.msbuild.task's Introduction

ILRepack.Lib.MSBuild.Task

MSBuild task for ILRepack which is an open-source alternative to ILMerge.

Install via NuGet NuGet NuGet

  Install-Package ILRepack.Lib.MSBuild.Task

Supported build tools

  • MSBuild

Usage

You just need to install NuGet package to merge all your project dependencies. If you want to customize the process then you can create a file named "ILRepack.targets" in your project folder. You can create it like shown below.

Example "ILRepack.targets"

<!-- ILRepack -->
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="ILRepacker" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">

    <ItemGroup>
        <InputAssemblies Include="$(OutputPath)\ExampleAssemblyToMerge1.dll" />
        <InputAssemblies Include="$(OutputPath)\ExampleAssemblyToMerge2.dll" />
        <InputAssemblies Include="$(OutputPath)\ExampleAssemblyToMerge3.dll" />
    </ItemGroup>

    <ItemGroup>
        <!-- Must be a fully qualified name -->
        <DoNotInternalizeAssemblies Include="ExampleAssemblyToMerge3" />
    </ItemGroup>

    <ILRepack
        Parallel="true"
        Internalize="true"
        InternalizeExclude="@(DoNotInternalizeAssemblies)"
        InputAssemblies="@(InputAssemblies)"
        TargetKind="Dll"
        OutputFile="$(OutputPath)\$(AssemblyName).dll"
    />

    </Target>
</Project>
<!-- /ILRepack -->

Configuration

You need to create "ILRepack.Config.props" file in your project folder to configure the behavior of ILRepack.Lib.MSBuild.Task.

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
  </PropertyGroup>
</Project>

You can specify following options inside the <PropertyGroup> element to configure the behavior of the ILRepack task.

Specify your custom Targets file path

If you don't want to add "ILRepack.targets" file in your project folder then you can specify your targets file path as shown below.

<ILRepackTargetsFile>$(SolutionDir)ILRepack.targets</ILRepackTargetsFile>

Specify Key File to use for signing

You can specify the path of the SNK file you want to use for signing your assembly as shown below. This configuration option only applies if you are using default targets file provided in NuGet package.

<KeyFile>$(ProjectDir)ILRepack.snk</KeyFile>

Specify whether to clear directory after merging

If you are using default targets file then you may notice that it clears Output directory after merging dependencies. You can turn this functionality off by setting ClearOutputDirectory to False as shown below.

<ClearOutputDirectory>False</ClearOutputDirectory>

Task options

Option Description
KeyFile Specifies a KeyFile to sign the output assembly.
KeyContainer Specifies a KeyContainer to use.
LogFile Specifies a logfile to output log information.
Union Merges types with identical names into one.
DebugInfo Enable/disable symbol file generation.
AttributeFile Take assembly attributes from the given assembly file.
CopyAttributes Copy assembly attributes.
AllowMultiple Allows multiple attributes (if type allows).
TargetKind Target assembly kind (Exe|Dll|WinExe|SameAsPrimaryAssembly).
TargetPlatformVersion Target platform (v1, v1.1, v2, v4 supported).
TargetPlatformDirectory Path of Directory where target platform is located.
XmlDocumentation Merge assembly xml documentation.
LibraryPath List of paths to use as "include directories" when attempting to merge assemblies.
Internalize Set all types but the ones from the first assembly 'internal'.
RenameInternalized Rename all internalized types (to be used when Internalize is enabled).
InternalizeExclude If Internalize is set to true, any which match these regular expressions will not be internalized. If internalize is false, then this property is ignored.
OutputFile Output name for merged assembly.
InputAssemblies List of assemblies that will be merged.
DelaySign Set the keyfile, but don't sign the assembly.
AllowDuplicateResources Allows to duplicate resources in output assembly.
AllowedDuplicateNamespaces Allows the specified namespaces for being duplicated in to input assemblies. Multiple namespaces are delimited by ",".
ZeroPeKind Allows assemblies with Zero PeKind (but obviously only IL will get merged).
Parallel Use as many CPUs as possible to merge the assemblies.
Verbose Additional debug information during merge that will be outputted to LogFile.
NoRepackRes Does not add the embedded resource 'ILRepack.List' with all merged assembly names.
Wildcards Allows (and resolves) file wildcards (e.g. `*`.dll) in input assemblies.
RepackDropAttribute Name of an attribute (optional). Members in input assemblies marked with this attribute will be dropped during merging.

ilrepack.lib.msbuild.task's People

Contributors

aldomat avatar alexx999 avatar aviadmini avatar ermshiperete avatar fixrm avatar jairbubbles avatar michel-pi avatar pinkfloydx33 avatar ravibpatel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.