Remove runtime store related build steps

This commit is contained in:
= 2018-01-08 10:52:21 -08:00
parent 9fdc3917eb
commit 83d26d660e
11 changed files with 160 additions and 804 deletions

View File

@ -1,237 +0,0 @@
<Project>
<PropertyGroup>
<_BuildScriptsDirectory>$(MSBuildThisFileDirectory)tools\scripts\</_BuildScriptsDirectory>
<_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
<_RuntimeStoreWorkDirectory>$(_WorkRoot).rw\</_RuntimeStoreWorkDirectory>
<_RuntimeStoreOutputDirectory>$(_WorkRoot).ro\</_RuntimeStoreOutputDirectory>
<_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
<_SrcDirectory>$(RepositoryRoot)src\</_SrcDirectory>
<_AllMetapackageDirectory>$(_SrcDirectory)Microsoft.AspNetCore.All\</_AllMetapackageDirectory>
<_ExistingManifestsDirectory>$(_AllMetapackageDirectory)build\</_ExistingManifestsDirectory>
<_ArtifactsZipDirectory>$(ArtifactsDir)zip\</_ArtifactsZipDirectory>
<_StoreZipDirectory>$(_ArtifactsZipDirectory)rs\</_StoreZipDirectory>
<_SymbolsZipDirectory>$(_ArtifactsZipDirectory)symbols\</_SymbolsZipDirectory>
<_DepsOutputDirectory>$(ArtifactsDir)deps\</_DepsOutputDirectory>
</PropertyGroup>
<Target Name="BuildAllMetapackage" DependsOnTargets="ResolveRepoInfo">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Move to working dir -->
<PropertyGroup>
<MetapackageWorkDirectory>$(_WorkRoot)Microsoft.AspNetCore.All\</MetapackageWorkDirectory>
</PropertyGroup>
<ItemGroup>
<AllMetapackageFiles Include="$(_AllMetapackageDirectory)**\*" />
</ItemGroup>
<Copy SourceFiles="@(AllMetapackageFiles)" DestinationFolder="$(MetapackageWorkDirectory)\%(RecursiveDir)" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<!-- Add references to project -->
<RepoTasks.AddMetapackageReferences
ReferencePackagePath="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)" />
<!-- Set _Target=Restore so the project will be re-evaluated to include Internal.AspNetCore.Sdk MSBuild properties on the next step. -->
<MSBuild Projects="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
Targets="Restore"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true;_Target=Restore" />
<!-- Pack -->
<MSBuild Projects="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
Targets="Pack"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
<!-- Copy to output directory -->
<ItemGroup>
<AllMetapackageNupkgFile Include="$(MetapackageWorkDirectory)**\*.nupkg" />
</ItemGroup>
<Copy SourceFiles="@(AllMetapackageNupkgFile)" DestinationFolder="$(BuildDir)" />
</Target>
<Target Name="BuildRSReferencesPackage" DependsOnTargets="ResolveRepoInfo;_PrepareRuntimeStoreBuildAssets">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Move to working dir -->
<PropertyGroup>
<RSReferencesWorkDirectory>$(_WorkRoot)RS.References\</RSReferencesWorkDirectory>
</PropertyGroup>
<Copy SourceFiles="$(_TemplatesDirectory)RS.References\RS.References.csproj" DestinationFolder="$(RSReferencesWorkDirectory)" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<!-- Generate RS.Reference project -->
<RepoTasks.AddRSReferences
ReferencePackagePath="$(RSReferencesWorkDirectory)RS.References.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)" />
<!-- Set _Target=Restore so the project will be re-evaluated to include Internal.AspNetCore.Sdk MSBuild properties on the next step. -->
<MSBuild Projects="$(RSReferencesWorkDirectory)RS.References.csproj"
Targets="Restore"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);_Target=Restore" />
<!-- Pack -->
<MSBuild Projects="$(RSReferencesWorkDirectory)RS.References.csproj"
Targets="Pack"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)" />
<!-- Copy to output directory -->
<ItemGroup>
<RSReferenceNupkgFile Include="$(RSReferencesWorkDirectory)**\*.nupkg" />
</ItemGroup>
<Copy SourceFiles="@(RSReferenceNupkgFile)" DestinationFolder="$(DependencyPackageDir)" />
</Target>
<Target Name="_PrepareRuntimeStoreBuildAssets">
<ItemGroup>
<_RuntimeStoreRestoreSources Include="$(DependencyPackageDir)" Condition="Exists($(DependencyPackageDir))" />
<_RuntimeStoreRestoreSources Include="$(DependencyMirrorPackageDir)" Condition="Exists($(DependencyMirrorPackageDir))" />
<_RuntimeStoreRestoreSources Include="$(BuildDir)" Condition="Exists($(BuildDir))" />
</ItemGroup>
<RepoTasks.GenerateRestoreSourcesPropsFile
Sources="@(_RuntimeStoreRestoreSources)"
OutputPath="$(GeneratedRestoreSourcesPropsPath)" />
<PropertyGroup>
<_RsManifestProps>MicrosoftAspNetCoreAllPackageVersion=$(PackageVersion)</_RsManifestProps>
<_RsManifestProps>$(_RsManifestProps);DotNetRestoreSourcesPropsPath=$(GeneratedRestoreSourcesPropsPath)</_RsManifestProps>
</PropertyGroup>
</Target>
<Target Name="_ResolveRuntimeStoreRID">
<Error Text="Please specify the platform for the runtime package store via RuntimeStoreArch: {x64|x86}." Condition="'$(RuntimeStoreArch)' == ''"/>
<PropertyGroup>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('Windows'))">win7-$(RuntimeStoreArch)</RuntimeStoreRID>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux-$(RuntimeStoreArch)</RuntimeStoreRID>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx-$(RuntimeStoreArch)</RuntimeStoreRID>
</PropertyGroup>
</Target>
<Target Name="BuildRuntimeStore" DependsOnTargets="_ResolveRuntimeStoreRID;_PrepareRuntimeStoreBuildAssets;BuildRSReferencesPackage">
<!-- Copy and update build assets -->
<Copy SourceFiles="$(_TemplatesDirectory)RS.Manifest\RS.Manifest.csproj" DestinationFiles="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<PropertyGroup>
<__ComposeStoreProps />
<_ComposeStoreProps>$(_ComposeStoreProps);$(_RsManifestProps)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);ComposeDir=$(_RuntimeStoreOutputDirectory)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);ComposeWorkingDir=$(_RuntimeStoreWorkDirectory)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);RuntimeIdentifier=$(RuntimeStoreRID)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp20PackageVersion)</_ComposeStoreProps>
</PropertyGroup>
<!-- Build runtime store -->
<MSBuild Projects="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj"
Targets="ComposeStore"
Properties="$(_ComposeStoreProps)" />
</Target>
<Target Name="BuildHostingDeps" DependsOnTargets="ResolveRepoInfo">
<!-- Generate RS.Reference project -->
<RepoTasks.ResolveHostingStartupPackages
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)">
<Output TaskParameter="HostingStartupArtifacts" ItemName="HostingStartupArtifacts" />
</RepoTasks.ResolveHostingStartupPackages>
<!--- MSBuild caches things if you run inproc so have to use Exec -->
<MSBuild Projects="$(_TemplatesDirectory)HostingStartup/HostingStartup.csproj"
Targets="Restore;Rebuild;CollectDeps"
Properties="DepsOutputPath=$(_DepsOutputDirectory);HostingStartupPackageName=%(HostingStartupArtifacts.PackageId);HostingStartupPackageVersion=%(HostingStartupArtifacts.Version);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp20PackageVersion)" />
<ItemGroup>
<DepsFiles Include="$(_DepsOutputDirectory)**\*.deps.json" />
</ItemGroup>
<RepoTasks.TrimDeps DepsFiles="@(DepsFiles)" />
</Target>
<Target Name="PackRuntimeStore" DependsOnTargets="_ResolveRuntimeStoreRID">
<PropertyGroup>
<OutputZip>$(ArtifactsDir)aspnetcore-store-$(PackageVersion)-$(RuntimeStoreRID).zip</OutputZip>
<OutputSymbolZip>$(ArtifactsDir)aspnetcore-symbols-$(PackageVersion)-$(RuntimeStoreRID).zip</OutputSymbolZip>
</PropertyGroup>
<ItemGroup>
<RuntimeStoreManifestFiles Include="$(_RuntimeStoreOutputDirectory)**\artifact.xml" />
<RuntimeStoreFiles Include="$(_RuntimeStoreOutputDirectory)**\*" Exclude="$(_RuntimeStoreOutputDirectory)**\artifact.xml;$(_RuntimeStoreOutputDirectory)symbols\**\*" />
<RuntimeStoreSymbolFiles Include="$(_RuntimeStoreOutputDirectory)symbols\**\*" />
<DepsFiles Include="$(_DepsOutputDirectory)**\*" />
<ExistingStoreManifests Include="$(_ExistingManifestsDirectory)*.xml" />
</ItemGroup>
<!-- Compose new store and symbols -->
<RepoTasks.ComposeNewStore
ExistingManifests="@(ExistingStoreManifests)"
NewManifests="@(RuntimeStoreManifestFiles)"
RuntimeStoreFiles="@(RuntimeStoreFiles)"
RuntimeStoreSymbolFiles="@(RuntimeStoreSymbolFiles)"
ManifestDestination="$(ArtifactsDir)aspnetcore-store-$(PackageVersion)-$(RuntimeStoreRID).xml"
StoreDestination="$(_StoreZipDirectory)store\"
SymbolsDestination="$(_SymbolsZipDirectory)"/>
<!-- Insert deps files -->
<Copy SourceFiles="@(DepsFiles)" DestinationFolder="$(_StoreZipDirectory)additionalDeps\%(RecursiveDir)" />
<ItemGroup>
<OutputZipFiles Include="$(_StoreZipDirectory)**\*" />
<OutputSymbolZipFiles Include="$(_SymbolsZipDirectory)**\*" />
</ItemGroup>
<!-- Create zips -->
<ZipArchive File="$(OutputZip)" SourceFiles="@(OutputZipFiles)" WorkingDirectory="$(_StoreZipDirectory)" Overwrite="true"/>
<ZipArchive File="$(OutputSymbolZip)" SourceFiles="@(OutputSymbolZipFiles)" WorkingDirectory="$(_SymbolsZipDirectory)" Overwrite="true" Condition="'@(OutputSymbolZipFiles)' != ''"/>
</Target>
<Target Name="CreateCommonManifest" DependsOnTargets="_PrepareRuntimeStoreBuildAssets">
<PropertyGroup>
<CommonManifestFileName>aspnetcore-store-$(PackageVersion)-common.xml</CommonManifestFileName>
</PropertyGroup>
<!-- Trim packages guaranteed to be in the runtime but isn't included in our runtime store -->
<ItemGroup>
<PackagesToTrim Include="runtime.win-arm64.runtime.native.system.data.sqlclient.sni" />
</ItemGroup>
<MSBuild Projects="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj"
Targets="Restore;GetPackageDefinitions"
Properties="$(_RsManifestProps)" >
<Output TaskParameter="TargetOutputs" ItemName="_PackageDefinitions" />
</MSBuild>
<RepoTasks.CreateCommonManifest DestinationFilePath="$(ArtifactsDir)$(CommonManifestFileName)" PackageDefinitions="@(_PackageDefinitions)" Packages="@(PackagesToTrim)"/>
</Target>
<Target Name="AddManifestsToMetapackage">
<ItemGroup>
<MetaPackageNupkg Include="$(DependencyPackageDir)Microsoft.AspNetCore.All.*.nupkg" />
<ManifestFiles Include="$(ArtifactsDir)*.xml"/>
</ItemGroup>
<RemoveDir Directories="$(_WorkRoot)" />
<UnzipArchive File="%(MetaPackageNupkg.FullPath)" Destination="$(_WorkRoot)" />
<!-- Create a consolidated manifest and place in metapackage -->
<RepoTasks.ConsolidateManifests
Manifests="@(ManifestFiles)"
ManifestDestination="$(_WorkRoot)\build\aspnetcore-store-$(PackageVersion).xml"/>
<ItemGroup>
<ArchiveFiles Include="$(_WorkRoot)**\*" />
</ItemGroup>
<ZipArchive File="$(ArtifactsDir)%(MetaPackageNupkg.FileName)%(MetaPackageNupkg.Extension)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="$(_WorkRoot)" Overwrite="true" />
</Target>
</Project>

