diff --git a/.vscode/settings.json b/.vscode/settings.json
index f381ae666e..89a3c7cca0 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -3,6 +3,7 @@
"files.associations": {
"*.*proj": "xml",
"*.props": "xml",
- "*.targets": "xml"
+ "*.targets": "xml",
+ "*.tasks": "xml"
}
-}
\ No newline at end of file
+}
diff --git a/build/PackageArchive.targets b/build/PackageArchive.targets
index 4970e4bb95..5c3f4775de 100644
--- a/build/PackageArchive.targets
+++ b/build/PackageArchive.targets
@@ -55,19 +55,14 @@
-
+
- <_DotnetToolPackages Update="@(_DotnetToolPackages)">
- $([System.String]::new('%(PackageId).%(Version)').ToLowerInvariant())
- $([System.String]::new('%(PackageId)/%(Version)').ToLowerInvariant())
-
+ <_DotnetToolPackages Include="$(MetapackageRestoreSource)%(_DotnetToolPackageId.Identity).%(_DotnetToolPackageId.Version).nupkg" />
-
-
-
+
diff --git a/build/Publish.targets b/build/Publish.targets
index 34d9649dd1..6b35b0ccb5 100644
--- a/build/Publish.targets
+++ b/build/Publish.targets
@@ -10,6 +10,7 @@
$(IntermediateDir)$(LatestRuntimeVersionFileName)
+ ResolveCommitHash;
PrepareOutputPaths;
GetFilesToPublish;
CopyToPublishArtifacts;
@@ -178,11 +179,11 @@
@@ -200,7 +201,8 @@
AccountKey="$(PublishBlobFeedKey)"
ItemsToPush="@(PackagesToPublishToTransport)"
Overwrite="$(PushToBlobFeed_Overwrite)"
- ManifestBuildId="$(BuildNumber)"
+ ManifestBuildId="$(Version)"
+ ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
ManifestCommit="$(CommitHash)"
ManifestName="aspnet"
MaxClients="$(PushToBlobFeed_MaxClients)"
@@ -211,7 +213,8 @@
ItemsToPush="@(FilesToPublishToTransport)"
PublishFlatContainer="true"
Overwrite="$(PushToBlobFeed_Overwrite)"
- ManifestBuildId="$(BuildNumber)"
+ ManifestBuildId="$(Version)"
+ ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
ManifestCommit="$(CommitHash)"
ManifestName="aspnet"
MaxClients="$(PushToBlobFeed_MaxClients)" />
diff --git a/build/artifacts.props b/build/artifacts.props
index ce35f8b0ee..093cdb4481 100644
--- a/build/artifacts.props
+++ b/build/artifacts.props
@@ -258,7 +258,7 @@
-
+
diff --git a/build/dependencies.props b/build/dependencies.props
index 72f4c9d1b2..791d9c1184 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -1,5 +1,8 @@
+ 2.1.0-prerelease-02430-04
+ 2.0.0
+ 8.7.0
0.10.11
4.3.1
2.4.337
diff --git a/build/tasks/CreateNuGetV3FolderFeed.cs b/build/tasks/CreateNuGetV3FolderFeed.cs
new file mode 100644
index 0000000000..8d76e3f165
--- /dev/null
+++ b/build/tasks/CreateNuGetV3FolderFeed.cs
@@ -0,0 +1,95 @@
+// 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.Security.Cryptography;
+using System.Text;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using NuGet.Packaging;
+using NuGet.Packaging.Core;
+using NuGet.Versioning;
+
+namespace RepoTasks
+{
+ ///
+ /// Layouts nuget packages as a V3 feed
+ ///
+ public class CreateNuGetV3FolderFeed : Task
+ {
+ [Required]
+ public ITaskItem[] Packages { get; set; }
+
+ [Required]
+ public string DestinationFolder { get; set; }
+
+ public bool Overwrite { get; set; }
+
+ public override bool Execute()
+ {
+ Directory.CreateDirectory(DestinationFolder);
+
+ foreach (var file in Packages)
+ {
+ PackageIdentity identity;
+ using (var reader = new PackageArchiveReader(file.ItemSpec))
+ {
+ identity = reader.GetIdentity();
+ }
+
+ Log.LogMessage(MessageImportance.High, "Adding {0} to feed '{1}'", identity, DestinationFolder);
+
+ var packageFolder = Path.Combine(DestinationFolder, identity.Id.ToLowerInvariant(), identity.Version.ToNormalizedString());
+ var nuspecFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nuspec");
+ var nupkgFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg");
+ var sha512File = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg.sha512");
+
+ if (!Overwrite && File.Exists(nuspecFile))
+ {
+ Log.LogError("File already exists: {0}", nuspecFile);
+ continue;
+ }
+ if (!Overwrite && File.Exists(nupkgFile))
+ {
+ Log.LogError("File already exists: {0}", nupkgFile);
+ continue;
+ }
+ if (!Overwrite && File.Exists(sha512File))
+ {
+ Log.LogError("File already exists: {0}", sha512File);
+ continue;
+ }
+
+ Directory.CreateDirectory(packageFolder);
+ using (var reader = new PackageArchiveReader(file.ItemSpec))
+ using (var nuspec = File.Create(nuspecFile))
+ using (var metadata = reader.GetNuspec())
+ {
+ Log.LogMessage("Creating {0}", nuspecFile);
+ metadata.CopyTo(nuspec);
+ }
+
+ Log.LogMessage("Copying {0}", nupkgFile);
+ File.Copy(file.ItemSpec, nupkgFile);
+ Log.LogMessage("Creating {0}", sha512File);
+ File.WriteAllText(sha512File, GetFileHash(file.ItemSpec));
+ }
+
+ return !Log.HasLoggedErrors;
+ }
+
+ private static string GetFileHash(string filePath)
+ {
+ byte[] hash;
+
+ using (var algorithm = new SHA512Managed())
+ using (var stream = File.OpenRead(filePath))
+ {
+ hash = algorithm.ComputeHash(stream);
+ }
+
+ return Convert.ToBase64String(hash);
+ }
+ }
+}
diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj
index 4c4e3556e8..aeff655cbf 100644
--- a/build/tasks/RepoTasks.csproj
+++ b/build/tasks/RepoTasks.csproj
@@ -1,14 +1,17 @@
-
+
+
netstandard2.0
+ https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
-
-
+
+
+
diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks
index d579d64845..389a0f71f2 100644
--- a/build/tasks/RepoTasks.tasks
+++ b/build/tasks/RepoTasks.tasks
@@ -11,6 +11,7 @@
+
@@ -20,4 +21,15 @@
+
+
+
+ $(NUGET_PACKAGES)
+ $(USERPROFILE)\.nuget\packages\
+ $(HOME)\.nuget\packages\
+ $([MSBuild]::NormalizeDirectory($(NuGetPackagesPath)))
+ <_MicrosoftDotNetBuildTasksFeedTaskDir>$(NuGetPackagesPath)microsoft.dotnet.build.tasks.feed\$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion.ToLowerInvariant())\build\netstandard1.5\
+
+
+