Merge branch 'release/2.2'

This commit is contained in:
Nate McMaster 2018-07-10 16:22:44 -07:00
commit 1aa529ddf6
No known key found for this signature in database
GPG Key ID: A778D9601BD78810
38 changed files with 13262 additions and 10571 deletions

2
.gitignore vendored
View File

@ -25,3 +25,5 @@ global.json
msbuild.ProjectImports.zip
.env
scripts/tmp/
.dotnet/
.tools/

View File

@ -3,4 +3,8 @@
<Import Project="build\common.props" />
<Import Project="build\external-dependencies.props" />
<Import Project="build\sources.props" />
<PropertyGroup>
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
</PropertyGroup>
</Project>

View File

@ -1,125 +1,32 @@
<Project>
<PropertyGroup>
<_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
<_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
<PreviousArchivePropsFile>$(MSBuildThisFileDirectory)PreviousArchiveManifest.props</PreviousArchivePropsFile>
<MetapackageRestoreSource>$(RepositoryRoot).deps\Signed\Packages\</MetapackageRestoreSource>
<LzmaOutputPackageName>nuGetPackagesArchive-$(PackageVersion)</LzmaOutputPackageName>
<FallbackStagingDir>$(_WorkRoot)obj\$(LzmaOutputPackageName)\</FallbackStagingDir>
<FallbackOutputDir>$(ArtifactsDir)lzma\</FallbackOutputDir>
<FallbackOutputPath>$(FallbackOutputDir)$(LzmaOutputPackageName).lzma</FallbackOutputPath>
<FallbackAntaresZipOutputPath>$(FallbackOutputDir)$(LzmaOutputPackageName)-antares.zip</FallbackAntaresZipOutputPath>
<GeneratedFallbackRestoreSourcesPropsPath>$(_WorkRoot)restoresources.$(LzmaOutputPackageName).props</GeneratedFallbackRestoreSourcesPropsPath>
</PropertyGroup>
<Import Project="$(PreviousArchivePropsFile)" Condition="Exists($(PreviousArchivePropsFile))" />
<Target Name="BuildFallbackArchive" DependsOnTargets="ResolveRepoInfo">
<!-- Clear the directories -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Copy the archive template -->
<Copy SourceFiles="$(_TemplatesDirectory)Archive\Archive.csproj" DestinationFiles="$(_WorkRoot)Archive.csproj" />
<!-- Copy the archive template -->
<RepoTasks.AddArchiveReferences
ReferencePackagePath="$(_WorkRoot)Archive.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)"
MetapackageVersion="$(PackageVersion)" />
<Target Name="BuildFallbackArchive" DependsOnTargets="ResolveRepoInfo;GeneratePropsFiles">
<ItemGroup>
<_FallbackArchiveRestoreSources Include="$(RestoreSources)" />
<_FallbackArchiveRestoreSources Include="$(BuildDir)" Condition="Exists($(BuildDir))" />
<_FallbackArchiveRestoreSources Include="$(MetapackageRestoreSource)" Condition="Exists($(MetapackageRestoreSource))" />
<ArchiveProjects Include="$(RepositoryRoot)src\PackageArchive\Archive.*\*.*proj" />
</ItemGroup>
<RepoTasks.GenerateRestoreSourcesPropsFile
Sources="@(_FallbackArchiveRestoreSources)"
OutputPath="$(GeneratedFallbackRestoreSourcesPropsPath)" />
<PropertyGroup>
<ArchiveBuildProps>
DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
OutputPath=$(ArtifactsDir)lzma\;
_BuildToolsAssembly=$(_BuildToolsAssembly)
</ArchiveBuildProps>
</PropertyGroup>
<!-- Create the Staging Dir -->
<MakeDir Directories="$(FallbackStagingDir);$(FallbackOutputDir)" />
<Error Text="Could not find any package archive projects to build"
Condition=" @(ArchiveProjects->Count()) == 0 " />
<!-- Restore the target project -->
<MSBuild
Projects="$(_WorkRoot)Archive.csproj"
<MSBuild Projects="@(ArchiveProjects)"
Targets="Restore"
Properties="RestorePackagesPath=$(FallbackStagingDir);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp30PackageVersion);DotNetRestoreSourcePropsPath=$(GeneratedFallbackRestoreSourcesPropsPath);DotNetBuildOffline=true;AspNetUniverseBuildOffline=true" />
BuildInParallel="false"
StopOnFirstFailure="true"
Properties="$(ArchiveBuildProps);_Dummy=restore" />
<!-- Create the archive -->
<RepoTasks.CreateLzma OutputPath="$(FallbackOutputPath)" Sources="$(FallbackStagingDir)" />
</Target>
<Target Name="UpdatePreviousArchiveManifest">
<Error Text="Please only specify one of PreviousLzmaUrl or PreviousLzmaFile but not both" Condition="'$(PreviousLzmaUrl)' != '' AND '$(PreviousLzmaFile)' != ''" />
<PropertyGroup>
<PreviousLzmaLayout>$(_WorkRoot)previous\</PreviousLzmaLayout>
<PreviousLzmaFile Condition="'$(PreviousLzmaFile)' == ''">$(RepositoryRoot).deps\nuGetPackagesArchive.previous.lzma</PreviousLzmaFile>
</PropertyGroup>
<!-- Clear the directories -->
<RemoveDir Directories="$(PreviousLzmaLayout)" />
<!-- Download and extract the previous LZMA if specified -->
<KoreBuild.Tasks.DownloadFile
Uri="$(PreviousLzmaUrl)"
DestinationPath="$(PreviousLzmaFile)"
Condition="'$(PreviousLzmaUrl)' != ''" />
<RepoTasks.ExtractLzma
InputArchive="$(PreviousLzmaFile)"
OutputPath="$(PreviousLzmaLayout)"
Condition="Exists($(PreviousLzmaFile))" />
<ItemGroup>
<PreviousLzmaContents Remove="@(PreviousLzmaContents)" />
<PreviousLzmaContents Include="$(PreviousLzmaLayout)**\*.*" />
</ItemGroup>
<!-- Create the archive -->
<RepoTasks.UpdatePreviousArchiveManifest OutputPath="$(PreviousArchivePropsFile)" Contents="@(PreviousLzmaContents)" />
</Target>
<Target Name="BuildAntaresFallbackZip">
<Error Text="Please only specify one of InputLzmaUrl or InputLzmaFile but not both" Condition="'$(InputLzmaUrl)' != '' AND '$(InputLzmaFile)' != ''" />
<PropertyGroup>
<InputLzmaLayout>$(_WorkRoot)input\</InputLzmaLayout>
<InputLzmaFile Condition="'$(InputLzmaFile)' == ''">$(RepositoryRoot).deps\nuGetPackagesArchive.input.lzma</InputLzmaFile>
</PropertyGroup>
<!-- Clear the directories -->
<RemoveDir Directories="$(InputLzmaLayout)" />
<!-- Download and extract the input LZMA if specified -->
<KoreBuild.Tasks.DownloadFile
Uri="$(InputLzmaUrl)"
DestinationPath="$(InputLzmaFile)"
Condition="'$(InputLzmaUrl)' != ''" />
<RepoTasks.ExtractLzma
InputArchive="$(InputLzmaFile)"
OutputPath="$(InputLzmaLayout)"
Condition="Exists($(InputLzmaFile))" />
<ItemGroup>
<InputLzmaContents Include="$(InputLzmaLayout)**\*.*" Exclude="$(InputLzmaLayout)**\*.nupkg" />
</ItemGroup>
<Error Text="No lzma content found. Please specify a lzma via InputLzmaUrl or InputLzmaFile or run the BuildFallbackArchive target." Condition="'@(InputLzmaContents)' == ''" />
<!-- Filter lzma content to remove existing content and .xml files -->
<RepoTasks.FilterLzmaContent PreviousLzmaContent="@(PreviousLzmaContents)" InputLzmaContent="@(InputLzmaContents)">
<Output TaskParameter="FilteredLzmaContent" ItemName="AntaresLzmaContents" />
</RepoTasks.FilterLzmaContent>
<!-- Create antares zip -->
<ZipArchive
File="$(FallbackAntaresZipOutputPath)"
SourceFiles="@(AntaresLzmaContents)"
WorkingDirectory="$(InputLzmaLayout)"
Overwrite="true"
Condition="'@(AntaresLzmaContents)' != ''"/>
<MSBuild Projects="@(ArchiveProjects)"
Targets="Build"
BuildInParallel="false"
StopOnFirstFailure="true"
Properties="$(ArchiveBuildProps)" />
</Target>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,6 @@
<BlobBasePath>aspnetcore/Runtime/$(PackageVersion)/</BlobBasePath>
<NpmBlobBasePath>aspnetcore/npm/</NpmBlobBasePath>
<AliasBlobBasePath>aspnetcore/Runtime/$(SharedFxCliBlobChannel)/</AliasBlobBasePath>
<PackageArchiveFileName>nuGetPackagesArchive-$(PackageVersion).lzma</PackageArchiveFileName>
<SiteExtensionArchiveFileName>runtime-site-extension-internal-$(PackageVersion).zip</SiteExtensionArchiveFileName>
<InstallerBaseFileName>aspnetcore-runtime-$(PackageVersion)</InstallerBaseFileName>
<InstallerAliasBaseFileName>aspnetcore-runtime-latest</InstallerAliasBaseFileName>
@ -76,14 +75,30 @@
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>
<!-- Package archives -->
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).zip" >
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).zip</RelativeBlobPath>
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip" >
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip</RelativeBlobPath>
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip" >
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip</RelativeBlobPath>
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>
<!-- Intermediate files passed on to the dotnet-CLI. -->
<FilesToPublish Include="$(DependencyAssetsDir)$(SiteExtensionArchiveFileName)" Condition="@(Repository->AnyHaveMetadataValue('Identity', 'AzureIntegration'))">
<RelativeBlobPath>$(BlobBasePath)$(SiteExtensionArchiveFileName)</RelativeBlobPath>
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>
<FilesToPublish Include="$(DependencyAssetsDir)$(PackageArchiveFileName)" >
<RelativeBlobPath>$(BlobBasePath)$(PackageArchiveFileName)</RelativeBlobPath>
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-$(PackageVersion).lzma" >
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-$(PackageVersion).lzma</RelativeBlobPath>
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
</FilesToPublish>