View File

@ -4,7 +4,6 @@
<PackageArtifact>
<Metapackage>false</Metapackage>
<HostingStartup>false</HostingStartup>
<RuntimeStore>false</RuntimeStore>
<LZMA>false</LZMA>
<LZMATools>false</LZMATools>
</PackageArtifact>
@ -16,128 +15,128 @@
<PackageArtifact Include="dotnet-user-secrets" Category="ship" LZMATools="true" />
<PackageArtifact Include="dotnet-watch" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Category="ship" Metapackage="true" RuntimeStore="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Category="ship" Metapackage="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AspNetCoreModule" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Google" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.JwtBearer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OAuth" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Twitter" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authorization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authorization.Policy" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Category="ship" Metapackage="true" RuntimeStore="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureKeyVault.HostingStartup" Category="ship" Metapackage="true" RuntimeStore="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Google" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.JwtBearer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OAuth" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Twitter" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authorization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authorization.Policy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Category="ship" Metapackage="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureKeyVault.HostingStartup" Category="ship" Metapackage="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Buffering" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Certificates.Generation.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.CookiePolicy" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cors" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.Internal" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.CookiePolicy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cors" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.Internal" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Redis" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.SystemWeb" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.DeveloperCertificates.XPlat" Category="shipoob" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Elm" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Category="noship" Metapackage="false" RuntimeStore="false" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Identity.Service" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Category="noship" Metapackage="false" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Identity.Service" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.WebHostBuilderFactory.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.WindowsServices" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Html.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Features" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.HttpOverrides" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.HttpsPolicy" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Html.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Features" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpOverrides" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpsPolicy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpSys.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Identity.UI" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.IntegratedWebClient" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Mvc" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.UI" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.IntegratedWebClient" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Mvc" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.JsonPatch" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Localization.Routing" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.MiddlewareAnalysis" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Cors" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Localization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.JsonPatch" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization.Routing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.MiddlewareAnalysis" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Cors" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X" Category="shipoob" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.RazorPages" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.TagHelpers" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Testing" Category="ship" Metapackage="false" RuntimeStore="false" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.RazorPages" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.TagHelpers" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Testing" Category="ship" Metapackage="false" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.WebApiCompatShim" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices.Sockets" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Owin" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Protocols.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Owin" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Protocols.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Proxy" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.RangeHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Design" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Language" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Runtime" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Design" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Language" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Runtime" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.TagHelpers.Testing.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCompression" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Rewrite" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Routing" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Routing.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCompression" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Rewrite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing.DecisionTree.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing.UrlMatchingTree.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.HttpSys" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.HttpSys" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.IIS" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.IISIntegration" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.IISIntegration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.IntegrationTesting" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Https" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Session" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Https" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Session" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client.Core" Category="noship" />
@ -149,92 +148,92 @@
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Client.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Common.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices.Extensions" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.SpaTemplates" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.StaticFiles" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.StaticFiles" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.TestHost" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.WebSockets" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.WebUtilities" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.WebSockets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.WebUtilities" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor.Workspaces" Category="shipoob" />
<PackageArtifact Include="Microsoft.CodeAnalysis.Remote.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.Data.Sqlite" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.DotNet.Web.Client.ItemTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.ItemTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.ProjectTemplates.2.1" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.Spa.ProjectTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Attributes" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Design" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.InMemory" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Attributes" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Design" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.InMemory" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.Extensions.ActivatorUtilities.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.ApplicationModelDetection" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Memory" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Redis" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlServer" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Memory" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Redis" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlServer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.CommandLineUtils.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Configuration" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Binder" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.CommandLine" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Binder" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.CommandLine" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.DockerSecrets" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.FileExtensions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Ini" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Json" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.UserSecrets" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Xml" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.FileExtensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Ini" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Json" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.UserSecrets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Xml" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks" Category="noship" Metapackage="false" RuntimeStore="false" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Category="noship" Metapackage="false" RuntimeStore="false" />
<PackageArtifact Include="Microsoft.Extensions.DiagnosticAdapter" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Composite" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Embedded" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Physical" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileSystemGlobbing" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks" Category="noship" Metapackage="false" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Category="noship" Metapackage="false" />
<PackageArtifact Include="Microsoft.Extensions.DiagnosticAdapter" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Composite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Embedded" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Physical" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileSystemGlobbing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.HashCodeCombiner.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Hosting.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Http" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Stores" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Http" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Stores" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Analyzers" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.AzureAppServices" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Configuration" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Console" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Debug" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.AzureAppServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Configuration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Console" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Debug" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventLog" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventSource" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventSource" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.TraceSource" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.TraceSource" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.ObjectPool" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Options" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Options.ConfigurationExtensions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.ObjectPool" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Options" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Options.ConfigurationExtensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.ParameterDefaultValue.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Primitives" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Primitives" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Process.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.PropertyActivator.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.PropertyHelper.Sources" Category="noship" />
@ -243,14 +242,14 @@
<PackageArtifact Include="Microsoft.Extensions.StackTrace.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.TypeNameHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.ValueStopwatch.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Net.Http.Headers" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Net.Http.Headers" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Owin.Security.Interop" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Editor.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.LanguageServices.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.Mac.LanguageServices.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.BrowserLink" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.VisualStudio.Web.BrowserLink" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Contracts" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Core" Category="ship" LZMA="true" />

