MSBuild.AutoILMerge.Task
The MSBuild task wrapping (in)famous ILMerge utility.
The recommended way of embedding dependencies into the executable is now Costura.Fody,
but ILMerge is still unavoidable for some tasks, e.g. creation of database-stored MS CRM plug-ins.
Also, calling ILMerge from a batch file is sometimes hindered by the limitation on the total length of the command line...
See http://sedodream.com/PermaLink,guid,020fd1af-fb17-4fc9-8336-877c157eb2b4.aspx
why we don't really know the project directory so you better make sure all paths are absolute.
Initializes a new instance of the class.
Gets or sets the item list containing the input assemblies.
The first element of the list is considered to be the primary assembly.
Translates to ILMerge.SetInputAssemblies().
Gets or sets the item list containing the library assemblies
that are not to be included in the merge. They are used to determine the
for the lack of a better method.
With NuGet we can have hundreds potential library directories even if we filter them by platform
(nontrivial task by itself).
Translates to ILMerge.SetSearchDirectories() eventually with a higher priority then .
TODO: copy to temp dir (use symlinks?), add dthis dir to the lib path.
Gets or sets the item list containing the directories to be used to search for input assemblies.
Translates to ILMerge.SetSearchDirectories().
Gets or sets the directory path to be considered an anchor point
for library (usually packaged) assemblies. used to determine the default merge order.
Gets or sets the path and name of the file containing the merge order list.
Assemblies (or, in the future, packages) are listed one per line;
all names given before a line containing "..." are popped to the top of the merge order,
all names after that line are pushed to the bottom. Assemblies not mentioned there stay where they were
(most often the initial order was quite random).
Gets or sets the path and name of the output file with the successfully merged result assembly.
Gets or sets the path and name of the log file.
Gets or sets the path name of the file that will be used to identify types that are not to have their visibility modified.
Used together with flag. For details, see ILMerge documentation.
Gets or sets the path and name of the attribute assembly,
an assembly that will be used to get all of the assembly-level attributes such as Culture, Version, etc.
It will also be used to get the Win32 Resources from. It is mutually exclusive with the property
For details, see ILMerge documentation.
Gets or sets the path and name of the .snk file.
The target assembly will be signed with its contents and will then have a strong name.
It can be used with the property to have the target assembly delay signed.
This can be done even if the primary assembly was fully signed.
Gets or sets of the type names that are allowed to be in duplicate.
For details, see ILMerge documentation.
Gets or sets a value indicating whether, if the is also set,
any assembly-level attributes names that have the same type are copied over into the target directory
as long as the definition of the attribute type specifies that AllowMultiple is true.
Gets or sets a value indicating whether, if an assembly's PeKind flag
(this is the value of the field listed as .corflags in the Manifest) is zero
it will be treated as if it was ILonly.
For details, see ILMerge documentation.
Gets or sets a value indicating whether any wild cards in file names are expanded and all matching files will be used as input.
Usually it is already done by MSBuild, but left here for completeness. For details, see ILMerge documentation.
Gets or sets a value indicating whether the "transitive closure"
of the input assemblies is computed and added to the list of input assemblies.
For details, see ILMerge documentation.
Gets or sets a value indicating whether the assembly level attributes of each input assembly are copied over into the target assembly.
For details, see ILMerge documentation.
Gets or sets a value indicating whether ILMerge creates a .pdb file for the output assembly
and merges into it any .pdb files found for input assemblies.
Gets or sets a value indicating whether the target assembly will be delay signed.
Only used together with option.
Gets or sets the file alignment used for the target assembly.
The setter sets the value to the largest power of two that is no larger than the supplied argument, and is at least 512.
Gets or sets a value indicating whether types in assemblies other than the primary assembly have their visibility modified.
For details, see ILMerge documentation.
Gets or sets a value indicating whether XML documentation files are merged
to produce an XML documentation file for the target assembly.
Gets or sets a value indicating whether external assembly references in the manifest of the target assembly
will use full public keys (false) or public key tokens (true). Default is .
Gets or sets a value indicating whether log messages are written. It is used in conjunction with the property.
Gets the value indicating whether after the merge the primary assembly had a strong name,
but the target assembly does not. This can occur when an .snk file is not specified,
or if something goes wrong trying to read its contents.
Gets or sets the kind of the target assembly (a library, a console application or a Windows application).
The possible values are (Dll, Exe, WinExe).
Gets or sets the version of the target framework. Default is "40".
Gets or sets a value indicating whether types with the same name are all merged into a single type in the target assembly.
For details, see ILMerge documentation.
Gets or sets the version number of the assembly in "6.2.1.3" format. Default is "1.0.0.0".
The one and only.
Success or failure.
use Dynamic. Segregate executable search in a separate class.
Reshuffles the input assembly list according to the file source and specified lead order (if any).
In any case, project assemblies are loaded before library assemblies (library assemblies are all that lives
under ).
The reordered list of input assemblies. The master assembly will remain the first one.
TODO: use http://stackoverflow.com/questions/6653715/view-nuget-package-dependency-hierarchy
to flatten package dependency graph.