View File

@ -8,8 +8,6 @@
<AllMetapackage>false</AllMetapackage>
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.Analyzers metapackage. -->
<Analyzer>false</Analyzer>
<!-- When true, this dependency will be included in the LZMA. -->
<LZMA>false</LZMA>
<!--
Other known package types:
Dependency = for packages that are installed via PackageReference
@ -29,8 +27,8 @@
<PackageArtifact Include="Internal.AspNetCore.Analyzers" Category="noship" />
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.App" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.App" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Analyzers" Category="shipoob" />
<PackageArtifact Include="Microsoft.AspNetCore.Analyzer.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
@ -39,8 +37,8 @@
<PackageArtifact Include="Microsoft.AspNetCore.AspNetCoreModuleV2" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
@ -298,14 +296,14 @@
<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" AllMetapackage="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" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Templating" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Contracts" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Core" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Templating" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Category="ship" />
<PackageArtifact Include="Microsoft.Web.Xdt.Extensions" Category="shipoob" />
<PackageArtifact Include="RazorPageGenerator" Category="noship" />

View File

@ -7,7 +7,6 @@
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview1-26710-03</MicrosoftNETCoreAppPackageVersion>
<MicrosoftNETCoreDotNetAppHostPackageVersion>3.0.0-preview1-26710-03</MicrosoftNETCoreDotNetAppHostPackageVersion>
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview1-26708-04</MicrosoftWin32RegistryPackageVersion>
<NuGetFrameworksPackageVersion>4.8.0-preview1.5116</NuGetFrameworksPackageVersion>
<SystemBuffersPackageVersion>4.6.0-preview1-26708-04</SystemBuffersPackageVersion>
<SystemCollectionsImmutablePackageVersion>1.6.0-preview1-26708-04</SystemCollectionsImmutablePackageVersion>
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview1-26708-04</SystemComponentModelAnnotationsPackageVersion>
@ -92,10 +91,10 @@
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.2.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
<MicrosoftIdentityModelProtocolsWsFederationPackageVersion>5.2.0</MicrosoftIdentityModelProtocolsWsFederationPackageVersion>
<MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>2.1.1</MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>
<MicrosoftNETCoreApp10PackageVersion>1.0.5</MicrosoftNETCoreApp10PackageVersion>
<MicrosoftNETCoreApp11PackageVersion>1.1.2</MicrosoftNETCoreApp11PackageVersion>
<MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
<MicrosoftNETCoreApp21PackageVersion>2.1.0</MicrosoftNETCoreApp21PackageVersion>
<MicrosoftNETCoreApp10PackageVersion>1.0.12</MicrosoftNETCoreApp10PackageVersion>
<MicrosoftNETCoreApp11PackageVersion>1.1.9</MicrosoftNETCoreApp11PackageVersion>
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
<MicrosoftNETCoreApp21PackageVersion>2.1.2</MicrosoftNETCoreApp21PackageVersion>
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview1-26618-02</MicrosoftNETCoreApp22PackageVersion>
<MicrosoftNETCoreDotNetAppHost21PackageVersion>$(MicrosoftNETCoreApp21PackageVersion)</MicrosoftNETCoreDotNetAppHost21PackageVersion>
<MicrosoftNETCoreDotNetAppHost22PackageVersion>$(MicrosoftNETCoreApp22PackageVersion)</MicrosoftNETCoreDotNetAppHost22PackageVersion>
@ -128,6 +127,7 @@
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
<NewtonsoftJsonBsonPackageVersion>1.0.1</NewtonsoftJsonBsonPackageVersion>
<NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
<NuGetFrameworksPackageVersion>4.7.0</NuGetFrameworksPackageVersion>
<OracleManagedDataAccessPackageVersion>12.2.1100</OracleManagedDataAccessPackageVersion>
<PollyExtensionsHttpPackageVersion>2.0.1</PollyExtensionsHttpPackageVersion>
<PollyPackageVersion>6.0.1</PollyPackageVersion>
@ -160,7 +160,7 @@
<VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion>
<WindowsAzureStoragePackageVersion>8.1.4</WindowsAzureStoragePackageVersion>
<XunitAbstractionsPackageVersion>2.0.1</XunitAbstractionsPackageVersion>
<XunitAnalyzersPackageVersion>0.8.0</XunitAnalyzersPackageVersion>
<XunitAnalyzersPackageVersion>0.9.0</XunitAnalyzersPackageVersion>
<XunitAssertPackageVersion>2.3.1</XunitAssertPackageVersion>
<XunitCorePackageVersion>2.3.1</XunitCorePackageVersion>
<XunitExtensibilityCorePackageVersion>2.3.1</XunitExtensibilityCorePackageVersion>

