<ILLinkTrimOutputPath>$(IntermediateOutputPath)</ILLinkTrimOutputPath>
<ILLinkTrimXml Condition="'$(ILLinkTrimXml)' == '' and Exists('$(MSBuildProjectDirectory)/ILLinkTrim.xml')">$(MSBuildProjectDirectory)/ILLinkTrim.xml</ILLinkTrimXml>
+ <!-- ILLinkTrim_LibraryBuild.xml files are only used during building the library, not an app. They shouldn't be embedded into the assembly. -->
+ <ILLinkTrimXmlLibraryBuild Condition="'$(ILLinkTrimXmlLibraryBuild)' == '' and Exists('$(MSBuildProjectDirectory)/ILLinkTrim_LibraryBuild.xml')">$(MSBuildProjectDirectory)/ILLinkTrim_LibraryBuild.xml</ILLinkTrimXmlLibraryBuild>
<!-- if building a PDB, tell illink to rewrite the symbols file -->
<ILLinkRewritePDBs Condition="'$(ILLinkRewritePDBs)' == '' and '$(DebugSymbols)' != 'false'">true</ILLinkRewritePDBs>
</EmbeddedResource>
</ItemGroup>
+ <ItemGroup Condition="'$(ILLinkTrimXmlLibraryBuild)' != ''">
+ <None Include="$(ILLinkTrimXmlLibraryBuild)" />
+ </ItemGroup>
+
<!-- Custom binplacing for pre/post-trimming and reports that is useful for analysis
Must be enabled by setting BinPlaceILLinkTrimAssembly=true
-->
<!-- keep types and members required by Debugger-related attributes -->
<ILLinkArgs>$(ILLinkArgs) -v true</ILLinkArgs>
<!-- don't remove the embedded root xml resource since ILLink may run again on the assembly -->
- <ILLinkArgs>$(ILLinkArgs) --strip-descriptors false</ILLinkArgs>
+ <ILLinkArgs Condition="'$(ILLinkTrimXml)' != ''">$(ILLinkArgs) --strip-descriptors false</ILLinkArgs>
+ <!-- pass the non-embedded root xml file on the command line -->
+ <ILLinkArgs Condition="'$(ILLinkTrimXmlLibraryBuild)' != ''">$(ILLinkArgs) -x "$(ILLinkTrimXmlLibraryBuild)"</ILLinkArgs>
<!-- ignore unresolved references -->
<ILLinkArgs>$(ILLinkArgs) --skip-unresolved true</ILLinkArgs>
<!-- keep interface implementations -->
<Compile Include="System\Data\SQLTypes\SQLBytes.cs" />
<Compile Include="System\Data\ProviderBase\DataReaderContainer.cs" />
<Compile Include="System\Data\ProviderBase\SchemaMapping.cs" />
+ <Compile Include="$(CommonPath)System\Runtime\CompilerServices\PreserveDependencyAttribute.cs"
+ Link="Common\System\Runtime\CompilerServices\PreserveDependencyAttribute.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Collections" />
using System.Diagnostics;
using System.Text;
using System.Reflection;
+using System.Runtime.CompilerServices;
namespace System.Data.SqlTypes
{
private static MethodInfo CreateSqlReaderMethodInfo
{
+ [PreserveDependency("CreateSqlReader", "System.Xml.XmlReader", "System.Private.Xml")]
get
{
if (s_createSqlReaderMethodInfo == null)
+++ /dev/null
-<linker>
- <assembly fullname="System.Private.Xml">
- <type fullname="System.Xml.XmlReader">
- <!-- called via reflection from System.Data.Common.dll -->
- <method name="CreateSqlReader" />
- </type>
- <type fullname="System.Xml.Serialization.XmlSerializer">
- <!-- called via reflection from SGen tool -->
- <method name="set_Mode" />
- <method name="GenerateSerializer" />
- </type>
- </assembly>
-</linker>
\ No newline at end of file
--- /dev/null
+<linker>
+ <assembly fullname="System.Private.Xml">
+ <type fullname="System.Xml.XmlReader">
+ <!-- called via reflection from System.Data.Common.dll -->
+ <method name="CreateSqlReader" />
+ </type>
+ <type fullname="System.Xml.Serialization.XmlSerializer">
+ <!-- called via reflection from SGen tool -->
+ <method name="set_Mode" />
+ <method name="GenerateSerializer" />
+ </type>
+ </assembly>
+</linker>
\ No newline at end of file