%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/old/usr/share/dotnet/sdk/5.0.408/Sdks/Microsoft.NET.Sdk/targets/
Upload File :
Create Path :
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>

Zerion Mini Shell 1.0