View File

@ -15,8 +15,6 @@
<Mirror>false</Mirror>
<!-- When true, this dependency will be included in the metapackage. -->
<Metapackage>false</Metapackage>
<!-- When true, this dependency will be included in the runtime store. -->
<RuntimeStore>false</RuntimeStore>
<!-- When true, this dependency will be used to generate a deps.json for hosting startup that will be included in the runtime store. -->
<HostingStartup>false</HostingStartup>
<!-- When true, this dependency will be included in the LZMA. -->

View File

@ -1,6 +1,5 @@
<Project>
<Import Project="RepositoryBuild.targets" />
<Import Project="RuntimeStore.targets" />
<Import Project="PackageArchive.targets" />
<Import Project="AzureIntegration.targets" />
<Import Project="Templating.targets" />

View File

@ -1,85 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AddRSReferences : Task
{
[Required]
public string ReferencePackagePath { get; set; }
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Required]
public ITaskItem[] ExternalDependencies { get; set; }
public override bool Execute()
{
// Parse input
var runtimeStoreArtifacts = PackageArtifacts.Where(p => p.GetMetadata("RuntimeStore") == "true");
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("RuntimeStore") == "true");
var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse)
.OfType<ArtifactInfo.Package>()
.Where(p => !p.IsSymbolsArtifact);
var xmlDoc = new XmlDocument();
xmlDoc.Load(ReferencePackagePath);
// Project
var projectElement = xmlDoc.FirstChild;
// Items
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
Log.LogMessage(MessageImportance.High, $"Runtime store will include the following packages");
foreach (var package in runtimeStoreArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = buildArtifacts
.Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase))
.PackageInfo.Version.ToString();
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(ReferencePackagePath);
return true;
}
}
}

