diff options
author | Michael Voorhees <michaelv@unity3d.com> | 2018-09-25 20:46:16 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2018-09-26 17:55:05 +0300 |
commit | 490378dbe2c9057bb55787f2d02d38afe0a85cd7 (patch) | |
tree | f1070f429bb99e50ec9f5b3cbfcb0e84578aeb1f /README.md | |
parent | 08db69b6eb3cbeff24d53dd4237c3180c17954f2 (diff) |
Add details of the link xml file format to README.md
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 92 |
1 files changed, 92 insertions, 0 deletions
@@ -21,3 +21,95 @@ TODO ## Build & Test Status [![Build Status](https://jenkins.mono-project.com/buildStatus/icon?job=test-linker-mainline)](https://jenkins.mono-project.com/job/test-linker-mainline/) + +## Link xml file examples + +A link xml file can be used to explicitly preserve assemblies, types, and members. Below is a sample file containing examples of various usages. + +```xml +<linker> + <!-- + Preserve types and members in an assembly + --> + <assembly fullname="Assembly1"> + <!--Preserve an entire type--> + <type fullname="Assembly1.A" preserve="all"/> + <!--No "preserve" attribute and no members specified means preserve all members--> + <type fullname="Assembly1.B"/> + <!--Preserve all fields on a type--> + <type fullname="Assembly1.C" preserve="fields"/> + <!--Preserve all fields on a type--> + <type fullname="Assembly1.D" preserve="methods"/> + <!--Preserve the type only--> + <type fullname="Assembly1.E" preserve="nothing"/> + <!--Preserving only specific members of a type--> + <type fullname="Assembly1.F"> + <!-- + Fields + --> + <field signature="System.Int32 field1" /> + <!--Preserve a field by name rather than signature--> + <field name="field2" /> + <!-- + Methods + --> + <method signature="System.Void Method1()" /> + <!--Preserve a method with parameters--> + <method signature="System.Void Method2(System.Int32,System.String)" /> + <!--Preserve a method by name rather than signature--> + <method name="Method3" /> + <!-- + Properties + --> + <!--Preserve a property, it's backing field (if present), getter, and setter methods--> + <property signature="System.Int32 Property1" /> + <property signature="System.Int32 Property2" accessors="all" /> + <!--Preserve a property, it's backing field (if present), and getter method--> + <property signature="System.Int32 Property3" accessors="get" /> + <!--Preserve a property, it's backing field (if present), and setter method--> + <property signature="System.Int32 Property4" accessors="set" /> + <!--Preserve a property by name rather than signature--> + <property name="Property5" /> + <!-- + Events + --> + <!--Preserve an event, it's backing field (if present), add, and remove methods--> + <event signature="System.EventHandler Event1" /> + <!--Preserve an event by name rather than signature--> + <event name="Event2" /> + </type> + <!--Examples with generics--> + <type fullname="Assembly1.G`1"> + <!--Preserve a field with generics in the signature--> + <field signature="System.Collections.Generic.List`1<System.Int32> field1" /> + <field signature="System.Collections.Generic.List`1<T> field2" /> + <!--Preserve a method with generics in the signature--> + <method signature="System.Void Method1(System.Collections.Generic.List`1<System.Int32>)" /> + <!--Preserve an event with generics in the signature--> + <event signature="System.EventHandler`1<System.EventArgs> Event1" /> + </type> + <!--Preserve a nested type--> + <type fullname="Assembly1.H/Nested" preserve="all"/> + <!--Preserve all fields of a type if the type is used. If the type is not used it will be removed--> + <type fullname="Assembly1.I" preserve="fields" required="0"/> + <!--Preserve all methods of a type if the type is used. If the type is not used it will be removed--> + <type fullname="Assembly1.J" preserve="methods" required="0"/> + <!--Preserve all types in a namespace--> + <type fullname="Assembly1.SomeNamespace*" /> + <!--Preserve all types with a common prefix in their name--> + <type fullname="Prefix*" /> + </assembly> + <!-- + Preserve an entire assembly + --> + <assembly fullname="Assembly2" preserve="all"/> + <!--No "preserve" attribute and no types specified means preserve all--> + <assembly fullname="Assembly3"/> + <!-- + Fully qualified assembly name + --> + <assembly fullname="Assembly4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"> + <type fullname="Assembly4.Foo" preserve="all"/> + </assembly> +</linker> +``` |