-
Notifications
You must be signed in to change notification settings - Fork 10.3k
/
Copy pathLinkabilityChecker.csproj
83 lines (73 loc) · 3.74 KB
/
LinkabilityChecker.csproj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
<IsPackable>false</IsPackable>
<OutputType>Exe</OutputType>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
<Import Project="$(RepoRoot)eng\TrimmableProjects.props" />
<ItemGroup>
<Reference Include="@(TrimmableProject)" />
</ItemGroup>
<ItemGroup>
<!-- Packages required to produce a complete dependency graph for the trimmer -->
<Reference Include="System.Configuration.ConfigurationManager" />
<Reference Include="System.Security.Permissions" />
<Reference Include="System.Threading.AccessControl" />
</ItemGroup>
<Target Name="ILLinkTrimProjects" DependsOnTargets="ResolveReferences" AfterTargets="Build" Condition="'$(DotNetBuildSourceOnly)' != 'true' AND '$(SkipTestBuild)' != 'true'">
<PropertyGroup>
<LibrariesTrimmedArtifactsPath>$(TargetDir)linked\</LibrariesTrimmedArtifactsPath>
<!-- Link all assemblies -->
<ILLinkArgs>$(ILLinkArgs) --action link</ILLinkArgs>
<ILLinkArgs Condition="'$(GenerateLinkerWarningSuppressions)' == 'true'">$(ILLinkArgs) --generate-warning-suppressions xml</ILLinkArgs>
</PropertyGroup>
<ItemGroup>
<RootAssemblies Include="@(ReferencePath->HasMetadata('ProjectPath'))" RootMode="visible" />
<_ILLinkSuppressionFile Include="$([System.IO.Path]::GetDirectoryName($([System.String]::new('%(RootAssemblies.ProjectPath)'))))\%(FileName).WarningSuppressions.xml"
SuppressionFileName="%(FileName).WarningSuppressions" />
<ILLinkSuppressionFile Condition="Exists(%(_ILLinkSuppressionFile.Identity))" Include="%(_ILLinkSuppressionFile.Identity)" />
</ItemGroup>
<PropertyGroup>
<ILLinkArgs Condition="'$(GenerateLinkerWarningSuppressions)' != 'true' AND '@(ILLinkSuppressionFile->Count())' != '0'">$(ILLinkArgs) --link-attributes @(ILLinkSuppressionFile->'%(FullPath)', ' --link-attributes ')</ILLinkArgs>
</PropertyGroup>
<!--
When running from Desktop MSBuild, DOTNET_HOST_PATH is not set.
In this case, explicitly specify the path to the dotnet host.
-->
<PropertyGroup Condition=" '$(DOTNET_HOST_PATH)' == '' ">
<!-- This is defined when building in Visual Studio. -->
<_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory>
<_DotNetHostFileName>$([System.IO.Path]::GetFileName('$(DotNetTool)'))</_DotNetHostFileName>
</PropertyGroup>
<ILLink
AssemblyPaths=""
RootAssemblyNames="@(RootAssemblies)"
OutputDirectory="$(LibrariesTrimmedArtifactsPath)"
ReferenceAssemblyPaths="@(RuntimePackAsset);@(ReferencePath->WithMetadataValue('ExternallyResolved', 'true'))"
ExtraArgs="$(ILLinkArgs)"
NoWarn="$(NoWarn)"
TrimMode="link"
ToolExe="$(_DotNetHostFileName)"
ToolPath="$(_DotNetHostDirectory)" />
<ItemGroup Condition="'$(GenerateLinkerWarningSuppressions)' == 'true'">
<_UpdatedILLinkSuppressionFile Include="$(LibrariesTrimmedArtifactsPath)\*.WarningSuppressions.xml" />
<_UpdatedILLinkSuppressionFile SourcePath="%(FullPath)" />
</ItemGroup>
<JoinItems
Left="@(_ILLinkSuppressionFile)"
Right="@(_UpdatedILLinkSuppressionFile)"
LeftMetadata="*"
RightMetadata="SourcePath"
LeftKey="SuppressionFileName"
RightKey="FileName"
ItemSpecToUse="Left">
<Output TaskParameter="JoinResult" ItemName="_ILLinkFileToUpdate" />
</JoinItems>
<Copy
SourceFiles="%(_ILLinkFileToUpdate.SourcePath)"
DestinationFiles="%(_ILLinkFileToUpdate.FullPath)"
OverwriteReadOnlyFiles="true"
Condition="'$(GenerateLinkerWarningSuppressions)' == 'true'" />
</Target>
</Project>