%PDF- %PDF-
Direktori : /data/old/usr/share/dotnet/sdk/5.0.408/Sdks/Microsoft.NET.Sdk/targets/ |
Current File : //data/old/usr/share/dotnet/sdk/5.0.408/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets |
<!-- *********************************************************************************************** Microsoft.NET.ILLink.targets WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have created a backup copy. Incorrect changes to this file will make it impossible to load or build your projects from the command-line or the IDE. Copyright (c) .NET Foundation. All rights reserved. *********************************************************************************************** --> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="Sdk.props" Sdk="Microsoft.NET.ILLink.Tasks" /> <!-- These properties should be set even if PublishTrimmed != true, to allow SDK components to set PublishTrimmed in targets which are imported after these targets. --> <PropertyGroup> <IntermediateLinkDir Condition=" '$(IntermediateLinkDir)' == '' ">$(IntermediateOutputPath)linked\</IntermediateLinkDir> <IntermediateLinkDir Condition=" !HasTrailingSlash('$(IntermediateLinkDir)') ">$(IntermediateLinkDir)\</IntermediateLinkDir> <!-- Used to enable incremental build for the linker target. --> <_LinkSemaphore>$(IntermediateOutputPath)Link.semaphore</_LinkSemaphore> </PropertyGroup> <!-- ============================================================ ILLink Replace the files to be published with versions that have been passed through the linker. Also prevent removed files from being included in the generated deps.json. ============================================================ --> <Target Name="ILLink" Condition=" '$(PublishTrimmed)' == 'true' And '$(_TargetFrameworkVersionWithoutV)' >= '3.0' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' " DependsOnTargets="_RunILLink"> <NETSdkInformation ResourceName="ILLink_Info" /> <NETSdkError Condition="'$(_ILLinkExitCode)' != '' And '$(_ILLinkExitCode)' != '0'" ResourceName="ILLinkFailed" /> <ItemGroup> <_LinkedResolvedFileToPublish Include="@(_LinkedResolvedFileToPublishCandidate)" Condition="Exists('%(Identity)')" /> <ResolvedFileToPublish Remove="@(ManagedAssemblyToLink)" /> <ResolvedFileToPublish Remove="@(_PDBToLink)" /> <ResolvedFileToPublish Include="@(_LinkedResolvedFileToPublish)" /> </ItemGroup> <!-- Remove assemblies from inputs to GenerateDepsFile. See https://github.com/dotnet/sdk/pull/3086 --> <ItemGroup> <_RemovedManagedAssembly Include="@(ManagedAssemblyToLink)" Condition="!Exists('$(IntermediateLinkDir)%(Filename)%(Extension)')" /> <ResolvedCompileFileDefinitions Remove="@(_RemovedManagedAssembly)" /> <RuntimeCopyLocalItems Remove="@(_RemovedManagedAssembly)" /> <RuntimeTargetsCopyLocalItems Remove="@(_RemovedManagedAssembly)" /> <UserRuntimeAssembly Remove="@(_RemovedManagedAssembly)" /> <RuntimePackAsset Remove="@(_RemovedManagedAssembly)" /> </ItemGroup> </Target> <!-- ============================================================ _RunILLink Execute the linker. This target runs incrementally, only executing if the output semaphore file is out of date with respect to the inputs. ============================================================ --> <UsingTask TaskName="ILLink" AssemblyFile="$(ILLinkTasksAssembly)" /> <Target Name="_RunILLink" DependsOnTargets="_ComputeManagedAssemblyToLink;PrepareForILLink" Inputs="$(MSBuildAllProjects);@(ManagedAssemblyToLink);@(TrimmerRootDescriptor);@(ReferencePath)" Outputs="$(_LinkSemaphore)"> <!-- 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)' == '' "> <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory> <_DotNetHostFileName>dotnet</_DotNetHostFileName> <_DotNetHostFileName Condition="$([MSBuild]::IsOSPlatform(`Windows`))">dotnet.exe</_DotNetHostFileName> </PropertyGroup> <Delete Files="@(_LinkedResolvedFileToPublishCandidate)" /> <ILLink AssemblyPaths="@(ManagedAssemblyToLink)" ReferenceAssemblyPaths="@(ReferencePath)" RootAssemblyNames="@(TrimmerRootAssembly)" TrimMode="$(TrimMode)" RemoveSymbols="$(TrimmerRemoveSymbols)" FeatureSettings="@(_TrimmerFeatureSettings)" CustomData="@(_TrimmerCustomData)" BeforeFieldInit="$(_TrimmerBeforeFieldInit)" OverrideRemoval="$(_TrimmerOverrideRemoval)" UnreachableBodies="$(_TrimmerUnreachableBodies)" UnusedInterfaces="$(_TrimmerUnusedInterfaces)" IPConstProp="$(_TrimmerIPConstProp)" Sealer="$(_TrimmerSealer)" Warn="$(ILLinkWarningLevel)" NoWarn="$(NoWarn)" TreatWarningsAsErrors="$(ILLinkTreatWarningsAsErrors)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" CustomSteps="@(_TrimmerCustomSteps)" RootDescriptorFiles="@(TrimmerRootDescriptor)" OutputDirectory="$(IntermediateLinkDir)" DumpDependencies="$(_TrimmerDumpDependencies)" ExtraArgs="$(_ExtraTrimmerArgs)" ToolExe="$(_DotNetHostFileName)" ToolPath="$(_DotNetHostDirectory)" ContinueOnError="ErrorAndContinue"> <Output TaskParameter="ExitCode" PropertyName="_ILLinkExitCode" /> </ILLink> <Touch Files="$(_LinkSemaphore)" AlwaysCreate="true" Condition=" '$(_ILLinkExitCode)' == '0' " /> </Target> <!-- ============================================================ PrepareForILLink Set up the default options and inputs to ILLink. Other targets are expected to hook into this extension point via BeforeTargets/AfterTargets to opt assemblies into or out of trimming using global ILLink options, or per-assembly IsTrimmable and TrimMode metadata. Note that adding items to or removing items from ManagedAssemblyToLink is unsupported. To change the set of inputs to the linker, instead use a different extension point to set PostprocessAssembly metadata on ResolvedFileToPublish. --> <Target Name="PrepareForILLink" DependsOnTargets="_ComputeManagedAssemblyToLink"> <!-- The defaults currently root non-framework assemblies, which is a no-op for portable apps. If we later support more ways to customize the behavior we can allow linking portable apps in some cases. --> <NETSdkError Condition="'$(SelfContained)' != 'true'" ResourceName="ILLinkNotSupportedError" /> <PropertyGroup> <ILLinkWarningLevel Condition=" '$(ILLinkWarningLevel)' == '' And '$(EffectiveAnalysisLevel)' != '' And $([MSBuild]::VersionGreaterThanOrEquals($(EffectiveAnalysisLevel), '5.0')) ">5</ILLinkWarningLevel> <ILLinkWarningLevel Condition=" '$(ILLinkWarningLevel)' == '' ">0</ILLinkWarningLevel> <ILLinkTreatWarningsAsErrors Condition=" '$(ILLinkTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</ILLinkTreatWarningsAsErrors> <SuppressTrimAnalysisWarnings Condition=" '$(SuppressTrimAnalysisWarnings)' == '' ">true</SuppressTrimAnalysisWarnings> <_ExtraTrimmerArgs>--skip-unresolved true $(_ExtraTrimmerArgs)</_ExtraTrimmerArgs> <TrimMode Condition=" '$(TrimMode)' == '' ">copyused</TrimMode> </PropertyGroup> <PropertyGroup Condition=" '$(SuppressTrimAnalysisWarnings)' == 'true' "> <!-- RequiresUnreferenceCodeAttribute method called --> <NoWarn>$(NoWarn);IL2026</NoWarn> <!-- Invalid use of DynamicallyAccessedMembersAttribute --> <NoWarn>$(NoWarn);IL2041;IL2042;IL2043;IL2056</NoWarn> <!-- Reference to removed attribute type --> <NoWarn>$(NoWarn);IL2045</NoWarn> <!-- RequiresUnreferencedCodeAttribute mismatch on virtual override --> <NoWarn>$(NoWarn);IL2046</NoWarn> <!-- COM marshalling warning --> <NoWarn>$(NoWarn);IL2050</NoWarn> <!-- Reflection intrinsics with unknown arguments --> <NoWarn>$(NoWarn);IL2032;IL2055;IL2057;IL2058;IL2059;IL2060;IL2061;IL2096</NoWarn> <!-- Unknown values passed to locations with DynamicallyAccessedMemberTypes --> <NoWarn>$(NoWarn);IL2062;IL2063;IL2064;IL2065;IL2066</NoWarn> <!-- Unsatisfied DynamicallyAccessedMembers requirements --> <NoWarn>$(NoWarn);IL2067;IL2068;IL2069;IL2070;IL2071;IL2072;IL2073;IL2074;IL2075;IL2076;IL2077;IL2078;IL2079;IL2080;IL2081;IL2082;IL2083;IL2084;IL2085;IL2086;IL2087;IL2088;IL2089;IL2090;IL2091</NoWarn> <!-- DynamicallyAccessedMembersAttribute mismatch on virtual override --> <NoWarn>$(NoWarn);IL2092;IL2093;IL2094;IL2095</NoWarn> <!-- DynamicallyAccessedMembersAttribute used on unsupported member --> <NoWarn>$(NoWarn);IL2097;IL2098;IL2099</NoWarn> <!-- Warnings from the framework. Can be removed once https://github.com/dotnet/runtime/issues/40336 is fixed. --> <!-- Framework embedded XML descriptors reference windows-only members. --> <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2008</NoWarn> <!-- Unresolved type referenced in XML. --> <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2009</NoWarn> <!-- Unresolved member on type referenced in XML. --> <!-- Framework has DynamicDependencyAttributes that reference windows-only members. --> <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2037</NoWarn> <!-- Unresolved member for DynamicDependencyAttribute --> <!-- Framework embedded XML descriptors reference 32-bit-only members. --> <NoWarn Condition=" '$(PlatformTarget)' != 'x64' AND '$(PlatformTarget)' != 'arm64'">$(NoWarn);IL2009;IL2012</NoWarn> <!-- Unresolved field referenced in XML --> </PropertyGroup> <!-- Set a default value for TrimmerRemoveSymbols unless set explicitly. --> <PropertyGroup Condition=" '$(TrimmerRemoveSymbols)' == '' "> <!-- The default is to remove symbols when debugger support is disabled, and keep them otherwise. --> <TrimmerRemoveSymbols Condition=" '$(DebuggerSupport)' == 'false' ">true</TrimmerRemoveSymbols> <TrimmerRemoveSymbols Condition=" '$(DebuggerSupport)' != 'false' ">false</TrimmerRemoveSymbols> </PropertyGroup> <ItemGroup> <!-- Treat any assemblies that already have customized TrimMode as trimmable. --> <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.TrimMode)' != '' "> <IsTrimmable>true</IsTrimmable> </ManagedAssemblyToLink> <!-- Root and copy non-trimmable assemblies. --> <TrimmerRootAssembly Include="@(ManagedAssemblyToLink)" Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' != 'true' " /> <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' != 'true' "> <TrimMode>copy</TrimMode> </ManagedAssemblyToLink> </ItemGroup> <ItemGroup> <_TrimmerFeatureSettings Include="@(RuntimeHostConfigurationOption)" Condition="'%(RuntimeHostConfigurationOption.Trim)' == 'true'" /> </ItemGroup> </Target> <!-- ============================================================ _ComputeManagedAssemblyToLink Compute the set of inputs to the linker. ============================================================ --> <UsingTask TaskName="ComputeManagedAssemblies" AssemblyFile="$(ILLinkTasksAssembly)" /> <Target Name="_ComputeManagedAssemblyToLink" DependsOnTargets="_ComputeAssembliesToPostprocessOnPublish"> <!-- NB: There should not be non-managed assemblies in this list, but we still give the linker a chance to further refine this list. It currently drops C++/CLI assemblies in ComputeManageAssemblies. --> <ComputeManagedAssemblies Assemblies="@(ResolvedFileToPublish->WithMetadataValue('PostprocessAssembly', 'true'))"> <Output TaskParameter="ManagedAssemblies" ItemName="ManagedAssemblyToLink" /> </ComputeManagedAssemblies> <ItemGroup> <!-- The linker implicitly picks up PDBs next to input assemblies. We will filter these out of the publish set. --> <__PDBToLink Include="@(ResolvedFileToPublish)" Exclude="@(ManagedAssemblyToLink->'%(RelativeDir)%(Filename).pdb')" /> <_PDBToLink Include="@(ResolvedFileToPublish)" Exclude="@(__PDBToLink)" /> </ItemGroup> <ItemGroup> <_LinkedResolvedFileToPublishCandidate Include="@(ManagedAssemblyToLink->'$(IntermediateLinkDir)%(Filename)%(Extension)')" /> <_LinkedResolvedFileToPublishCandidate Include="@(_PDBToLink->'$(IntermediateLinkDir)%(Filename)%(Extension)')" /> </ItemGroup> </Target> </Project>