Skip to content
代码片段 群组 项目
SiteExtension.targets 5.75 KiB
<!--
  This file is automatically imported by NuGet into a user's project
  when it targets a single framework, or in classic (pre 2017) csproj projects.
-->

<Project>

  <Target Name="GenerateHostingStartupDeps" BeforeTargets="_GetPackageFiles" >

    <PropertyGroup>
      <_TemplatesDirectory>$(MSBuildThisFileDirectory)..\content\</_TemplatesDirectory>
      <_DepsOutputDirectory>$(IntermediateOutputPath)\se\</_DepsOutputDirectory>
      <_WorkingDirectory>$(_DepsOutputDirectory)\depswork</_WorkingDirectory>
      <_BasePackagePath>content\additionaldeps\</_BasePackagePath>
      <_RuntimeStoreManifestFile>$(_DepsOutputDirectory)\rs.csproj</_RuntimeStoreManifestFile>
      <_RuntimeStoreOutput>$(_DepsOutputDirectory)\rs\</_RuntimeStoreOutput>
      <_RsRestoreSources>
        $(RestoreAdditionalProjectSources);
        $(ArtifactsShippingPackagesDir);
        $(ArtifactsNonShippingPackagesDir)
      </_RsRestoreSources>

      <ManifestFileContents>
      <![CDATA[
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="%(HostingStartupPackageReference.Identity)" Version="%(HostingStartupPackageReference.Version)" />
  </ItemGroup>
</Project>
      ]]>
      </ManifestFileContents>
    </PropertyGroup>

    <ItemGroup Condition="'@(HostingStartupRuntimeStoreTargets->Count())' == '0'">
      <HostingStartupRuntimeStoreTargets Include="$(DefaultNetCoreTargetFramework)" Runtime="win-x64" />
      <HostingStartupRuntimeStoreTargets Include="$(DefaultNetCoreTargetFramework)" Runtime="win-x86" />
    </ItemGroup>

    <ItemGroup>
      <_TemplateFiles Include="$(MSBuildThisFileDirectory)\HostingStartup\*.cs*" />
      <!--
        Always use Major.Minor.0 so that if we have to produce a new SiteExtension during a patch build it will still work for non-patch runtimes.
        i.e. 3.0.0 dotnet will search for 3.0.0 and below and wouldn't find a 3.0.1 folder path
        Side effect, also removes the -ci or -servicing label.
      -->
      <_HostingStartupPackageReference
        Include="%(HostingStartupPackageReference.Identity)"
        Source="%(HostingStartupPackageReference.Source)"
        Version="%(HostingStartupPackageReference.Version)"
        WorkingDirectory="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)"
        Project="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\HostingStartup.csproj"
        DepsFile="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\p\HostingStartup.deps.json"
        TrimmedDepsFile="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\%(HostingStartupPackageReference.Identity).deps.json"
        PackagePath="$(_BasePackagePath)\shared\Microsoft.AspNetCore.App\$(AspNetCoreMajorMinorVersion).0\"
         />
    </ItemGroup>
    <MakeDir Directories="$(_DepsOutputDirectory)" />

    <!-- Generate runtime store -->
    <WriteLinesToFile File="$(_RuntimeStoreManifestFile)" Lines="$(ManifestFileContents)" Overwrite="true" Encoding="Unicode"/>

    <MSBuild Projects="$(_RuntimeStoreManifestFile)"
             Targets="ComposeStore"
             Properties="
              TargetFramework=%(HostingStartupRuntimeStoreTargets.Identity);
              RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion);
              RuntimeIdentifier=%(HostingStartupRuntimeStoreTargets.Runtime);
              ComposeDir=$(_RuntimeStoreOutput)\%(HostingStartupRuntimeStoreTargets.Runtime);
              SkipOptimization=true;
              DisablePackageReferenceRestrictions=true;
              RestoreAdditionalProjectSources=$(_RsRestoreSources)" />
    <!-- Generate deps -->
    <RemoveDir Directories="%(_HostingStartupPackageReference.WorkingDirectory)" />

    <Copy SourceFiles="@(_TemplateFiles)" DestinationFolder="%(_HostingStartupPackageReference.WorkingDirectory)" />

    <MSBuild Projects="%(_HostingStartupPackageReference.Project)"
             Targets="Restore"
             Properties="
              __DummyTarget=Restore;
              HostingStartupPackageName=%(_HostingStartupPackageReference.Identity);
              HostingStartupPackageVersion=%(_HostingStartupPackageReference.Version);
              RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion);
              MicrosoftAspNetCoreAppPackageVersion=$(MicrosoftAspNetCoreAppPackageVersion);
              UseAppHost=false;
              NoBuild=false;
              RestoreAdditionalProjectSources=$(_RsRestoreSources)" />

    <MSBuild Projects="%(_HostingStartupPackageReference.Project)"
             Targets="Publish"
             Properties="
              PublishDir=%(_HostingStartupPackageReference.WorkingDirectory)\p;
              HostingStartupPackageName=%(_HostingStartupPackageReference.Identity);
              HostingStartupPackageVersion=%(_HostingStartupPackageReference.Version);
              RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion);
              MicrosoftAspNetCoreAppPackageVersion=$(MicrosoftAspNetCoreAppPackageVersion);
              UseAppHost=false;
              NoBuild=false;
              IncludeMainProjectInDepsFile=false" />
    <Copy SourceFiles="%(_HostingStartupPackageReference.DepsFile)" DestinationFiles="%(_HostingStartupPackageReference.TrimmedDepsFile)" />

    <ItemGroup>
      <_RuntimeStoreFiles Include="$(_RuntimeStoreOutput)\%(HostingStartupRuntimeStoreTargets.Runtime)\**\*.dll" />

      <Content Include="%(_RuntimeStoreFiles.Identity)" PackagePath="content\store\%(RecursiveDir)" />
      <Content Include="%(_HostingStartupPackageReference.TrimmedDepsFile)" PackagePath="%(_HostingStartupPackageReference.PackagePath)" />
    </ItemGroup>

  </Target>

</Project>