View File

@ -13,6 +13,7 @@
<SubmoduleRoot>$(RepositoryRoot)modules\</SubmoduleRoot>
<DependencyPackageDir>$(RepositoryRoot).deps\build\</DependencyPackageDir>
<SignedDependencyPackageDir>$(RepositoryRoot).deps\Signed\Packages\</SignedDependencyPackageDir>
</PropertyGroup>
<ItemGroup>

View File

@ -104,6 +104,7 @@
<_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
<_RestoreSources Include="$(DependencyPackageDir)" Condition="'$(DependencyPackageDir)' != '' AND Exists('$(DependencyPackageDir)')" />
<_RestoreSources Include="$(SignedDependencyPackageDir)" Condition="'$(SignedDependencyPackageDir)' != '' AND Exists('$(SignedDependencyPackageDir)')" />
<_RestoreSources Include="$(BuildDir)" />
<_RestoreSources Include="$(RestoreSources)" />
</ItemGroup>

View File

@ -1,151 +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 NuGet.Versioning;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AddArchiveReferences : Task
{
[Required]
public string ReferencePackagePath { get; set; }
[Required]
public string MetaPackageVersion { 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 externalArchiveArtifacts = ExternalDependencies.Where(p => p.GetMetadata("LZMA") == "true" && p.GetMetadata("PackageType") == "Dependency");
var externalArchiveTools = ExternalDependencies.Where(p => p.GetMetadata("LZMA") == "true" && p.GetMetadata("PackageType") == "DotnetCliTool");
var archiveArtifacts = PackageArtifacts.Where(p => p.GetMetadata("LZMA") == "true" && p.GetMetadata("PackageType") == "Dependency");
var archiveTools = PackageArtifacts.Where(p => p.GetMetadata("LZMA") == "true" && p.GetMetadata("PackageType") == "DotnetCliTool");
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, $"Archive will include the following packages");
foreach (var package in archiveArtifacts)
{
var packageName = package.ItemSpec;
string packageVersion;
if (string.Equals(packageName, "Microsoft.AspNetCore.All", StringComparison.OrdinalIgnoreCase)
|| string.Equals(packageName, "Microsoft.AspNetCore.App", StringComparison.OrdinalIgnoreCase))
{
packageVersion = MetaPackageVersion;
}
else
{
var packageVersionCandidates = buildArtifacts.Where(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase));
if (!packageVersionCandidates.Any())
{
Log.LogError($"Missing Package: {packageName} from artifacts archive.");
return false;
}
else if (packageVersionCandidates.Count() > 1)
{
Log.LogError($"Duplicate Packages: {packageName} from artifacts archive.");
return false;
}
packageVersion = packageVersionCandidates.Single().PackageInfo.Version.ToString();
}
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArchiveArtifacts)
{
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);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in archiveTools)
{
var packageName = package.ItemSpec;
var packageVersionCandidates = buildArtifacts.Where(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase));
if (!packageVersionCandidates.Any())
{
Log.LogError($"Missing Package: {packageName} from tools archive.");
return false;
}
else if (packageVersionCandidates.Count() > 1)
{
Log.LogError($"Duplicate Packages: {packageName} from tools archive.");
return false;
}
var packageVersion = packageVersionCandidates.Single().PackageInfo.Version.ToString();
Log.LogMessage(MessageImportance.High, $" - Tool: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("DotNetCliToolReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArchiveTools)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Tool: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("DotNetCliToolReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(ReferencePackagePath);
return true;
}
}
}