View File

@ -1,131 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.IO;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ComposeNewStore : Task
{
[Required]
public ITaskItem[] ExistingManifests { get; set; }
[Required]
public ITaskItem[] NewManifests { get; set; }
[Required]
public ITaskItem[] RuntimeStoreFiles { get; set; }
[Required]
public ITaskItem[] RuntimeStoreSymbolFiles { get; set; }
[Required]
public string ManifestDestination { get; set; }
[Required]
public string StoreDestination { get; set; }
[Required]
public string SymbolsDestination { get; set; }
public override bool Execute()
{
var existingFiles = new Dictionary<string, HashSet<string>>();
var newRuntimeStoreFiles = new List<ITaskItem>();
var newRuntimeStoreSymbolFiles = new List<ITaskItem>();
// Construct database of existing assets
foreach (var manifest in ExistingManifests)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(manifest.GetMetadata("FullPath"));
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
if (existingFiles.TryGetValue(artifact.Attributes["Id"].Value, out var versions))
{
versions.Add(artifact.Attributes["Version"].Value);
}
else
{
existingFiles[artifact.Attributes["Id"].Value] = new HashSet<string>{ artifact.Attributes["Version"].Value };
}
}
}
// Insert new runtime store files
foreach (var storeFile in RuntimeStoreFiles)
{
// format: {bitness}}/{tfm}}/{id}/{version}}/...
var recursiveDir = storeFile.GetMetadata("RecursiveDir");
var components = recursiveDir.Split(Path.DirectorySeparatorChar);
var id = components[2];
var version = components[3];
if (!existingFiles.TryGetValue(id, out var versions) || !versions.Contains(version))
{
var destinationDir = Path.Combine(StoreDestination, recursiveDir);
if (!Directory.Exists(Path.Combine(StoreDestination, recursiveDir)))
{
Directory.CreateDirectory(destinationDir);
}
File.Copy(storeFile.GetMetadata("FullPath"), Path.Combine(destinationDir, $"{storeFile.GetMetadata("Filename")}{storeFile.GetMetadata("Extension")}"), overwrite: true);
}
}
// Insert new runtime store files
foreach (var symbolFile in RuntimeStoreSymbolFiles)
{
// format: {bitness}}/{tfm}}/{id}/{version}}/...
var recursiveDir = symbolFile.GetMetadata("RecursiveDir");
var components = recursiveDir.Split(Path.DirectorySeparatorChar);
var id = components[2];
var version = components[3];
if (!existingFiles.TryGetValue(id, out var versions) || !versions.Contains(version))
{
var destinationDir = Path.Combine(SymbolsDestination, recursiveDir);
if (!Directory.Exists(Path.Combine(SymbolsDestination, recursiveDir)))
{
Directory.CreateDirectory(destinationDir);
}
File.Copy(symbolFile.GetMetadata("FullPath"), Path.Combine(destinationDir, $"{symbolFile.GetMetadata("Filename")}{symbolFile.GetMetadata("Extension")}"), overwrite: true);
}
}
// Purge existing packages from manifest
foreach (var newManifest in NewManifests)
{
var newManifestPath = newManifest.GetMetadata("FullPath");
var xmlDoc = new XmlDocument();
xmlDoc.Load(newManifestPath);
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
var artifactsToRemove = new List<XmlNode>();
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
if (existingFiles.TryGetValue(artifact.Attributes["Id"].Value, out var versions) && versions.Contains(artifact.Attributes["Version"].Value))
{
artifactsToRemove.Add(artifact);
}
}
foreach (var artifactToRemove in artifactsToRemove)
{
storeArtifacts.RemoveChild(artifactToRemove);
}
xmlDoc.Save(ManifestDestination);
}
return true;
}
}
}