View File

@ -1,31 +1,37 @@
// 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.IO;
using System.Threading;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.DotNet.Archive;
namespace RepoTasks
{
public class CreateLzma : Task
public class CreateLzma : Task, ICancelableTask
{
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
[Required]
public string OutputPath { get; set; }
[Required]
public string[] Sources { get; set; }
public void Cancel() => _cts.Cancel();
public override bool Execute()
{
var progress = new ConsoleProgressReport();
var progress = new MSBuildProgressReport(Log, _cts.Token);
using (var archive = new IndexedArchive())
{
foreach (var source in Sources)
{
if (Directory.Exists(source))
{
var trimmedSource = source.TrimEnd(new char[] { '\\', '/' });
var trimmedSource = source.TrimEnd(new []{ '\\', '/' });
Log.LogMessage(MessageImportance.High, $"Adding directory: {trimmedSource}");
archive.AddDirectory(trimmedSource, progress);
}
@ -39,7 +45,26 @@ namespace RepoTasks
archive.Save(OutputPath, progress);
}
return true;
return !Log.HasLoggedErrors;
}
private class MSBuildProgressReport : IProgress<ProgressReport>
{
private TaskLoggingHelper _log;
private readonly CancellationToken _cancellationToken;
public MSBuildProgressReport(TaskLoggingHelper log, CancellationToken cancellationToken)
{
_log = log;
_cancellationToken = cancellationToken;
}
public void Report(ProgressReport value)
{
var complete = (double)value.Ticks / value.Total;
_log.LogMessage(MessageImportance.Low, $"Progress: {value.Phase} - {complete:P}");
_cancellationToken.ThrowIfCancellationRequested(); // because LZMA apis don't take a cancellation token, throw from the logger (yes, its ugly, but it works.)
}
}
}
}

View File

@ -1,25 +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 Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.DotNet.Archive;
namespace RepoTasks
{
public class ExtractLzma : Task
{
[Required]
public string InputArchive { get; set; }
[Required]
public string OutputPath { get; set; }
public override bool Execute()
{
Log.LogMessage(MessageImportance.High, $"Extracting LZMA: {InputArchive}");
new IndexedArchive().Extract(InputArchive, OutputPath, new ConsoleProgressReport());
return true;
}
}
}

View File

@ -1,90 +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.Collections.Generic;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class FilterLzmaContent : Task
{
public ITaskItem[] PreviousLzmaContent { get; set; }
[Required]
public ITaskItem[] InputLzmaContent { get; set; }
[Output]
public ITaskItem[] FilteredLzmaContent { get; set; }
public override bool Execute()
{
var previousContent = new HashSet<ITaskItem>(new ITaskItemComparer());
var inputContent = new HashSet<ITaskItem>(new ITaskItemComparer());
// Keeping dlls separate for use to trim xml
var inputDlls = new HashSet<ITaskItem>(new ITaskItemComparer());
var newContent = new List<ITaskItem>();
if (PreviousLzmaContent != null)
{
foreach (var item in PreviousLzmaContent)
{
// To round trip correctly, overwrite RecursiveDir with RelativeDir
item.SetMetadata("RecursiveDir", item.GetMetadata("RelativeDir"));
previousContent.Add(item);
}
}
foreach (var item in InputLzmaContent)
{
var extension = item.GetExtension();
inputContent.Add(item);
if (string.Equals(".dll", extension, StringComparison.OrdinalIgnoreCase))
{
inputDlls.Add(item);
}
}
foreach (var item in inputContent)
{
// skip if contained in the previous LZMA
if (previousContent.Contains(item))
{
continue;
}
// skip if the file is an .xml that is matched with a .dll file
if (string.Equals(".xml", item.GetExtension(), StringComparison.OrdinalIgnoreCase)
&& inputDlls.Any(dll =>
// Match by filename
string.Equals(item.GetFileName(), dll.GetFileName(), StringComparison.OrdinalIgnoreCase)
// Match by folder structure (.xml must be under .dll's folder)
&& item.GetRecursiveDir().StartsWith(dll.GetRecursiveDir())))
{
continue;
}
newContent.Add(item);
}
FilteredLzmaContent = newContent.ToArray();
return true;
}
private class ITaskItemComparer : IEqualityComparer<ITaskItem>
{
public bool Equals(ITaskItem x, ITaskItem y)
=> string.Equals(x.GetRecursiveDir(), y.GetRecursiveDir(), StringComparison.OrdinalIgnoreCase)
&& string.Equals(x.GetFileName(), y.GetFileName(), StringComparison.OrdinalIgnoreCase)
&& string.Equals(x.GetExtension(), y.GetExtension(), StringComparison.OrdinalIgnoreCase);
public int GetHashCode(ITaskItem obj)
=> $"{obj.GetRecursiveDir()}{obj.GetFileName()}{obj.GetExtension()}".GetHashCode();
}
}
}

View File

@ -0,0 +1,64 @@
// 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 Microsoft.Build.Framework;
using System;
using System.Collections.Concurrent;
using System.IO;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace RepoTasks
{
/// <summary>
/// Filters a list of .xml files to only those that are .NET Xml docs files
/// </summary>
public class GetDocXmlFiles : Microsoft.Build.Utilities.Task
{
[Required]
public ITaskItem[] Files { get; set; }
[Output]
public ITaskItem[] XmlDocFiles { get; set; }
public override bool Execute()
{
var xmlDocs = new ConcurrentBag<ITaskItem>();
Parallel.ForEach(Files, f =>
{
try
{
using (var file = File.OpenRead(f.ItemSpec))
using (var reader = new StreamReader(file))
{
string line;
for (var i = 0; i < 2; i++)
{
line = reader.ReadLine();
if (i == 0 && line.StartsWith("<?xml", StringComparison.Ordinal))
{
line = line.Substring(line.IndexOf("?>") + 2);
}
if (line.StartsWith("<doc>", StringComparison.OrdinalIgnoreCase) || line.StartsWith("<doc xml:", StringComparison.OrdinalIgnoreCase))
{
xmlDocs.Add(f);
return;
}
}
}
}
catch (Exception ex)
{
Log.LogMessage(MessageImportance.Normal, $"Failed to read {f.ItemSpec}: {ex.ToString()}");
}
Log.LogMessage($"Did not detect {f.ItemSpec} as an xml doc file");
});
XmlDocFiles = xmlDocs.ToArray();
Log.LogMessage($"Found {XmlDocFiles.Length} xml doc file(s)");
return true;
}
}
}

View File

@ -3,24 +3,21 @@
<_RepoTaskAssembly>$(MSBuildThisFileDirectory)bin\publish\RepoTasks.dll</_RepoTaskAssembly>
</PropertyGroup>
<UsingTask TaskName="RepoTasks.AddArchiveReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddMetapackageReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AnalyzeBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CheckExpectedPackagesExist" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CheckRepoGraph" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CheckVersionOverrides" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CreateLzma" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ExtractLzma" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.FilterLzmaContent" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GenerateSubmoduleGraph" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GetDocXmlFiles" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.PublishToAzureBlob" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ResolveSymbolsRecursivePath" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.TrimDeps" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.UpdatePreviousArchiveManifest" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.VerifyCoherentVersions" AssemblyFile="$(_RepoTaskAssembly)" />
<!-- tools from dotnet-buildtools -->