View File

@ -1,57 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
// Takes multiple runtime store manifests and create a consolidated manifest containing all unique entries.
public class ConsolidateManifests : Task
{
[Required]
public ITaskItem[] Manifests { get; set; }
[Required]
public string ManifestDestination { get; set; }
public override bool Execute()
{
var artifacts = new HashSet<Tuple<string, string>>();
// Construct database of all artifacts
foreach (var manifest in Manifests)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(manifest.GetMetadata("FullPath"));
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
artifacts.Add(new Tuple<string, string>(artifact.Attributes["Id"].Value, artifact.Attributes["Version"].Value));
}
}
var consolidatedXmlDoc = new XmlDocument();
var packagesElement = consolidatedXmlDoc.CreateElement("StoreArtifacts");
foreach (var artifact in artifacts)
{
var packageElement = consolidatedXmlDoc.CreateElement("Package");
packageElement.SetAttribute("Id", artifact.Item1);
packageElement.SetAttribute("Version", artifact.Item2);
packagesElement.AppendChild(packageElement);
}
consolidatedXmlDoc.AppendChild(packagesElement);
consolidatedXmlDoc.Save(ManifestDestination);
return true;
}
}
}

View File

@ -1,61 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
/// <summary>
/// Creates a common manifest file used for trimming publish output given a list of packages and package definitions containing their versions.
/// </summary>
public class CreateCommonManifest : Task
{
/// <summary>
/// The path for the common manifest file to be created.
/// </summary>
/// <returns></returns>
[Required]
public string DestinationFilePath { get; set; }
/// <summary>
/// The packages to include in the common manifest file.
/// </summary>
/// <returns></returns>
[Required]
public ITaskItem[] Packages { get; set; }
/// <summary>
/// The package definitions used for resolving package versions.
/// </summary>
/// <returns></returns>
[Required]
public ITaskItem[] PackageDefinitions { get; set; }
public override bool Execute()
{
var xmlDoc = new XmlDocument();
var packagesElement = xmlDoc.CreateElement("StoreArtifacts");
foreach (var package in Packages)
{
var packageName = package.ItemSpec;
var packageElement = xmlDoc.CreateElement("Package");
packageElement.SetAttribute("Id", packageName);
packageElement.SetAttribute("Version", PackageDefinitions
.Where(p => string.Equals(p.GetMetadata("Name"), packageName, StringComparison.OrdinalIgnoreCase))
.Select(p => p.GetMetadata("Version")).Single());
packagesElement.AppendChild(packageElement);
}
xmlDoc.AppendChild(packagesElement);
xmlDoc.Save(DestinationFilePath);
return true;
}
}
}

View File

@ -1,33 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ReplaceInFile : Task
{
[Required]
public string Filename { get; set; }
[Required]
public ITaskItem[] Items { get; set; }
public override bool Execute()
{
var fileText = File.ReadAllText(Filename);
foreach (var item in Items)
{
fileText = fileText.Replace(item.ItemSpec, item.GetMetadata("Replacement"));
}
File.WriteAllText(Filename, fileText);
return true;
}
}
}

View File

@ -9,12 +9,6 @@
<UsingTask TaskName="RepoTasks.VerifyCoherentVersions" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddMetapackageReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddArchiveReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddRSReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ResolveHostingStartupPackages" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.TrimDeps" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CreateCommonManifest" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ComposeNewStore" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ConsolidateManifests" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ReplaceInFile" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
</Project>

View File

@ -1,30 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ResolveHostingStartupPackages : Task
{
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Output]
public ITaskItem[] HostingStartupArtifacts { get; set; }
public override bool Execute()
{
// Parse input
var hostingStartupArtifacts = PackageArtifacts.Where(p => p.GetMetadata("HostingStartup") == "true");
HostingStartupArtifacts = BuildArtifacts.Where(p => hostingStartupArtifacts.Any(h => h.GetMetadata("Identity") == p.GetMetadata("PackageId"))).ToArray();
return true;
}
}
}