View File

@ -1,50 +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 NuGet.Versioning;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class UpdatePreviousArchiveManifest : Task
{
[Required]
public string OutputPath { get; set; }
[Required]
public ITaskItem[] Contents { get; set; }
public override bool Execute()
{
var xmlDoc = new XmlDocument();
// Project
var projectElement = xmlDoc.CreateElement("Project");
// Items
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
foreach (var content in Contents)
{
var contentElement = xmlDoc.CreateElement("PreviousLzmaContents");
contentElement.SetAttribute("Include", $"{content.GetRecursiveDir()}{content.GetFileName()}{content.GetExtension()}");
itemGroupElement.AppendChild(contentElement);
// Recursive will be lost during round tripping using a props file. To fix this, set the RecursiveDir to RelativeDir.
// This can only be done in a task as MSBuild prevents overwritting reserved metadata.
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(OutputPath);
return true;
}
}
}

View File

@ -1,17 +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 Microsoft.Build.Framework;
namespace RepoTasks.Utilities
{
public static class ITaskItemExtensions
{
public static string GetRecursiveDir(this ITaskItem item)
=> item.GetMetadata("RecursiveDir");
public static string GetFileName(this ITaskItem item)
=> item.GetMetadata("Filename");
public static string GetExtension(this ITaskItem item)
=> item.GetMetadata("Extension");
}
}

View File

@ -54,23 +54,28 @@ foreach ($package in $remoteDeps.SelectNodes('//Package')) {
}
}
if (-not $NoCommit) {
$currentBranch = Invoke-Block { & git rev-parse --abbrev-ref HEAD }
$currentBranch = Invoke-Block { & git rev-parse --abbrev-ref HEAD }
$destinationBranch = "dotnetbot/UpdateDeps"
Invoke-Block { & git checkout -tb $destinationBranch "origin/$GithubUpstreamBranch" }
$destinationBranch = "dotnetbot/UpdateDeps"
Invoke-Block { & git checkout -tb $destinationBranch "origin/$GithubUpstreamBranch" }
}
try {
$updatedVars = UpdateVersions $variables $dependencies $depsPath
if (-not $NoCommit) {
if ($NoCommit) {
exit 0
}
$body = CommitUpdatedVersions $updatedVars $dependencies $depsPath
if ($body) {
CreatePR "aspnet" $GithubUsername $GithubUpstreamBranch $destinationBranch $body $GithubToken
}
}
}
finally {
if (-not $NoCommit) {
Invoke-Block { & git checkout $currentBranch }
}
}

View File

@ -15,7 +15,7 @@ function Invoke-Block([scriptblock]$cmd) {
# - $?: did the powershell script block throw an error
# - $lastexitcode: did a windows command executed by the script block end in error
if ((-not $?) -or ($lastexitcode -ne 0)) {
if(($error -ne $null))
if ($error -ne $null)
{
Write-Warning $error[0]
}

View File

@ -0,0 +1,14 @@
<Project>
<Import Project="..\Archive.props" />
<!-- Same as Archive.CiServer.Patch, but it includes .nupkg files for compatibility with 1.x versions of the .NET Core SDK -->
<PropertyGroup>
<TargetFileName>nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip</TargetFileName>
<IsIncremental>true</IsIncremental>
<IncludeXmlDocs>false</IncludeXmlDocs>
<IncludeNupkgFiles>true</IncludeNupkgFiles>
</PropertyGroup>
<Import Project="..\Archive.targets" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
<Project>
<Import Project="..\Archive.props" />
<!-- Same as Archive.CiServer, but in only includes files which have not previously been included in a stable release. -->
<PropertyGroup>
<TargetFileName>nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip</TargetFileName>
<IsIncremental>true</IsIncremental>
<IncludeXmlDocs>false</IncludeXmlDocs>
<IncludeNupkgFiles>false</IncludeNupkgFiles>
</PropertyGroup>
<Import Project="..\Archive.targets" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
<Project>
<Import Project="..\Archive.props" />
<!-- This archive is optimized for CI server environments which do not need .nupkg files or xml docs, such as Docker. -->
<PropertyGroup>
<TargetFileName>nuGetPackagesArchive-ci-server-$(PackageVersion).zip</TargetFileName>
<IsIncremental>false</IsIncremental>
<IncludeXmlDocs>false</IncludeXmlDocs>
<IncludeNupkgFiles>false</IncludeNupkgFiles>
</PropertyGroup>
<Import Project="..\Archive.targets" />
</Project>

View File

@ -0,0 +1,14 @@
<Project>
<Import Project="..\Archive.props" />
<!-- This archive is passed along to dotnet/cli for use with the .NET Core CLI first run experience. -->
<PropertyGroup>
<TargetFileName>nuGetPackagesArchive-$(PackageVersion).lzma</TargetFileName>
<IsIncremental>false</IsIncremental>
<IncludeXmlDocs>true</IncludeXmlDocs>
<IncludeNupkgFiles>true</IncludeNupkgFiles>
</PropertyGroup>
<Import Project="..\Archive.targets" />
</Project>

View File

@ -0,0 +1,11 @@
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<Import Project="..\..\build\tasks\RepoTasks.tasks" />
<UsingTask TaskName="Microsoft.AspNetCore.BuildTools.ZipArchive" AssemblyFile="$(_BuildToolsAssembly)" Condition=" '$(_BuildToolsAssembly)' != '' "/>
<PropertyGroup>
<!-- Required to make /t:Restore happy, but not really used for anything else. -->
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,97 @@
<Project>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- Default items -->
<ItemGroup>
<ProjectReference Include="$(MSBuildThisFileDirectory)Scenario.*\Scenario.*.*proj" ReferenceOutputAssembly="false" />
<ArchiveBaseline Include="$(MSBuildProjectDirectory)\ArchiveBaseline.*.txt" />
</ItemGroup>
<!-- Targets items -->
<Target Name="PrepareOutputPaths">
<MakeDir Directories="$(TargetDir)" />
<Delete Files="$(TargetPath)" />
</Target>
<PropertyGroup>
<CollectInputsDependsOn Condition=" '$(IncludeNupkgFiles)' == 'false' ">$(CollectInputsDependsOn);CollectNupkgExclusions</CollectInputsDependsOn>
<CollectInputsDependsOn Condition=" '$(IncludeXmlDocs)' == 'false' ">$(CollectInputsDependsOn);CollectXmlExclusions</CollectInputsDependsOn>
<CollectInputsDependsOn Condition=" '$(IsIncremental)' == 'true' ">$(CollectInputsDependsOn);CollectBaselineExclusions</CollectInputsDependsOn>
</PropertyGroup>
<Target Name="CollectNupkgExclusions">
<ItemGroup>
<ArchiveExclusions Include="$(RestorePackagesPath)**\*.nupkg" />
</ItemGroup>
</Target>
<Target Name="CollectXmlExclusions">
<ItemGroup>
<_ArchiveItemXml Include="$(RestorePackagesPath)**\*.xml" />
</ItemGroup>
<Message Text="Found @(_ArchiveItemXml->Count()) xml files that might be docxml" />
<RepoTasks.GetDocXmlFiles Files="@(_ArchiveItemXml)">
<Output TaskParameter="XmlDocFiles" ItemName="ArchiveExclusions" />
</RepoTasks.GetDocXmlFiles>
</Target>
<Target Name="CollectBaselineExclusions">
<ReadLinesFromFile File="%(ArchiveBaseline.Identity)" Condition="'%(ArchiveBaseline.Identity)' != ''">
<Output TaskParameter="Lines" ItemName="PreviousArchiveItem" />
</ReadLinesFromFile>
<ItemGroup>
<ArchiveExclusions Include="$(RestorePackagesPath)%(PreviousArchiveItem.Identity)" Condition=" '%(PreviousArchiveItem.Identity)' != '' " />
</ItemGroup>
</Target>
<Target Name="CollectInputs" DependsOnTargets="$(CollectInputsDependsOn)">
<ItemGroup>
<ArchiveItem Include="$(RestorePackagesPath)**\*" Exclude="@(ArchiveExclusions)" />
</ItemGroup>
<Message Text="Found @(ArchiveItem->Count()) files to put in the CI package archive" />
</Target>
<Target Name="CreateArchive" Outputs="$(TargetPath)">
<Warning Text="No files were found to put into $(TargetPath)"
Condition="@(ArchiveItem->Count()) == 0 AND '$(IsIncremental)' == 'true' " />
<Error Text="No files were found to put into $(TargetPath)"
Condition="@(ArchiveItem->Count()) == 0 AND '$(IsIncremental)' != 'true' " />
<ZipArchive
File="$(TargetPath)"
SourceFiles="@(ArchiveItem)"
WorkingDirectory="$(RestorePackagesPath)"
Overwrite="true"
Condition="@(ArchiveItem->Count()) != 0 AND '$(MSBuildProjectExtension)' == '.zipproj'" />
<RepoTasks.CreateLzma
OutputPath="$(TargetPath)"
Sources="$(RestorePackagesPath)"
Condition="@(ArchiveItem->Count()) != 0 AND '$(MSBuildProjectExtension)' == '.lzmaproj'" />
</Target>
<Target Name="CheckForInvalidConfig">
<Error Text=".lzmaproj currently only supports zipping an entire directory with everything in it."
Condition="'$(MSBuildProjectExtension)' == '.lzmaproj' AND ( '$(IsIncremental)' == 'true' OR '$(IncludeNupkgFiles)' == 'false' OR '$(IncludeXmlDocs)' == 'false' ) "/>
</Target>
<Target Name="CheckForPreviousReleaseArchiveBaseline" Condition=" '$(AspNetCorePatchVersion)' != '0' AND '$(IsIncremental)' == 'true' ">
<PropertyGroup>
<PreviousStableVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$([MSBuild]::Subtract($(AspNetCorePatchVersion), 1))</PreviousStableVersion>
</PropertyGroup>
<Error Text="The ArchiveBaseline for previous release (v$(PreviousStableVersion)) could not be found. This is required to build the incremental archives. See instructions in $(MSBuildThisFileDirectory)ZipManifestGenerator\README.md"
Condition="! Exists('$(MSBuildProjectDirectory)\ArchiveBaseline.$(PreviousStableVersion).txt')" />
</Target>
<Target Name="Build"
DependsOnTargets="PrepareOutputPaths;CheckForInvalidConfig;CheckForPreviousReleaseArchiveBaseline;CollectInputs;CreateArchive"
Outputs="$(TargetPath)" />
</Project>

View File

@ -0,0 +1,13 @@
<Project>
<Import Project="..\..\Directory.Build.props" />
<PropertyGroup>
<!-- Don't restore from any fallback folder -->
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
<!-- Projects in this folder should be explicit about the packages they reference -->
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<RestorePackagesPath>$([MSBuild]::NormalizePath('$(RepositoryRoot)obj\pkgs\'))</RestorePackagesPath>
</PropertyGroup>
</Project>

View File

@ -0,0 +1 @@
<Project />

View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NETStandard.Library" Version="$(NETStandardLibrary20PackageVersion)" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
<MaxImplicitVersion>2.2.0</MaxImplicitVersion>
<!-- Use pre-release versions up until 2.1.0, then don't lift higher than "2.1.0" -->
<MicrosoftNETCoreAppPackageVersion Condition="$(MicrosoftNETCoreApp22PackageVersion.StartsWith('$(MaxImplicitVersion)-'))">$(MicrosoftNETCoreApp22PackageVersion)</MicrosoftNETCoreAppPackageVersion>
<MicrosoftNETCoreAppPackageVersion>$([MSbuild]::ValueOrDefault('$(MicrosoftNETCoreAppPackageVersion)','$(MaxImplicitVersion)'))</MicrosoftNETCoreAppPackageVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreAppPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="$(MicrosoftAspNetCoreAppPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="$(MicrosoftAspNetCoreAuthenticationAzureADUIPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="$(MicrosoftAspNetCoreAuthenticationAzureADB2CUIPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Contracts" Version="$(MicrosoftVisualStudioWebCodeGenerationContractsPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Core" Version="$(MicrosoftVisualStudioWebCodeGenerationCorePackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore" Version="$(MicrosoftVisualStudioWebCodeGenerationEntityFrameworkCorePackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Templating" Version="$(MicrosoftVisualStudioWebCodeGenerationTemplatingPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Version="$(MicrosoftVisualStudioWebCodeGenerationUtilsPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration" Version="$(MicrosoftVisualStudioWebCodeGenerationPackageVersion)" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Version="$(MicrosoftVisualStudioWebCodeGeneratorsMvcPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,80 @@
// 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.IO;
using System.IO.Compression;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace ZipManifestGenerator
{
class Program
{
private static void PrintUsage()
{
Console.WriteLine(@"
Usage: <ZIP> <OUTPUT>
<ZIP> A file path or URL to the ZIP file.
<OUTPUT> The output file path for the ZIP manifest file.");
}
public static async Task<int> Main(string[] args)
{
if (args.Length != 2)
{
Console.Error.WriteLine("Invalid arguments");
PrintUsage();
return 1;
}
var zipPath = args[0];
var manifestOutputPath = args[1];
var shouldCleanupZip = false;
if (zipPath.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
shouldCleanupZip = true;
var url = zipPath;
Console.WriteLine($"log: Downloading {url}");
zipPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + ".zip");
var response = await new HttpClient().GetAsync(url);
response.EnsureSuccessStatusCode();
using (var outStream = File.Create(zipPath))
{
var responseStream = await response.Content.ReadAsStreamAsync();
await responseStream.CopyToAsync(outStream);
}
}
try
{
Console.WriteLine($"log: Generating manifest in {manifestOutputPath}");
using (var zipStream = File.OpenRead(zipPath))
using (var zip = new ZipArchive(zipStream, ZipArchiveMode.Read))
using (var manifest = File.Create(manifestOutputPath))
using (var writer = new StreamWriter(manifest))
{
foreach (var file in zip.Entries.OrderBy(_ => _.FullName))
{
writer.WriteLine(file.FullName.Replace("/", "\\"));
}
}
}
finally
{
if (shouldCleanupZip)
{
File.Delete(zipPath);
}
}
return 0;
}
}
}

View File

@ -0,0 +1,9 @@
ZipManifestGenerator
---------
This console app is used to generate the list of files in a zip archive.
Usage:
```
dotnet run ./archive.zip files.txt
```

View File

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<SignAssembly>false</SignAssembly>
<PublicSign>false</PublicSign>
<LangVersion>7.1</LangVersion>
<DisableImplicitFrameworkReferences>false</DisableImplicitFrameworkReferences>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,34 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZipManifestGenerator", "ZipManifestGenerator.csproj", "{4706B37C-3B37-4331-84FC-107657BDEC4E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|x64.ActiveCfg = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|x64.Build.0 = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|x86.ActiveCfg = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Debug|x86.Build.0 = Debug|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|Any CPU.Build.0 = Release|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|x64.ActiveCfg = Release|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|x64.Build.0 = Release|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|x86.ActiveCfg = Release|Any CPU
{4706B37C-3B37-4331-84FC-107657BDEC4E}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal