From 400e1db3b9b15d4d0f78abdc7a6bee4819ac2076 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Fri, 17 Jun 2016 16:16:09 -0700 Subject: [PATCH 001/165] dotnet-build3 Adding msbuild execution command to cli --- Microsoft.DotNet.Cli.sln | 36 +++--- .../MSBuildTestApp/MSBuildTestApp.csproj | 44 +++++++ .../TestProjects/MSBuildTestApp/Program.cs | 12 ++ .../TestProjects/MSBuildTestApp/project.json | 28 +++++ build.proj | 49 ++++++++ .../dotnet-cli-build/CompileTargets.cs | 27 ++++- .../dotnet-cli-build/TestTargets.cs | 1 + src/dotnet/Program.cs | 3 +- .../commands/dotnet-build3/ForwardingApp.cs | 107 ++++++++++++++++++ .../dotnet-build3/MSBuildForwardingApp.cs | 80 +++++++++++++ src/dotnet/commands/dotnet-build3/Program.cs | 20 ++++ src/dotnet/commands/dotnet-new/Program.cs | 5 +- .../commands/dotnet-pack/PackageGenerator.cs | 3 +- src/dotnet/project.json | 15 ++- .../GivenDotnetBuild3BuildsCsproj.cs | 42 +++++++ .../dotnet-build3.Tests.xproj | 21 ++++ test/dotnet-build3.Tests/project.json | 24 ++++ 17 files changed, 493 insertions(+), 24 deletions(-) create mode 100644 TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj create mode 100644 TestAssets/TestProjects/MSBuildTestApp/Program.cs create mode 100644 TestAssets/TestProjects/MSBuildTestApp/project.json create mode 100644 build.proj create mode 100644 src/dotnet/commands/dotnet-build3/ForwardingApp.cs create mode 100644 src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs create mode 100644 src/dotnet/commands/dotnet-build3/Program.cs create mode 100644 test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs create mode 100644 test/dotnet-build3.Tests/dotnet-build3.Tests.xproj create mode 100644 test/dotnet-build3.Tests/project.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index eec268d1b..9c714a1ca 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -121,6 +121,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Configurer EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Archive", "src\Microsoft.DotNet.Archive\Microsoft.DotNet.Archive.xproj", "{35B19F22-B8C0-4849-9C35-3F809B7588B8}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build3.Tests", "test\dotnet-build3.Tests\dotnet-build3.Tests.xproj", "{49D7318E-D198-4E2B-BBEA-3A24D805F88D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -805,22 +807,6 @@ Global {A28BD8AC-DF15-4F58-8299-98A9AE2B8726}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {A28BD8AC-DF15-4F58-8299-98A9AE2B8726}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {A28BD8AC-DF15-4F58-8299-98A9AE2B8726}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Debug|x64.ActiveCfg = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Debug|x64.Build.0 = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Release|Any CPU.Build.0 = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Release|x64.ActiveCfg = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.Release|x64.Build.0 = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {1DBB7542-0345-4F4B-A84B-3B00B185D416}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {1C599FFD-FB52-4279-A8E5-465D3EC499E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1C599FFD-FB52-4279-A8E5-465D3EC499E1}.Debug|Any CPU.Build.0 = Debug|Any CPU {1C599FFD-FB52-4279-A8E5-465D3EC499E1}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -901,6 +887,22 @@ Global {35B19F22-B8C0-4849-9C35-3F809B7588B8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {35B19F22-B8C0-4849-9C35-3F809B7588B8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {35B19F22-B8C0-4849-9C35-3F809B7588B8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Debug|x64.ActiveCfg = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Debug|x64.Build.0 = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Release|Any CPU.Build.0 = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Release|x64.ActiveCfg = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.Release|x64.Build.0 = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -953,11 +955,11 @@ Global {49BEB486-AB5A-4416-91EA-8CD34ABB0C9D} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3} {B768BD29-12BF-4C7C-B093-03193FE244D1} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3} {A28BD8AC-DF15-4F58-8299-98A9AE2B8726} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3} - {1DBB7542-0345-4F4B-A84B-3B00B185D416} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3} {1C599FFD-FB52-4279-A8E5-465D3EC499E1} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {5DF6C9DA-6909-4EC0-909E-6913580BB4A4} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {E5ED47EF-BF25-4DA9-A7FE-290C642CBF0F} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {4C3B06D5-B6D5-4E5B-A44F-3EBE52A1C759} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {35B19F22-B8C0-4849-9C35-3F809B7588B8} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} + {49D7318E-D198-4E2B-BBEA-3A24D805F88D} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} EndGlobalSection EndGlobal diff --git a/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj new file mode 100644 index 000000000..ed112f20e --- /dev/null +++ b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj @@ -0,0 +1,44 @@ + + + + + + + Debug + x64 + x64 + Exe + MSBuildTestApp + $(MSBuildThisFileName) + NETCoreApp + v1.0 + bin\$(Configuration)\netcoreapp1.0 + false + true + true + true + .NETCoreApp,Version=v1.0 + + win7 + false + none + + + + + + + + + $(DotnetHostPath) + + + + + + + + + + + \ No newline at end of file diff --git a/TestAssets/TestProjects/MSBuildTestApp/Program.cs b/TestAssets/TestProjects/MSBuildTestApp/Program.cs new file mode 100644 index 000000000..8dae6dd9e --- /dev/null +++ b/TestAssets/TestProjects/MSBuildTestApp/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace MSBuildTestApp +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/TestAssets/TestProjects/MSBuildTestApp/project.json b/TestAssets/TestProjects/MSBuildTestApp/project.json new file mode 100644 index 000000000..90bc28bca --- /dev/null +++ b/TestAssets/TestProjects/MSBuildTestApp/project.json @@ -0,0 +1,28 @@ +{ + "frameworks": { + "netcoreapp1.0": { + "dependencies": { + "Microsoft.NETCore.App": { + "version": "1.0.0" + } + } + } + }, + "runtimes": { + "win7-x64": {}, + "win7-x86": {}, + "win81-x64": {}, + "win81-x86": {}, + "win10-x64": {}, + "win10-x86": {}, + "osx.10.10-x64": {}, + "osx.10.11-x64": {}, + "ubuntu.14.04-x64": {}, + "ubuntu.16.04-x64": {}, + "centos.7-x64": {}, + "rhel.7.2-x64": {}, + "debian.8-x64": {}, + "fedora.23-x64": {}, + "opensuse.13.2-x64": {} + }, +} diff --git a/build.proj b/build.proj new file mode 100644 index 000000000..51bd78d57 --- /dev/null +++ b/build.proj @@ -0,0 +1,49 @@ + + + + + + powershell -NoProfile -NoLogo -Command + + + .ps1 + .sh + + .exe + + + Prepare;Compile;Test;Package;Publish + + + + + + $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build$(PlatformExeExtension) + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs index bfe5255b1..19286231b 100644 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ b/build_projects/dotnet-cli-build/CompileTargets.cs @@ -201,7 +201,6 @@ namespace Microsoft.DotNet.Cli.Build var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); - var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); // Corehostify binaries @@ -211,7 +210,7 @@ namespace Microsoft.DotNet.Cli.Build { // Yes, it is .exe even on Linux. This is the managed exe we're working with File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); - File.Delete(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe")); + File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); @@ -221,6 +220,8 @@ namespace Microsoft.DotNet.Cli.Build { var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); + RemoveAssetFromDepsPackages( + Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); } } catch (Exception ex) @@ -270,9 +271,31 @@ namespace Microsoft.DotNet.Cli.Build GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); } + CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); + return c.Success(); } + private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) + { + var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); + + var filesToCopy = new List(); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); + + foreach (var fileFullPath in filesToCopy) + { + var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); + var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); + + File.Copy(fileFullPath, destinationFilePath, true); + } + } + private static void GenerateNuGetPackagesArchive( BuildTargetContext c, DotNetCli dotnet, diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index 413f411a4..41fc8bb9c 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -22,6 +22,7 @@ namespace Microsoft.DotNet.Cli.Build "EndToEnd", "dotnet.Tests", "dotnet-build.Tests", + "dotnet-build3.Tests", "dotnet-compile.Tests", "dotnet-compile.UnitTests", // TODO: https://github.com/dotnet/cli/issues/3558 diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs index 7aeb94c89..0dea85aff 100644 --- a/src/dotnet/Program.cs +++ b/src/dotnet/Program.cs @@ -37,7 +37,8 @@ namespace Microsoft.DotNet.Cli ["publish"] = PublishCommand.Run, ["restore"] = RestoreCommand.Run, ["run"] = RunCommand.Run, - ["test"] = TestCommand.Run + ["test"] = TestCommand.Run, + ["build3"] = Build3Command.Run }; public static int Main(string[] args) diff --git a/src/dotnet/commands/dotnet-build3/ForwardingApp.cs b/src/dotnet/commands/dotnet-build3/ForwardingApp.cs new file mode 100644 index 000000000..c3d14c6dc --- /dev/null +++ b/src/dotnet/commands/dotnet-build3/ForwardingApp.cs @@ -0,0 +1,107 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.ProjectModel; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; + +namespace Microsoft.DotNet.Cli +{ + /// + /// A class which encapsulates logic needed to forward arguments from the current process to another process + /// invoked with the dotnet.exe host. + /// + public class ForwardingApp + { + private const string s_hostExe = "dotnet"; + + private readonly string _forwardApplicationPath; + private readonly string[] _argsToForward; + private readonly string _depsFile; + private readonly string _runtimeConfig; + private readonly string _additionalProbingPath; + private readonly Dictionary _environmentVariables; + + private readonly string[] _allArgs; + + public ForwardingApp( + string forwardApplicationPath, + string[] argsToForward, + string depsFile = null, + string runtimeConfig = null, + string additionalProbingPath = null, + Dictionary environmentVariables = null) + { + _forwardApplicationPath = forwardApplicationPath; + _argsToForward = argsToForward; + _depsFile = depsFile; + _runtimeConfig = runtimeConfig; + _additionalProbingPath = additionalProbingPath; + _environmentVariables = environmentVariables; + + var allArgs = new List(); + allArgs.Add("exec"); + + if (_depsFile != null) + { + allArgs.Add("--depsfile"); + allArgs.Add(_depsFile); + } + + if (_runtimeConfig != null) + { + allArgs.Add("--runtimeconfig"); + allArgs.Add(_runtimeConfig); + } + + if (_additionalProbingPath != null) + { + allArgs.Add("--additionalprobingpath"); + allArgs.Add(_additionalProbingPath); + } + + allArgs.Add(_forwardApplicationPath); + allArgs.AddRange(_argsToForward); + + _allArgs = allArgs.ToArray(); + } + + public int Execute() + { + var processInfo = new ProcessStartInfo + { + FileName = GetHostExeName(), + Arguments = ArgumentEscaper.EscapeAndConcatenateArgArrayForProcessStart(_allArgs), + UseShellExecute = false + }; + + if (_environmentVariables != null) + { + foreach (var entry in _environmentVariables) + { + processInfo.Environment[entry.Key] = entry.Value; + } + } + + var process = new Process + { + StartInfo = processInfo + }; + + process.Start(); + process.WaitForExit(); + + return process.ExitCode; + } + + private string GetHostExeName() + { + return $"{s_hostExe}{FileNameSuffixes.CurrentPlatform.Exe}"; + } + } +} diff --git a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs new file mode 100644 index 000000000..d8037cd0c --- /dev/null +++ b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs @@ -0,0 +1,80 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.InternalAbstractions; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; + +namespace Microsoft.DotNet.Cli +{ + public class MSBuildForwardingApp + { + private const string s_msbuildExeName = "MSBuild.exe"; + private readonly ForwardingApp _forwardingApp; + + public MSBuildForwardingApp(string[] argsToForward) + { + _forwardingApp = new ForwardingApp( + GetMSBuildExePath(), + argsToForward, + depsFile: GetDepsFile(), + runtimeConfig: GetRuntimeConfig(), + environmentVariables: GetEnvironmentVariables()); + } + + public int Execute() + { + return _forwardingApp.Execute(); + } + + private static Dictionary GetEnvironmentVariables() + { + return new Dictionary + { + { "MSBuildExtensionsPath", AppContext.BaseDirectory }, + { "DotnetHostPath", GetHostPath() }, + { "BaseNuGetRuntimeIdentifier", GetCurrentBaseRid() }, + { "Platform", GetCurrentArchitecture() }, + { "PlatformTarget", GetCurrentArchitecture() } + }; + } + + private static string GetCurrentBaseRid() + { + return RuntimeEnvironment.GetRuntimeIdentifier() + .Replace("-" + RuntimeEnvironment.RuntimeArchitecture, ""); + } + + private static string GetHostPath() + { + return new Muxer().MuxerPath; + } + + private static string GetRuntimeConfig() + { + return Path.Combine(AppContext.BaseDirectory, "dotnet.runtimeconfig.json"); + } + + private static string GetDepsFile() + { + return Path.Combine(AppContext.BaseDirectory, "dotnet.deps.json"); + } + + private static string GetMSBuildExePath() + { + return Path.Combine( + AppContext.BaseDirectory, + "runtimes", "any", "native", + s_msbuildExeName); + } + + private static string GetCurrentArchitecture() + { + return RuntimeEnvironment.RuntimeArchitecture; + } + } +} diff --git a/src/dotnet/commands/dotnet-build3/Program.cs b/src/dotnet/commands/dotnet-build3/Program.cs new file mode 100644 index 000000000..e9efe9698 --- /dev/null +++ b/src/dotnet/commands/dotnet-build3/Program.cs @@ -0,0 +1,20 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli.Utils; +using System; +using System.Diagnostics; +using System.IO; +using System.Reflection; + +namespace Microsoft.DotNet.Cli +{ + public class Build3Command + { + public static int Run(string[] args) + { + return new MSBuildForwardingApp(args).Execute(); + } + + } +} diff --git a/src/dotnet/commands/dotnet-new/Program.cs b/src/dotnet/commands/dotnet-new/Program.cs index e22cce0d6..2a0392d80 100644 --- a/src/dotnet/commands/dotnet-new/Program.cs +++ b/src/dotnet/commands/dotnet-new/Program.cs @@ -1,4 +1,7 @@ -using Microsoft.DotNet.Cli.CommandLine; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli.CommandLine; using Microsoft.DotNet.Cli.Utils; using System; using System.Collections.Generic; diff --git a/src/dotnet/commands/dotnet-pack/PackageGenerator.cs b/src/dotnet/commands/dotnet-pack/PackageGenerator.cs index 1997b95ec..0ecfb3102 100644 --- a/src/dotnet/commands/dotnet-pack/PackageGenerator.cs +++ b/src/dotnet/commands/dotnet-pack/PackageGenerator.cs @@ -19,6 +19,7 @@ using NuGet.Frameworks; using NuGet.Packaging.Core; using NuGet.Versioning; using PackageBuilder = NuGet.PackageBuilder; +using NuGetConstants = NuGet.Constants; namespace Microsoft.DotNet.Tools.Compiler { @@ -58,7 +59,7 @@ namespace Microsoft.DotNet.Tools.Compiler var packageOutputPath = Path.Combine( ArtifactPathsCalculator.PackageOutputPath, - GetPackageName() + NuGet.Constants.PackageExtension); + GetPackageName() + NuGetConstants.PackageExtension); if (GeneratePackage(packageOutputPath, packDiagnostics)) { diff --git a/src/dotnet/project.json b/src/dotnet/project.json index c029b55fb..35116b1ef 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -52,14 +52,25 @@ }, "System.Diagnostics.TraceSource": "4.0.0", "System.Diagnostics.TextWriterTraceListener": "4.0.0", - "System.Resources.Writer": "4.0.0", "System.Runtime.Serialization.Primitives": "4.1.1", "System.Private.DataContractSerialization": "4.1.1", "System.Text.RegularExpressions": "4.1.0", "Microsoft.Win32.Registry": { "version": "4.0.0", "exclude": "compile" - } + }, + + "MSBuild": "0.1.0-preview-00024-160610", + "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610", + "Microsoft.Build.Targets": "0.1.0-preview-00024-160610", + "Microsoft.Build": "0.1.0-preview-00024-160610", + "Microsoft.Net.Compilers.NetCore": "1.3.0", + "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", + "Microsoft.Cci": "4.0.0-rc3-24128-00", + "Microsoft.Composition": "1.0.30", + "Microsoft.NuGet.Build.Tasks": "1.0.0-alpha-000001" }, "frameworks": { "netcoreapp1.0": { diff --git a/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs b/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs new file mode 100644 index 000000000..58ab13aa7 --- /dev/null +++ b/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs @@ -0,0 +1,42 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using FluentAssertions; +using Microsoft.DotNet.Tools.Test.Utilities; +using Xunit; + +namespace Microsoft.DotNet.Cli.Build3.Tests +{ + public class GivenDotnetBuild3BuildsCsproj : TestBase + { + [Fact] + public void It_builds_a_runnable_output() + { + var testAppName = "MSBuildTestApp"; + var testInstance = TestAssetsManager + .CreateTestInstance(testAppName) + .WithLockFiles(); + + var testProjectDirectory = testInstance.TestRoot; + + var build3Command = new TestCommand("dotnet"); + build3Command.WorkingDirectory = testProjectDirectory; + + build3Command.ExecuteWithCapturedOutput("build3") + .Should() + .Pass(); + + var configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug"; + var outputDll = Path.Combine(testProjectDirectory, "bin", configuration, "netcoreapp1.0", $"{testAppName}.dll"); + var outputRunCommand = new TestCommand("dotnet"); + + outputRunCommand.ExecuteWithCapturedOutput(outputDll) + .Should() + .Pass() + .And + .HaveStdOutContaining("Hello World"); + } + } +} diff --git a/test/dotnet-build3.Tests/dotnet-build3.Tests.xproj b/test/dotnet-build3.Tests/dotnet-build3.Tests.xproj new file mode 100644 index 000000000..eddb02bc1 --- /dev/null +++ b/test/dotnet-build3.Tests/dotnet-build3.Tests.xproj @@ -0,0 +1,21 @@ + + + + 14.0.23107 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 49d7318e-d198-4e2b-bbea-3a24d805f88d + Microsoft.DotNet.Cli.Build3.Tests + ..\..\artifacts\obj\$(MSBuildProjectName) + ..\..\artifacts\bin + + + 2.0 + + + + + + \ No newline at end of file diff --git a/test/dotnet-build3.Tests/project.json b/test/dotnet-build3.Tests/project.json new file mode 100644 index 000000000..b2644e92e --- /dev/null +++ b/test/dotnet-build3.Tests/project.json @@ -0,0 +1,24 @@ +{ + "version": "1.0.0-*", + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "System.Runtime.Serialization.Primitives": "4.1.1", + "Microsoft.DotNet.Tools.Tests.Utilities": { + "target": "project" + }, + "xunit": "2.1.0", + "dotnet-test-xunit": "1.0.0-rc2-192208-24" + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dotnet5.4", + "portable-net451+win8" + ] + } + }, + "testRunner": "xunit" +} From 15b2a9d9db29ac3fa3747c1035384b065a550e90 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Fri, 24 Jun 2016 13:06:13 -0500 Subject: [PATCH 002/165] Convert all CLI build targets to MSBuild Tasks. (#3690) --- Microsoft.DotNet.Cli.sln | 3 +- build.proj | 29 +- .../BuildSetup.cs | 7 +- .../CurrentPlatform.cs | 6 + .../dotnet-cli-build/CompileTargets.cs | 23 +- build_projects/dotnet-cli-build/DebTargets.cs | 190 +++++----- .../dotnet-cli-build/InstallerTargets.cs | 12 +- build_projects/dotnet-cli-build/MsiTargets.cs | 95 ++--- .../dotnet-cli-build/PackageTargets.cs | 76 ++-- build_projects/dotnet-cli-build/PkgTargets.cs | 145 ++++---- .../dotnet-cli-build/PrepareTargets.cs | 340 ++++++++++-------- .../dotnet-cli-build/PublishTargets.cs | 135 ++++--- .../dotnet-cli-build/TestTargets.cs | 118 +++--- build_projects/dotnet-cli-build/build.ps1 | 33 +- build_projects/dotnet-cli-build/build.sh | 20 +- build_projects/dotnet-cli-build/project.json | 18 +- .../Utils/EnvVars.cs | 2 +- 17 files changed, 687 insertions(+), 565 deletions(-) diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 9c714a1ca..bd9c2c513 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -1,12 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.25123.0 +VisualStudioVersion = 14.0.25402.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED2FE3E2-F7E7-4389-8231-B65123F2076F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5A29E8E3-A0FC-4C57-81DD-297B56D1A119}" ProjectSection(SolutionItems) = preProject + build.proj = build.proj global.json = global.json NuGet.Config = NuGet.Config EndProjectSection diff --git a/build.proj b/build.proj index 51bd78d57..6fe36e4eb 100644 --- a/build.proj +++ b/build.proj @@ -11,39 +11,44 @@ .ps1 .sh - .exe - + -NoRun + --norun Prepare;Compile;Test;Package;Publish + $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build + $(CLIBuildFileName).dll - - - $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build$(PlatformExeExtension) - + - + + + + + + + - + - + - + - + - + \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs index 17847ccaa..eedd6d562 100644 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs +++ b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs @@ -50,6 +50,11 @@ namespace Microsoft.DotNet.Cli.Build.Framework return UseTargets(CollectTargets(typeof(T))); } + public BuildContext CreateBuildContext() + { + return new BuildContext(_targets, Directory.GetCurrentDirectory()); + } + public int Run(string[] args) { var targets = new[] { BuildContext.DefaultTarget }; @@ -68,7 +73,7 @@ namespace Microsoft.DotNet.Cli.Build.Framework } } - var context = new BuildContext(_targets, Directory.GetCurrentDirectory()); + var context = CreateBuildContext(); BuildTargetResult result = null; try { diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/CurrentPlatform.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/CurrentPlatform.cs index bed1206c5..99603cb8b 100644 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/CurrentPlatform.cs +++ b/build_projects/Microsoft.DotNet.Cli.Build.Framework/CurrentPlatform.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Runtime.InteropServices; using Microsoft.DotNet.InternalAbstractions; @@ -105,6 +106,11 @@ namespace Microsoft.DotNet.Cli.Build.Framework return IsPlatform(platform) && (version == null || IsVersion(version)); } + public static bool IsAnyPlatform(params BuildPlatform[] platforms) + { + return platforms.Any(p => IsPlatform(p)); + } + public static bool IsPlatform(BuildPlatform platform) { switch (platform) diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs index 19286231b..6ed367568 100644 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ b/build_projects/dotnet-cli-build/CompileTargets.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; +using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; using Newtonsoft.Json; @@ -13,7 +11,7 @@ using static Microsoft.DotNet.Cli.Build.FS; namespace Microsoft.DotNet.Cli.Build { - public class CompileTargets + public class CompileTargets : Task { public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; @@ -58,20 +56,24 @@ namespace Microsoft.DotNet.Cli.Build public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - // Updates the stage 2 with recent changes. - [Target(nameof(PrepareTargets.Init), nameof(CompileStage2))] - public static BuildTargetResult UpdateBuild(BuildTargetContext c) + public override bool Execute() { - return c.Success(); + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Compile(c).Success; } - [Target(nameof(PrepareTargets.Init), nameof(CompileStage1), nameof(CompileStage2))] + [Target] public static BuildTargetResult Compile(BuildTargetContext c) { + PrepareTargets.Init(c); + CompileStage1(c); + CompileStage2(c); + return c.Success(); } - [Target(nameof(PrepareTargets.Init))] public static BuildTargetResult CompileStage1(BuildTargetContext c) { CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); @@ -94,7 +96,6 @@ namespace Microsoft.DotNet.Cli.Build return result; } - [Target(nameof(PrepareTargets.Init))] public static BuildTargetResult CompileStage2(BuildTargetContext c) { var configuration = c.BuildContext.Get("Configuration"); diff --git a/build_projects/dotnet-cli-build/DebTargets.cs b/build_projects/dotnet-cli-build/DebTargets.cs index 3a0b599ab..8af22d83d 100644 --- a/build_projects/dotnet-cli-build/DebTargets.cs +++ b/build_projects/dotnet-cli-build/DebTargets.cs @@ -12,71 +12,80 @@ namespace Microsoft.DotNet.Cli.Build { public class DebTargets { - [Target(nameof(GenerateSdkDeb))] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult GenerateDebs(BuildTargetContext c) { + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) + { + GenerateSdkDeb(c); + } + return c.Success(); } - [Target(nameof(InstallSharedFramework))] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult GenerateSdkDeb(BuildTargetContext c) { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - var channel = c.BuildContext.Get("Channel").ToLower(); - var packageName = CliMonikers.GetSdkDebianPackageName(c); - var version = c.BuildContext.Get("BuildVersion").NuGetVersion; - var debFile = c.BuildContext.Get("SdkInstallerFile"); - var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); - var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; - var sdkPublishRoot = c.BuildContext.Get("CLISDKRoot"); - var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); + InstallSharedFramework(c); - var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools + // So we need to skip this target if the tools aren't present. + // https://github.com/dotnet/core-setup/issues/167 + if (DebuildNotPresent()) + { + c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); + return c.Success(); + } - if (Directory.Exists(objRoot)) - { - Directory.Delete(objRoot, true); + var channel = c.BuildContext.Get("Channel").ToLower(); + var packageName = CliMonikers.GetSdkDebianPackageName(c); + var version = c.BuildContext.Get("BuildVersion").NuGetVersion; + var debFile = c.BuildContext.Get("SdkInstallerFile"); + var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); + var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; + var sdkPublishRoot = c.BuildContext.Get("CLISDKRoot"); + var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); + + var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); + + if (Directory.Exists(objRoot)) + { + Directory.Delete(objRoot, true); + } + + Directory.CreateDirectory(objRoot); + + Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), + "-v", version, + "-i", sdkPublishRoot, + "-o", debFile, + "-p", packageName, + "-b", Monikers.CLISdkBrandName, + "-m", manPagesDir, + "--framework-debian-package-name", sharedFxDebianPackageName, + "--framework-nuget-name", Monikers.SharedFrameworkName, + "--framework-nuget-version", CliDependencyVersions.SharedFrameworkVersion, + "--previous-version-url", previousVersionURL, + "--obj-root", objRoot) + .Execute() + .EnsureSuccessful(); } - Directory.CreateDirectory(objRoot); - - Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), - "-v", version, - "-i", sdkPublishRoot, - "-o", debFile, - "-p", packageName, - "-b", Monikers.CLISdkBrandName, - "-m", manPagesDir, - "--framework-debian-package-name", sharedFxDebianPackageName, - "--framework-nuget-name", Monikers.SharedFrameworkName, - "--framework-nuget-version", CliDependencyVersions.SharedFrameworkVersion, - "--previous-version-url", previousVersionURL, - "--obj-root", objRoot) - .Execute() - .EnsureSuccessful(); return c.Success(); } - [Target(nameof(InstallSDK), - nameof(RunE2ETest), - nameof(RemovePackages))] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult TestDebInstaller(BuildTargetContext c) { + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) + { + InstallSDK(c); + RunE2ETest(c); + RemovePackages(c); + } + return c.Success(); } - [Target] public static BuildTargetResult InstallSharedHost(BuildTargetContext c) { // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools @@ -93,9 +102,10 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(InstallSharedHost))] public static BuildTargetResult InstallHostFxr(BuildTargetContext c) { + InstallSharedHost(c); + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 @@ -110,9 +120,10 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(InstallHostFxr))] public static BuildTargetResult InstallSharedFramework(BuildTargetContext c) { + InstallHostFxr(c); + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 @@ -127,9 +138,10 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(InstallSharedFramework))] public static BuildTargetResult InstallSDK(BuildTargetContext c) { + InstallSharedFramework(c); + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 @@ -144,58 +156,60 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult RunE2ETest(BuildTargetContext c) { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools + // So we need to skip this target if the tools aren't present. + // https://github.com/dotnet/core-setup/issues/167 + if (DebuildNotPresent()) + { + c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); + return c.Success(); + } - Directory.SetCurrentDirectory(Path.Combine(Dirs.RepoRoot, "test", "EndToEnd")); - - Cmd("dotnet", "build") - .Execute() - .EnsureSuccessful(); - - var testResultsPath = Path.Combine(Dirs.Output, "obj", "debian", "test", "debian-endtoend-testResults.xml"); - - Cmd("dotnet", "test", "-xml", testResultsPath) - .Execute() - .EnsureSuccessful(); + Directory.SetCurrentDirectory(Path.Combine(Dirs.RepoRoot, "test", "EndToEnd")); + + Cmd("dotnet", "build") + .Execute() + .EnsureSuccessful(); + + var testResultsPath = Path.Combine(Dirs.Output, "obj", "debian", "test", "debian-endtoend-testResults.xml"); + + Cmd("dotnet", "test", "-xml", testResultsPath) + .Execute() + .EnsureSuccessful(); + } return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult RemovePackages(BuildTargetContext c) { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } + // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools + // So we need to skip this target if the tools aren't present. + // https://github.com/dotnet/core-setup/issues/167 + if (DebuildNotPresent()) + { + c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); + return c.Success(); + } - IEnumerable orderedPackageNames = new List() - { - CliMonikers.GetSdkDebianPackageName(c), - Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion), - Monikers.GetDebianHostFxrPackageName(CliDependencyVersions.HostFxrVersion), - Monikers.GetDebianSharedHostPackageName(c) - }; - - foreach(var packageName in orderedPackageNames) - { - RemovePackage(packageName); + IEnumerable orderedPackageNames = new List() + { + CliMonikers.GetSdkDebianPackageName(c), + Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion), + Monikers.GetDebianHostFxrPackageName(CliDependencyVersions.HostFxrVersion), + Monikers.GetDebianSharedHostPackageName(c) + }; + + foreach (var packageName in orderedPackageNames) + { + RemovePackage(packageName); + } } return c.Success(); diff --git a/build_projects/dotnet-cli-build/InstallerTargets.cs b/build_projects/dotnet-cli-build/InstallerTargets.cs index f520d40e1..fd1acdc80 100644 --- a/build_projects/dotnet-cli-build/InstallerTargets.cs +++ b/build_projects/dotnet-cli-build/InstallerTargets.cs @@ -4,19 +4,19 @@ namespace Microsoft.DotNet.Cli.Build { public class InstallerTargets { - [Target(nameof(MsiTargets.GenerateMsis), - nameof(MsiTargets.GenerateBundles), - nameof(PkgTargets.GeneratePkgs), - nameof(DebTargets.GenerateDebs))] public static BuildTargetResult GenerateInstaller(BuildTargetContext c) { + MsiTargets.GenerateMsisAndBundles(c); + PkgTargets.GeneratePkgs(c); + DebTargets.GenerateDebs(c); + return c.Success(); } - [Target(nameof(DebTargets.TestDebInstaller))] public static BuildTargetResult TestInstaller(BuildTargetContext c) - { + DebTargets.TestDebInstaller(c); + return c.Success(); } } diff --git a/build_projects/dotnet-cli-build/MsiTargets.cs b/build_projects/dotnet-cli-build/MsiTargets.cs index 1e7ee4b21..a913a95bf 100644 --- a/build_projects/dotnet-cli-build/MsiTargets.cs +++ b/build_projects/dotnet-cli-build/MsiTargets.cs @@ -75,75 +75,78 @@ namespace Microsoft.DotNet.Cli.Build } } - [Target] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult InitMsi(BuildTargetContext c) { - SdkBundle = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); - SdkMsi = Path.ChangeExtension(SdkBundle, "msi"); - SdkEngine = GetEngineName(SdkBundle); + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + SdkBundle = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); + SdkMsi = Path.ChangeExtension(SdkBundle, "msi"); + SdkEngine = GetEngineName(SdkBundle); - SharedFrameworkMsi = Path.ChangeExtension(c.BuildContext.Get("SharedFrameworkInstallerFile"), "msi"); - HostFxrMsi = Path.ChangeExtension(c.BuildContext.Get("HostFxrInstallerFile"), "msi"); - SharedHostMsi = Path.ChangeExtension(c.BuildContext.Get("SharedHostInstallerFile"), "msi"); + SharedFrameworkMsi = Path.ChangeExtension(c.BuildContext.Get("SharedFrameworkInstallerFile"), "msi"); + HostFxrMsi = Path.ChangeExtension(c.BuildContext.Get("HostFxrInstallerFile"), "msi"); + SharedHostMsi = Path.ChangeExtension(c.BuildContext.Get("SharedHostInstallerFile"), "msi"); - var buildVersion = c.BuildContext.Get("BuildVersion"); - MsiVersion = buildVersion.GenerateMsiVersion(); - CliDisplayVersion = buildVersion.SimpleVersion; - CliNugetVersion = buildVersion.NuGetVersion; + var buildVersion = c.BuildContext.Get("BuildVersion"); + MsiVersion = buildVersion.GenerateMsiVersion(); + CliDisplayVersion = buildVersion.SimpleVersion; + CliNugetVersion = buildVersion.NuGetVersion; + + AcquireWix(c); + } - AcquireWix(c); return c.Success(); } - - [Target(nameof(MsiTargets.InitMsi), - nameof(GenerateCliSdkMsi))] - [BuildPlatforms(BuildPlatform.Windows)] - public static BuildTargetResult GenerateMsis(BuildTargetContext c) + public static BuildTargetResult GenerateMsisAndBundles(BuildTargetContext c) { + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + InitMsi(c); + GenerateCliSdkMsi(c); + GenerateCliSdkBundle(c); + } + return c.Success(); } - [Target(nameof(MsiTargets.InitMsi), - nameof(GenerateCliSdkBundle))] - [BuildPlatforms(BuildPlatform.Windows)] - public static BuildTargetResult GenerateBundles(BuildTargetContext c) - { - return c.Success(); - } - - [Target] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult GenerateCliSdkMsi(BuildTargetContext c) { - var cliSdkRoot = c.BuildContext.Get("CLISDKRoot"); - var upgradeCode = Utils.GenerateGuidFromName(SdkMsi).ToString().ToUpper(); - var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + var cliSdkRoot = c.BuildContext.Get("CLISDKRoot"); + var upgradeCode = Utils.GenerateGuidFromName(SdkMsi).ToString().ToUpper(); + var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; + + Cmd("powershell", "-NoProfile", "-NoLogo", + Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatemsi.ps1"), + cliSdkRoot, SdkMsi, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) + .Execute() + .EnsureSuccessful(); + } - Cmd("powershell", "-NoProfile", "-NoLogo", - Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatemsi.ps1"), - cliSdkRoot, SdkMsi, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) - .Execute() - .EnsureSuccessful(); return c.Success(); } - [Target(nameof(MsiTargets.InitMsi))] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult GenerateCliSdkBundle(BuildTargetContext c) { - var upgradeCode = Utils.GenerateGuidFromName(SdkBundle).ToString().ToUpper(); - var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + var upgradeCode = Utils.GenerateGuidFromName(SdkBundle).ToString().ToUpper(); + var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; + + Cmd("powershell", "-NoProfile", "-NoLogo", + Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatebundle.ps1"), + SdkMsi, SharedFrameworkMsi, HostFxrMsi, SharedHostMsi, SdkBundle, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) + .EnvironmentVariable("Stage2Dir", Dirs.Stage2) + .Execute() + .EnsureSuccessful(); + } - Cmd("powershell", "-NoProfile", "-NoLogo", - Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatebundle.ps1"), - SdkMsi, SharedFrameworkMsi, HostFxrMsi, SharedHostMsi, SdkBundle, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) - .EnvironmentVariable("Stage2Dir", Dirs.Stage2) - .Execute() - .EnsureSuccessful(); return c.Success(); } + // TODO: The following "Engine" tasks need to be separate MSBuild targets so the Windows + // VSO build can invoke them directly for signing. [Target(nameof(MsiTargets.InitMsi))] [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult ExtractEngineFromBundle(BuildTargetContext c) diff --git a/build_projects/dotnet-cli-build/PackageTargets.cs b/build_projects/dotnet-cli-build/PackageTargets.cs index 7514c78ae..14946c837 100644 --- a/build_projects/dotnet-cli-build/PackageTargets.cs +++ b/build_projects/dotnet-cli-build/PackageTargets.cs @@ -3,13 +3,14 @@ using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; +using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; namespace Microsoft.DotNet.Cli.Build { - public static class PackageTargets + public class PackageTargets : Task { public static readonly string[] ProjectsToPack = new string[] { @@ -26,32 +27,44 @@ namespace Microsoft.DotNet.Cli.Build "Microsoft.Extensions.Testing.Abstractions" }; - [Target(nameof(PackageTargets.CopyCLISDKLayout), - nameof(PackageTargets.CopySharedHostLayout), - nameof(PackageTargets.CopyHostFxrLayout), - nameof(PackageTargets.CopySharedFxLayout), - nameof(PackageTargets.CopyCombinedFrameworkSDKHostLayout), - nameof(PackageTargets.CopyCombinedFrameworkSDKLayout))] + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Package(c).Success; + } + public static BuildTargetResult InitPackage(BuildTargetContext c) { + CopyCLISDKLayout(c); + CopySharedHostLayout(c); + CopyHostFxrLayout(c); + CopySharedFxLayout(c); + CopyCombinedFrameworkSDKHostLayout(c); + CopyCombinedFrameworkSDKLayout(c); + Directory.CreateDirectory(Dirs.Packages); return c.Success(); } - [Target(nameof(PrepareTargets.Init), - nameof(PackageTargets.InitPackage), - nameof(PackageTargets.GenerateVersionBadge), - nameof(PackageTargets.GenerateCompressedFile), - nameof(InstallerTargets.GenerateInstaller), - nameof(PackageTargets.GenerateNugetPackages), - nameof(InstallerTargets.TestInstaller))] - [Environment("DOTNET_BUILD_SKIP_PACKAGING", null, "0", "false")] + [Target] public static BuildTargetResult Package(BuildTargetContext c) { + if (!EnvVars.GetBool("DOTNET_BUILD_SKIP_PACKAGING")) + { + PrepareTargets.Init(c); + InitPackage(c); + GenerateVersionBadge(c); + GenerateCompressedFile(c); + InstallerTargets.GenerateInstaller(c); + GenerateNugetPackages(c); + InstallerTargets.TestInstaller(c); + } + return c.Success(); } - [Target] public static BuildTargetResult GenerateVersionBadge(BuildTargetContext c) { var buildVersion = c.BuildContext.Get("BuildVersion"); @@ -65,7 +78,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopyCLISDKLayout(BuildTargetContext c) { var cliSdkRoot = Path.Combine(Dirs.Output, "obj", "clisdk"); @@ -82,7 +94,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopySharedHostLayout(BuildTargetContext c) { var sharedHostRoot = Path.Combine(Dirs.Output, "obj", "sharedHost"); @@ -104,7 +115,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopyHostFxrLayout(BuildTargetContext c) { var hostFxrRoot = Path.Combine(Dirs.Output, "obj", "hostFxr"); @@ -121,7 +131,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopySharedFxLayout(BuildTargetContext c) { var sharedFxRoot = Path.Combine(Dirs.Output, "obj", "sharedFx"); @@ -138,7 +147,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopyCombinedFrameworkSDKHostLayout(BuildTargetContext c) { var combinedRoot = Path.Combine(Dirs.Output, "obj", "combined-framework-sdk-host"); @@ -163,7 +171,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CopyCombinedFrameworkSDKLayout(BuildTargetContext c) { var combinedRoot = Path.Combine(Dirs.Output, "obj", "combined-framework-sdk"); @@ -182,35 +189,38 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(PackageTargets.GenerateZip), nameof(PackageTargets.GenerateTarBall))] public static BuildTargetResult GenerateCompressedFile(BuildTargetContext c) { + GenerateZip(c); + GenerateTarBall(c); + return c.Success(); } - [Target(nameof(PackageTargets.InitPackage))] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult GenerateZip(BuildTargetContext c) { - CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); - CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKRoot"), c.BuildContext.Get("CombinedFrameworkSDKCompressedFile")); - CreateZipFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); + CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKRoot"), c.BuildContext.Get("CombinedFrameworkSDKCompressedFile")); + CreateZipFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); + } return c.Success(); } - [Target(nameof(PackageTargets.InitPackage))] - [BuildPlatforms(BuildPlatform.Unix)] public static BuildTargetResult GenerateTarBall(BuildTargetContext c) { - CreateTarBallFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); + if (CurrentPlatform.IsPlatform(BuildPlatform.Unix)) + { + CreateTarBallFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); - CreateTarBallFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); + CreateTarBallFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); + } return c.Success(); } - [Target] public static BuildTargetResult GenerateNugetPackages(BuildTargetContext c) { var versionSuffix = c.BuildContext.Get("BuildVersion").CommitCountString; diff --git a/build_projects/dotnet-cli-build/PkgTargets.cs b/build_projects/dotnet-cli-build/PkgTargets.cs index 4f0e5b639..aac8a54d0 100644 --- a/build_projects/dotnet-cli-build/PkgTargets.cs +++ b/build_projects/dotnet-cli-build/PkgTargets.cs @@ -22,102 +22,111 @@ namespace Microsoft.DotNet.Cli.Build public static string CLISdkNugetVersion { get; set; } public static string HostFxrComponentId { get; set; } - [Target] - [BuildPlatforms(BuildPlatform.OSX)] public static BuildTargetResult InitPkg(BuildTargetContext c) { - PkgsIntermediateDir = Path.Combine(Dirs.Packages, "intermediate"); - Directory.CreateDirectory(PkgsIntermediateDir); + if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) + { + PkgsIntermediateDir = Path.Combine(Dirs.Packages, "intermediate"); + Directory.CreateDirectory(PkgsIntermediateDir); - SharedHostComponentId = $"com.microsoft.dotnet.sharedhost.component.osx.x64"; - HostFxrComponentId = $"com.microsoft.dotnet.hostfxr.component.osx.x64"; + SharedHostComponentId = $"com.microsoft.dotnet.sharedhost.component.osx.x64"; + HostFxrComponentId = $"com.microsoft.dotnet.hostfxr.component.osx.x64"; - string sharedFrameworkNugetName = Monikers.SharedFrameworkName; - SharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - SharedFxComponentId = $"com.microsoft.dotnet.sharedframework.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.component.osx.x64"; - SharedFxPkgId = $"com.microsoft.dotnet.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.osx.x64"; + string sharedFrameworkNugetName = Monikers.SharedFrameworkName; + SharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + SharedFxComponentId = $"com.microsoft.dotnet.sharedframework.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.component.osx.x64"; + SharedFxPkgId = $"com.microsoft.dotnet.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.osx.x64"; - CLISdkNugetVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; - CLISdkComponentId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.component.osx.x64"; - CLISdkPkgId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.osx.x64"; + CLISdkNugetVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; + CLISdkComponentId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.component.osx.x64"; + CLISdkPkgId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.osx.x64"; + } return c.Success(); } - [Target(nameof(InitPkg), nameof(GenerateCLISdkProductArchive))] - [BuildPlatforms(BuildPlatform.OSX)] public static BuildTargetResult GeneratePkgs(BuildTargetContext c) { + if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) + { + InitPkg(c); + GenerateCLISdkProductArchive(c); + } + return c.Success(); } - [Target(nameof(GenerateCLISdkPkg))] - [BuildPlatforms(BuildPlatform.OSX)] public static BuildTargetResult GenerateCLISdkProductArchive(BuildTargetContext c) { - string resourcePath = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "resources"); - string outFilePath = Path.Combine(Dirs.Packages, c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile")); + if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) + { + GenerateCLISdkPkg(c); - // Copy SharedFX and host installers in the correct place - var sharedFrameworkPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedFxComponentId}.pkg"); - var sharedHostPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedHostComponentId}.pkg"); - var hostFxrPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{HostFxrComponentId}.pkg"); + string resourcePath = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "resources"); + string outFilePath = Path.Combine(Dirs.Packages, c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile")); + + // Copy SharedFX and host installers in the correct place + var sharedFrameworkPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedFxComponentId}.pkg"); + var sharedHostPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedHostComponentId}.pkg"); + var hostFxrPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{HostFxrComponentId}.pkg"); - File.Copy(c.BuildContext.Get("SharedFrameworkInstallerFile"), sharedFrameworkPkgIntermediatePath, true); - File.Copy(c.BuildContext.Get("SharedHostInstallerFile"), sharedHostPkgIntermediatePath, true); - File.Copy(c.BuildContext.Get("HostFxrInstallerFile"), hostFxrPkgIntermediatePath, true); + File.Copy(c.BuildContext.Get("SharedFrameworkInstallerFile"), sharedFrameworkPkgIntermediatePath, true); + File.Copy(c.BuildContext.Get("SharedHostInstallerFile"), sharedHostPkgIntermediatePath, true); + File.Copy(c.BuildContext.Get("HostFxrInstallerFile"), hostFxrPkgIntermediatePath, true); - string inputDistTemplatePath = Path.Combine( - Dirs.RepoRoot, - "packaging", - "osx", - "clisdk", - "Distribution-Template"); - string distTemplate = File.ReadAllText(inputDistTemplatePath); - string distributionPath = Path.Combine(PkgsIntermediateDir, "CLI-SDK-Formatted-Distribution-Template.xml"); - string formattedDistContents = - distTemplate.Replace("{SharedFxComponentId}", SharedFxComponentId) - .Replace("{SharedHostComponentId}", SharedHostComponentId) - .Replace("{HostFxrComponentId}", HostFxrComponentId) - .Replace("{CLISdkComponentId}", CLISdkComponentId) - .Replace("{CLISdkNugetVersion}", CLISdkNugetVersion) - .Replace("{CLISdkBrandName}", Monikers.CLISdkBrandName) - .Replace("{SharedFxBrandName}", Monikers.SharedFxBrandName) - .Replace("{SharedHostBrandName}", Monikers.SharedHostBrandName) - .Replace("{HostFxrBrandName}", Monikers.HostFxrBrandName); - File.WriteAllText(distributionPath, formattedDistContents); + string inputDistTemplatePath = Path.Combine( + Dirs.RepoRoot, + "packaging", + "osx", + "clisdk", + "Distribution-Template"); + string distTemplate = File.ReadAllText(inputDistTemplatePath); + string distributionPath = Path.Combine(PkgsIntermediateDir, "CLI-SDK-Formatted-Distribution-Template.xml"); + string formattedDistContents = + distTemplate.Replace("{SharedFxComponentId}", SharedFxComponentId) + .Replace("{SharedHostComponentId}", SharedHostComponentId) + .Replace("{HostFxrComponentId}", HostFxrComponentId) + .Replace("{CLISdkComponentId}", CLISdkComponentId) + .Replace("{CLISdkNugetVersion}", CLISdkNugetVersion) + .Replace("{CLISdkBrandName}", Monikers.CLISdkBrandName) + .Replace("{SharedFxBrandName}", Monikers.SharedFxBrandName) + .Replace("{SharedHostBrandName}", Monikers.SharedHostBrandName) + .Replace("{HostFxrBrandName}", Monikers.HostFxrBrandName); + File.WriteAllText(distributionPath, formattedDistContents); - Cmd("productbuild", - "--version", CLISdkNugetVersion, - "--identifier", CLISdkPkgId, - "--package-path", PkgsIntermediateDir, - "--resources", resourcePath, - "--distribution", distributionPath, - outFilePath) - .Execute() - .EnsureSuccessful(); + Cmd("productbuild", + "--version", CLISdkNugetVersion, + "--identifier", CLISdkPkgId, + "--package-path", PkgsIntermediateDir, + "--resources", resourcePath, + "--distribution", distributionPath, + outFilePath) + .Execute() + .EnsureSuccessful(); + } return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.OSX)] public static BuildTargetResult GenerateCLISdkPkg(BuildTargetContext c) { - string outFilePath = Path.Combine(PkgsIntermediateDir, CLISdkComponentId + ".pkg"); - string installLocation = "/usr/local/share/dotnet"; - string scriptsLocation = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "scripts"); + if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) + { + string outFilePath = Path.Combine(PkgsIntermediateDir, CLISdkComponentId + ".pkg"); + string installLocation = "/usr/local/share/dotnet"; + string scriptsLocation = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "scripts"); - Cmd("pkgbuild", - "--root", c.BuildContext.Get("CLISDKRoot"), - "--identifier", CLISdkComponentId, - "--version", CLISdkNugetVersion, - "--install-location", installLocation, - "--scripts", scriptsLocation, - outFilePath) - .Execute() - .EnsureSuccessful(); + Cmd("pkgbuild", + "--root", c.BuildContext.Get("CLISDKRoot"), + "--identifier", CLISdkComponentId, + "--version", CLISdkNugetVersion, + "--install-location", installLocation, + "--scripts", scriptsLocation, + outFilePath) + .Execute() + .EnsureSuccessful(); + } return c.Success(); } diff --git a/build_projects/dotnet-cli-build/PrepareTargets.cs b/build_projects/dotnet-cli-build/PrepareTargets.cs index faf9730f0..7661ba186 100644 --- a/build_projects/dotnet-cli-build/PrepareTargets.cs +++ b/build_projects/dotnet-cli-build/PrepareTargets.cs @@ -13,35 +13,71 @@ using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; using static Microsoft.DotNet.Cli.Build.FS; using static Microsoft.DotNet.Cli.Build.Utils; using System.IO.Compression; +using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class PrepareTargets + public class PrepareTargets : Task { - [Target(nameof(Init), nameof(DownloadHostAndSharedFxArtifacts), nameof(RestorePackages), nameof(ZipTemplates))] - public static BuildTargetResult Prepare(BuildTargetContext c) => c.Success(); + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); - [Target(nameof(CheckPrereqCmakePresent), nameof(CheckPlatformDependencies))] - public static BuildTargetResult CheckPrereqs(BuildTargetContext c) => c.Success(); + return Prepare(c).Success; + } - [Target(nameof(CheckCoreclrPlatformDependencies), nameof(CheckInstallerBuildPlatformDependencies))] - public static BuildTargetResult CheckPlatformDependencies(BuildTargetContext c) => c.Success(); + [Target] + public static BuildTargetResult Prepare(BuildTargetContext c) + { + Init(c); + DownloadHostAndSharedFxArtifacts(c); + RestorePackages(c); + ZipTemplates(c); - [Target(nameof(CheckUbuntuCoreclrAndCoreFxDependencies), nameof(CheckCentOSCoreclrAndCoreFxDependencies))] - public static BuildTargetResult CheckCoreclrPlatformDependencies(BuildTargetContext c) => c.Success(); + return c.Success(); + } - [Target(nameof(CheckUbuntuDebianPackageBuildDependencies))] - public static BuildTargetResult CheckInstallerBuildPlatformDependencies(BuildTargetContext c) => c.Success(); + public static BuildTargetResult CheckPrereqs(BuildTargetContext c) + { + CheckPrereqCmakePresent(c); + CheckPlatformDependencies(c); + + return c.Success(); + } + + public static BuildTargetResult CheckPlatformDependencies(BuildTargetContext c) + { + CheckCoreclrPlatformDependencies(c); + CheckInstallerBuildPlatformDependencies(c); + + return c.Success(); + } + + public static BuildTargetResult CheckCoreclrPlatformDependencies(BuildTargetContext c) + { + CheckUbuntuCoreclrAndCoreFxDependencies(c); + CheckCentOSCoreclrAndCoreFxDependencies(c); + + return c.Success(); + } + + public static BuildTargetResult CheckInstallerBuildPlatformDependencies(BuildTargetContext c) + { + CheckUbuntuDebianPackageBuildDependencies(c); + + return c.Success(); + } // All major targets will depend on this in order to ensure variables are set up right if they are run independently - [Target( - nameof(GenerateVersions), - nameof(CheckPrereqs), - nameof(LocateStage0), - nameof(ExpectedBuildArtifacts), - nameof(SetTelemetryProfile))] public static BuildTargetResult Init(BuildTargetContext c) { + GenerateVersions(c); + CheckPrereqs(c); + LocateStage0(c); + ExpectedBuildArtifacts(c); + SetTelemetryProfile(c); + var configEnv = Environment.GetEnvironmentVariable("CONFIGURATION"); if (string.IsNullOrEmpty(configEnv)) @@ -60,7 +96,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult GenerateVersions(BuildTargetContext c) { var commitCount = GitUtils.GetCommitCount(); @@ -86,7 +121,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult ZipTemplates(BuildTargetContext c) { var templateDirectories = Directory.GetDirectories( @@ -106,7 +140,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult LocateStage0(BuildTargetContext c) { // We should have been run in the repo root, so locate the stage 0 relative to current directory @@ -131,7 +164,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult ExpectedBuildArtifacts(BuildTargetContext c) { var config = Environment.GetEnvironmentVariable("CONFIGURATION"); @@ -158,13 +190,15 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target( - nameof(ExpectedBuildArtifacts), - nameof(DownloadHostAndSharedFxArchives), - nameof(DownloadHostAndSharedFxInstallers))] - public static BuildTargetResult DownloadHostAndSharedFxArtifacts(BuildTargetContext c) => c.Success(); + public static BuildTargetResult DownloadHostAndSharedFxArtifacts(BuildTargetContext c) + { + ExpectedBuildArtifacts(c); + DownloadHostAndSharedFxArchives(c); + DownloadHostAndSharedFxInstallers(c); + + return c.Success(); + } - [Target] public static BuildTargetResult DownloadHostAndSharedFxArchives(BuildTargetContext c) { var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; @@ -205,75 +239,75 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Windows, BuildPlatform.OSX, BuildPlatform.Ubuntu)] public static BuildTargetResult DownloadHostAndSharedFxInstallers(BuildTargetContext c) { - var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; - var hostVersion = CliDependencyVersions.SharedHostVersion; - var hostFxrVersion = CliDependencyVersions.HostFxrVersion; - - var sharedFrameworkChannel = CliDependencyVersions.SharedFrameworkChannel; - var sharedHostChannel = CliDependencyVersions.SharedHostChannel; - var hostFxrChannel = CliDependencyVersions.HostFxrChannel; - - var sharedFrameworkInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedFrameworkInstaller"); - var sharedHostInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedHostInstaller"); - var hostFxrInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "hostFxrInstaller"); - - Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDownloadFile)); - Mkdirp(Path.GetDirectoryName(sharedHostInstallerDownloadFile)); - Mkdirp(Path.GetDirectoryName(hostFxrInstallerDownloadFile)); - - if (!File.Exists(sharedFrameworkInstallerDownloadFile)) + if (CurrentPlatform.IsAnyPlatform(BuildPlatform.Windows, BuildPlatform.OSX, BuildPlatform.Ubuntu)) { - var sharedFrameworkInstallerDestinationFile = c.BuildContext.Get("SharedFrameworkInstallerFile"); - Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDestinationFile)); + var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; + var hostVersion = CliDependencyVersions.SharedHostVersion; + var hostFxrVersion = CliDependencyVersions.HostFxrVersion; - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - sharedFrameworkInstallerDestinationFile, - sharedFrameworkChannel, - sharedFrameworkVersion), - sharedFrameworkInstallerDownloadFile).Wait(); + var sharedFrameworkChannel = CliDependencyVersions.SharedFrameworkChannel; + var sharedHostChannel = CliDependencyVersions.SharedHostChannel; + var hostFxrChannel = CliDependencyVersions.HostFxrChannel; - File.Copy(sharedFrameworkInstallerDownloadFile, sharedFrameworkInstallerDestinationFile, true); - } + var sharedFrameworkInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedFrameworkInstaller"); + var sharedHostInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedHostInstaller"); + var hostFxrInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "hostFxrInstaller"); - if (!File.Exists(sharedHostInstallerDownloadFile)) - { - var sharedHostInstallerDestinationFile = c.BuildContext.Get("SharedHostInstallerFile"); - Mkdirp(Path.GetDirectoryName(sharedHostInstallerDestinationFile)); + Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDownloadFile)); + Mkdirp(Path.GetDirectoryName(sharedHostInstallerDownloadFile)); + Mkdirp(Path.GetDirectoryName(hostFxrInstallerDownloadFile)); - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - sharedHostInstallerDestinationFile, - sharedHostChannel, - hostVersion), - sharedHostInstallerDownloadFile).Wait(); + if (!File.Exists(sharedFrameworkInstallerDownloadFile)) + { + var sharedFrameworkInstallerDestinationFile = c.BuildContext.Get("SharedFrameworkInstallerFile"); + Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDestinationFile)); - File.Copy(sharedHostInstallerDownloadFile, sharedHostInstallerDestinationFile, true); - } + AzurePublisher.DownloadFile( + CalculateInstallerBlob( + sharedFrameworkInstallerDestinationFile, + sharedFrameworkChannel, + sharedFrameworkVersion), + sharedFrameworkInstallerDownloadFile).Wait(); - if (!File.Exists(hostFxrInstallerDownloadFile)) - { - var hostFxrInstallerDestinationFile = c.BuildContext.Get("HostFxrInstallerFile"); - Mkdirp(Path.GetDirectoryName(hostFxrInstallerDestinationFile)); + File.Copy(sharedFrameworkInstallerDownloadFile, sharedFrameworkInstallerDestinationFile, true); + } - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - hostFxrInstallerDestinationFile, - hostFxrChannel, - hostFxrVersion), - hostFxrInstallerDownloadFile).Wait(); + if (!File.Exists(sharedHostInstallerDownloadFile)) + { + var sharedHostInstallerDestinationFile = c.BuildContext.Get("SharedHostInstallerFile"); + Mkdirp(Path.GetDirectoryName(sharedHostInstallerDestinationFile)); - File.Copy(hostFxrInstallerDownloadFile, hostFxrInstallerDestinationFile, true); + AzurePublisher.DownloadFile( + CalculateInstallerBlob( + sharedHostInstallerDestinationFile, + sharedHostChannel, + hostVersion), + sharedHostInstallerDownloadFile).Wait(); + + File.Copy(sharedHostInstallerDownloadFile, sharedHostInstallerDestinationFile, true); + } + + if (!File.Exists(hostFxrInstallerDownloadFile)) + { + var hostFxrInstallerDestinationFile = c.BuildContext.Get("HostFxrInstallerFile"); + Mkdirp(Path.GetDirectoryName(hostFxrInstallerDestinationFile)); + + AzurePublisher.DownloadFile( + CalculateInstallerBlob( + hostFxrInstallerDestinationFile, + hostFxrChannel, + hostFxrVersion), + hostFxrInstallerDownloadFile).Wait(); + + File.Copy(hostFxrInstallerDownloadFile, hostFxrInstallerDestinationFile, true); + } } return c.Success(); } - [Target] public static BuildTargetResult CheckPackageCache(BuildTargetContext c) { var ciBuild = string.Equals(Environment.GetEnvironmentVariable("CI_BUILD"), "1", StringComparison.Ordinal); @@ -327,9 +361,10 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(CheckPackageCache))] public static BuildTargetResult RestorePackages(BuildTargetContext c) { + CheckPackageCache(c); + var dotnet = DotNetCli.Stage0; dotnet.Restore("--verbosity", "verbose", "--disable-parallel") @@ -344,92 +379,99 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu, "14.04")] public static BuildTargetResult CheckUbuntuDebianPackageBuildDependencies(BuildTargetContext c) { - - var messageBuilder = new StringBuilder(); - var aptDependencyUtility = new AptDependencyUtility(); - - - foreach (var package in PackageDependencies.DebianPackageBuildDependencies) + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) { - if (!AptDependencyUtility.PackageIsInstalled(package)) + var messageBuilder = new StringBuilder(); + var aptDependencyUtility = new AptDependencyUtility(); + + + foreach (var package in PackageDependencies.DebianPackageBuildDependencies) { - messageBuilder.Append($"Error: Debian package build dependency {package} missing."); - messageBuilder.Append(Environment.NewLine); - messageBuilder.Append($"-> install with apt-get install {package}"); - messageBuilder.Append(Environment.NewLine); + if (!AptDependencyUtility.PackageIsInstalled(package)) + { + messageBuilder.Append($"Error: Debian package build dependency {package} missing."); + messageBuilder.Append(Environment.NewLine); + messageBuilder.Append($"-> install with apt-get install {package}"); + messageBuilder.Append(Environment.NewLine); + } + } + + if (messageBuilder.Length == 0) + { + return c.Success(); + } + else + { + return c.Failed(messageBuilder.ToString()); } } - if (messageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(messageBuilder.ToString()); - } + return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu, "14.04")] public static BuildTargetResult CheckUbuntuCoreclrAndCoreFxDependencies(BuildTargetContext c) { - var errorMessageBuilder = new StringBuilder(); - var stage0 = DotNetCli.Stage0.BinPath; - - foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) { - if (!AptDependencyUtility.PackageIsInstalled(package)) + var errorMessageBuilder = new StringBuilder(); + var stage0 = DotNetCli.Stage0.BinPath; + + foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with apt-get install {package}"); - errorMessageBuilder.Append(Environment.NewLine); + if (!AptDependencyUtility.PackageIsInstalled(package)) + { + errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); + errorMessageBuilder.Append(Environment.NewLine); + errorMessageBuilder.Append($"-> install with apt-get install {package}"); + errorMessageBuilder.Append(Environment.NewLine); + } + } + + if (errorMessageBuilder.Length == 0) + { + return c.Success(); + } + else + { + return c.Failed(errorMessageBuilder.ToString()); } } - if (errorMessageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(errorMessageBuilder.ToString()); - } + return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.CentOS)] public static BuildTargetResult CheckCentOSCoreclrAndCoreFxDependencies(BuildTargetContext c) { - var errorMessageBuilder = new StringBuilder(); - - foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) + if (CurrentPlatform.IsPlatform(BuildPlatform.CentOS)) { - if (!YumDependencyUtility.PackageIsInstalled(package)) + var errorMessageBuilder = new StringBuilder(); + + foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with yum install {package}"); - errorMessageBuilder.Append(Environment.NewLine); + if (!YumDependencyUtility.PackageIsInstalled(package)) + { + errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); + errorMessageBuilder.Append(Environment.NewLine); + errorMessageBuilder.Append($"-> install with yum install {package}"); + errorMessageBuilder.Append(Environment.NewLine); + } + } + + if (errorMessageBuilder.Length == 0) + { + return c.Success(); + } + else + { + return c.Failed(errorMessageBuilder.ToString()); } } - if (errorMessageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(errorMessageBuilder.ToString()); - } + return c.Success(); } - [Target] public static BuildTargetResult CheckPrereqCmakePresent(BuildTargetContext c) { try @@ -461,7 +503,6 @@ cmake is required to build the native host 'corehost'"; return c.Success(); } - [Target] public static BuildTargetResult SetTelemetryProfile(BuildTargetContext c) { var gitResult = Cmd("git", "rev-parse", "HEAD") @@ -476,23 +517,6 @@ cmake is required to build the native host 'corehost'"; return c.Success(); } - private static string GetVersionFromProjectJson(string pathToProjectJson) - { - Regex r = new Regex($"\"{Regex.Escape(Monikers.SharedFrameworkName)}\"\\s*:\\s*\"(?'version'[^\"]*)\""); - - foreach (var line in File.ReadAllLines(pathToProjectJson)) - { - var m = r.Match(line); - - if (m.Success) - { - return m.Groups["version"].Value; - } - } - - throw new InvalidOperationException("Unable to match the version name from " + pathToProjectJson); - } - private static IDictionary ReadBranchInfo(BuildTargetContext c, string path) { var lines = File.ReadAllLines(path); diff --git a/build_projects/dotnet-cli-build/PublishTargets.cs b/build_projects/dotnet-cli-build/PublishTargets.cs index e72e2d037..0d466b356 100644 --- a/build_projects/dotnet-cli-build/PublishTargets.cs +++ b/build_projects/dotnet-cli-build/PublishTargets.cs @@ -4,10 +4,11 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public static class PublishTargets + public class PublishTargets : Task { private static AzurePublisher AzurePublisherTool { get; set; } @@ -21,7 +22,14 @@ namespace Microsoft.DotNet.Cli.Build private static string SharedFrameworkNugetVersion { get; set; } - [Target] + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Publish(c).Success; + } + public static BuildTargetResult InitPublish(BuildTargetContext c) { AzurePublisherTool = new AzurePublisher(); @@ -35,18 +43,21 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target( - nameof(PrepareTargets.Init), - nameof(PublishTargets.InitPublish), - nameof(PublishTargets.PublishArtifacts), - nameof(PublishTargets.FinalizeBuild))] - [Environment("PUBLISH_TO_AZURE_BLOB", "1", "true")] // This is set by CI systems + [Target] public static BuildTargetResult Publish(BuildTargetContext c) { + if (EnvVars.GetBool("PUBLISH_TO_AZURE_BLOB")) // This is set by CI systems + { + PrepareTargets.Init(c); + + InitPublish(c); + PublishArtifacts(c); + FinalizeBuild(c); + } + return c.Success(); } - [Target] public static BuildTargetResult FinalizeBuild(BuildTargetContext c) { if (CheckIfAllBuildsHavePublished()) @@ -148,33 +159,43 @@ namespace Microsoft.DotNet.Cli.Build return badges.Values.All(v => v); } - [Target( - nameof(PublishTargets.PublishInstallerFilesToAzure), - nameof(PublishTargets.PublishArchivesToAzure), - nameof(PublishTargets.PublishDebFilesToDebianRepo), - nameof(PublishTargets.PublishCliVersionBadge))] - public static BuildTargetResult PublishArtifacts(BuildTargetContext c) => c.Success(); - - [Target( - nameof(PublishTargets.PublishSdkInstallerFileToAzure), - nameof(PublishTargets.PublishCombinedFrameworkSDKHostInstallerFileToAzure))] - public static BuildTargetResult PublishInstallerFilesToAzure(BuildTargetContext c) => c.Success(); - - [Target( - nameof(PublishTargets.PublishCombinedHostFrameworkSdkArchiveToAzure), - nameof(PublishTargets.PublishCombinedFrameworkSDKArchiveToAzure), - nameof(PublishTargets.PublishSDKSymbolsArchiveToAzure))] - public static BuildTargetResult PublishArchivesToAzure(BuildTargetContext c) => c.Success(); - - [Target( - nameof(PublishSdkDebToDebianRepo))] - [BuildPlatforms(BuildPlatform.Ubuntu)] - public static BuildTargetResult PublishDebFilesToDebianRepo(BuildTargetContext c) + public static BuildTargetResult PublishArtifacts(BuildTargetContext c) { + PublishInstallerFilesToAzure(c); + PublishArchivesToAzure(c); + PublishDebFilesToDebianRepo(c); + PublishCliVersionBadge(c); + + return c.Success(); + } + + public static BuildTargetResult PublishInstallerFilesToAzure(BuildTargetContext c) + { + PublishSdkInstallerFileToAzure(c); + PublishCombinedFrameworkSDKHostInstallerFileToAzure(c); + + return c.Success(); + } + + public static BuildTargetResult PublishArchivesToAzure(BuildTargetContext c) + { + PublishCombinedHostFrameworkSdkArchiveToAzure(c); + PublishCombinedFrameworkSDKArchiveToAzure(c); + PublishSDKSymbolsArchiveToAzure(c); + + return c.Success(); + } + + public static BuildTargetResult PublishDebFilesToDebianRepo(BuildTargetContext c) + { + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) + { + PublishSdkDebToDebianRepo(c); + } + return c.Success(); } - [Target] public static BuildTargetResult PublishCliVersionBadge(BuildTargetContext c) { var versionBadge = c.BuildContext.Get("VersionBadge"); @@ -183,37 +204,39 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult PublishSdkInstallerFileToAzure(BuildTargetContext c) { - var installerFile = c.BuildContext.Get("SdkInstallerFile"); - UploadFile(installerFile); + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) + { + var installerFile = c.BuildContext.Get("SdkInstallerFile"); + UploadFile(installerFile); + } return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Windows, BuildPlatform.OSX)] public static BuildTargetResult PublishCombinedFrameworkSDKHostInstallerFileToAzure(BuildTargetContext c) { - var installerFile = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); - UploadFile(installerFile); + if (CurrentPlatform.IsAnyPlatform(BuildPlatform.Windows, BuildPlatform.OSX)) + { + var installerFile = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); + UploadFile(installerFile); + } return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult PublishCombinedFrameworkSDKArchiveToAzure(BuildTargetContext c) { - var archiveFile = c.BuildContext.Get("CombinedFrameworkSDKCompressedFile"); - UploadFile(archiveFile); + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + var archiveFile = c.BuildContext.Get("CombinedFrameworkSDKCompressedFile"); + UploadFile(archiveFile); + } return c.Success(); } - [Target] public static BuildTargetResult PublishCombinedHostFrameworkSdkArchiveToAzure(BuildTargetContext c) { var archiveFile = c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile"); @@ -222,7 +245,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult PublishSDKSymbolsArchiveToAzure(BuildTargetContext c) { var archiveFile = c.BuildContext.Get("SdkSymbolsCompressedFile"); @@ -231,20 +253,21 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Ubuntu)] public static BuildTargetResult PublishSdkDebToDebianRepo(BuildTargetContext c) { - var version = CliNuGetVersion; + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) + { + var version = CliNuGetVersion; - var packageName = CliMonikers.GetSdkDebianPackageName(c); - var installerFile = c.BuildContext.Get("SdkInstallerFile"); - var uploadUrl = AzurePublisher.CalculateFullUrlForFile(installerFile, AzurePublisher.Product.Sdk, version); + var packageName = CliMonikers.GetSdkDebianPackageName(c); + var installerFile = c.BuildContext.Get("SdkInstallerFile"); + var uploadUrl = AzurePublisher.CalculateFullUrlForFile(installerFile, AzurePublisher.Product.Sdk, version); - DebRepoPublisherTool.PublishDebFileToDebianRepo( - packageName, - version, - uploadUrl); + DebRepoPublisherTool.PublishDebFileToDebianRepo( + packageName, + version, + uploadUrl); + } return c.Success(); } diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index 41fc8bb9c..e1a54e55d 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -8,10 +8,11 @@ using Microsoft.DotNet.Cli.Build.Framework; using static Microsoft.DotNet.Cli.Build.FS; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; using static Microsoft.DotNet.Cli.Build.Utils; +using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class TestTargets + public class TestTargets : Task { private static string s_testPackageBuildVersionSuffix = ""; @@ -57,28 +58,53 @@ namespace Microsoft.DotNet.Cli.Build new { Path = "AppWithDirectDependencyDesktopAndPortable", Skip = new Func(() => !CurrentPlatform.IsWindows) } }; - [Target( - nameof(PrepareTargets.Init), - nameof(SetupTests), - nameof(RestoreTests), - nameof(BuildTests), - nameof(RunTests), - nameof(ValidateDependencies))] - public static BuildTargetResult Test(BuildTargetContext c) => c.Success(); + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); - [Target(nameof(SetupTestPackages), nameof(SetupTestProjects))] - public static BuildTargetResult SetupTests(BuildTargetContext c) => c.Success(); - - [Target(nameof(RestoreTestAssetPackages), nameof(BuildTestAssetPackages))] - public static BuildTargetResult SetupTestPackages(BuildTargetContext c) => c.Success(); - - [Target(nameof(RestoreTestAssetProjects), - nameof(RestoreDesktopTestAssetProjects), - nameof(BuildTestAssetProjects), - nameof(BuildDesktopTestAssetProjects))] - public static BuildTargetResult SetupTestProjects(BuildTargetContext c) => c.Success(); + return Test(c).Success; + } [Target] + public static BuildTargetResult Test(BuildTargetContext c) + { + PrepareTargets.Init(c); + SetupTests(c); + RestoreTests(c); + BuildTests(c); + RunTests(c); + ValidateDependencies(c); + + return c.Success(); + } + + public static BuildTargetResult SetupTests(BuildTargetContext c) + { + SetupTestPackages(c); + SetupTestProjects(c); + + return c.Success(); + } + + public static BuildTargetResult SetupTestPackages(BuildTargetContext c) + { + RestoreTestAssetPackages(c); + BuildTestAssetPackages(c); + + return c.Success(); + } + + public static BuildTargetResult SetupTestProjects(BuildTargetContext c) + { + RestoreTestAssetProjects(c); + RestoreDesktopTestAssetProjects(c); + BuildTestAssetProjects(c); + BuildDesktopTestAssetProjects(c); + + return c.Success(); + } + public static BuildTargetResult RestoreTestAssetPackages(BuildTargetContext c) { CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); @@ -95,7 +121,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult RestoreTestAssetProjects(BuildTargetContext c) { CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); @@ -127,24 +152,27 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult RestoreDesktopTestAssetProjects(BuildTargetContext c) { - var dotnet = DotNetCli.Stage2; + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + var dotnet = DotNetCli.Stage2; - dotnet.Restore("--verbosity", "verbose", - "--infer-runtimes", - "--fallbacksource", Dirs.TestPackages) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects")) - .Execute().EnsureSuccessful(); + dotnet.Restore("--verbosity", "verbose", + "--infer-runtimes", + "--fallbacksource", Dirs.TestPackages) + .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects")) + .Execute().EnsureSuccessful(); + } return c.Success(); } - [Target(nameof(CleanTestPackages), nameof(CleanProductPackages))] public static BuildTargetResult BuildTestAssetPackages(BuildTargetContext c) { + CleanTestPackages(c); + CleanProductPackages(c); + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestPackages")); var dotnet = DotNetCli.Stage2; @@ -209,7 +237,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CleanProductPackages(BuildTargetContext c) { foreach (var packageName in PackageTargets.ProjectsToPack) @@ -220,7 +247,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult CleanTestPackages(BuildTargetContext c) { foreach (var packageProject in TestPackageProjects.Projects.Where(p => p.IsApplicable && p.Clean)) @@ -234,7 +260,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult BuildTestAssetProjects(BuildTargetContext c) { var testAssetsRoot = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects"); @@ -244,18 +269,20 @@ namespace Microsoft.DotNet.Cli.Build return BuildTestAssets(c, testAssetsRoot, dotnet, framework); } - [Target] - [BuildPlatforms(BuildPlatform.Windows)] public static BuildTargetResult BuildDesktopTestAssetProjects(BuildTargetContext c) { - var testAssetsRoot = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects"); - var dotnet = DotNetCli.Stage2; - var framework = "net451"; + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + var testAssetsRoot = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects"); + var dotnet = DotNetCli.Stage2; + var framework = "net451"; - return BuildTestAssets(c, testAssetsRoot, dotnet, framework); + return BuildTestAssets(c, testAssetsRoot, dotnet, framework); + } + + return c.Success(); } - [Target] public static BuildTargetResult RestoreTests(BuildTargetContext c) { CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); @@ -270,7 +297,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult BuildTests(BuildTargetContext c) { var dotnet = DotNetCli.Stage2; @@ -288,10 +314,13 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target(nameof(RunXUnitTests))] - public static BuildTargetResult RunTests(BuildTargetContext c) => c.Success(); + public static BuildTargetResult RunTests(BuildTargetContext c) + { + RunXUnitTests(c); + + return c.Success(); + } - [Target] public static BuildTargetResult RunXUnitTests(BuildTargetContext c) { // Need to load up the VS Vars @@ -335,7 +364,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - [Target] public static BuildTargetResult ValidateDependencies(BuildTargetContext c) { var configuration = c.BuildContext.Get("Configuration"); diff --git a/build_projects/dotnet-cli-build/build.ps1 b/build_projects/dotnet-cli-build/build.ps1 index 54f6739ad..7142e78c2 100644 --- a/build_projects/dotnet-cli-build/build.ps1 +++ b/build_projects/dotnet-cli-build/build.ps1 @@ -8,23 +8,9 @@ param( [string[]]$Targets=@("Default"), [string]$Architecture="x64", [switch]$NoPackage, + [switch]$NoRun, [switch]$Help) -function RemoveDirectory([string] $path) -{ - if (Test-Path $path) - { - Remove-Item $path -Recurse -Force - } -} - -function CleanNuGet() -{ - RemoveDirectory($env:LocalAppData + "\NuGet\Cache") - RemoveDirectory($env:LocalAppData + "\NuGet\v3-cache") - RemoveDirectory($env:NUGET_PACKAGES) -} - if($Help) { Write-Host "Usage: .\build.ps1 [-Configuration ] [-Targets ] [-Architecture ] [-NoPackage] [-Help]" @@ -34,6 +20,7 @@ if($Help) Write-Host " -Targets Comma separated build targets to run (Init, Compile, Publish, etc.; Default is a full build and publish)" Write-Host " -Architecture Build the specified architecture (x64 or x86 (supported only on Windows), default: x64)" Write-Host " -NoPackage Skip packaging targets" + Write-Host " -NoRun Skip running the build" Write-Host " -Help Display this help message" exit 0 } @@ -79,9 +66,6 @@ if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } # Put the stage0 on the path $env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" -# Ensure clean package folder and caches -CleanNuGet - # Disable first run since we want to control all package sources $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 @@ -97,8 +81,11 @@ Write-Host "Compiling Build Scripts..." dotnet publish "$PSScriptRoot" -o "$PSScriptRoot\bin" --framework netcoreapp1.0 if($LASTEXITCODE -ne 0) { throw "Failed to compile build scripts" } -# Run the builder -Write-Host "Invoking Build Scripts..." -Write-Host " Configuration: $env:CONFIGURATION" -& "$PSScriptRoot\bin\dotnet-cli-build.exe" @Targets -if($LASTEXITCODE -ne 0) { throw "Build failed" } +if(!$NoRun) +{ + # Run the builder + Write-Host "Invoking Build Scripts..." + Write-Host " Configuration: $env:CONFIGURATION" + & "$PSScriptRoot\bin\dotnet-cli-build.exe" @Targets + if($LASTEXITCODE -ne 0) { throw "Build failed" } +} diff --git a/build_projects/dotnet-cli-build/build.sh b/build_projects/dotnet-cli-build/build.sh index 026ed7f42..7cb3649ec 100755 --- a/build_projects/dotnet-cli-build/build.sh +++ b/build_projects/dotnet-cli-build/build.sh @@ -32,6 +32,9 @@ while [[ $# > 0 ]]; do --nopackage) export DOTNET_BUILD_SKIP_PACKAGING=1 ;; + --norun) + export DOTNET_BUILD_SKIP_RUN=1 + ;; --skip-prereqs) # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 @@ -44,6 +47,7 @@ while [[ $# > 0 ]]; do echo " --targets Comma separated build targets to run (Init, Compile, Publish, etc.; Default is a full build and publish)" echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install" echo " --nopackage Skip packaging targets" + echo " --norun Skip running the build" echo " --docker Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME" echo " --help Display this help message" exit 0 @@ -100,11 +104,6 @@ then ulimit -n 1024 fi -# Clean old NuGet packages -rm -rf "$HOME/.local/share/NuGet/Cache" -rm -rf "$HOME/.local/share/NuGet/v3-cache" -rm -rf "$NUGET_PACKAGES" - # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 @@ -119,10 +118,13 @@ echo "Restoring Build Script projects..." echo "Compiling Build Scripts..." dotnet publish "$DIR" -o "$DIR/bin" --framework netcoreapp1.0 -export PATH="$OLDPATH" -# Run the builder -echo "Invoking Build Scripts..." -echo "Configuration: $CONFIGURATION" +if [-z "$DOTNET_BUILD_SKIP_RUN" ] +then + export PATH="$OLDPATH" + # Run the builder + echo "Invoking Build Scripts..." + echo "Configuration: $CONFIGURATION" +fi $DIR/bin/dotnet-cli-build ${targets[@]} exit $? diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index ff78d04ec..c6bf2de23 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -2,7 +2,15 @@ "version": "1.0.0-*", "description": "Build scripts for dotnet-cli", "buildOptions": { - "emitEntryPoint": true + "emitEntryPoint": true, + "allowUnsafe": true, + "compile": [ + "../Microsoft.DotNet.Cli.Build.Framework/**/*.cs", + "../shared-build-targets-utils/**/*.cs", + "../../src/Microsoft.DotNet.InternalAbstractions/RuntimeEnvironment.cs", + "../../src/Microsoft.DotNet.InternalAbstractions/Platform.cs", + "../../src/Microsoft.DotNet.InternalAbstractions/Native/*.cs" + ] }, "dependencies": { "NETStandard.Library": "1.6.0", @@ -14,12 +22,8 @@ "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", "NuGet.CommandLine.XPlat": "3.5.0-beta2-1484", - "Microsoft.DotNet.Cli.Build.Framework": { - "target": "project" - }, - "shared-build-targets-utils": { - "target": "project" - } + "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" }, "frameworks": { "netcoreapp1.0": { diff --git a/build_projects/shared-build-targets-utils/Utils/EnvVars.cs b/build_projects/shared-build-targets-utils/Utils/EnvVars.cs index 7b6433433..b5d45ada5 100644 --- a/build_projects/shared-build-targets-utils/Utils/EnvVars.cs +++ b/build_projects/shared-build-targets-utils/Utils/EnvVars.cs @@ -7,7 +7,7 @@ namespace Microsoft.DotNet.Cli.Build { public static readonly bool Verbose = GetBool("DOTNET_BUILD_VERBOSE"); - private static bool GetBool(string name, bool defaultValue = false) + public static bool GetBool(string name, bool defaultValue = false) { var str = Environment.GetEnvironmentVariable(name); if (string.IsNullOrEmpty(str)) From bca4572561c6544dbae2ad572681314ec58acfbe Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Fri, 24 Jun 2016 16:11:06 -0700 Subject: [PATCH 003/165] Update branchinfo.txt --- branchinfo.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/branchinfo.txt b/branchinfo.txt index f202e438b..9e36018b1 100644 --- a/branchinfo.txt +++ b/branchinfo.txt @@ -4,6 +4,6 @@ MAJOR_VERSION=1 MINOR_VERSION=0 PATCH_VERSION=0 -RELEASE_SUFFIX=preview3 -CHANNEL=rel-1.0.0 -BRANCH_NAME=rel/1.0.0 +RELEASE_SUFFIX=feature-msbuild +CHANNEL=feature-msbuild +BRANCH_NAME=feature/msbuild From 4d8ed818e5b62186f37cffea1f48326dec019875 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Mon, 27 Jun 2016 11:45:51 -0700 Subject: [PATCH 004/165] base init infra --- .gitignore | 1 - build.proj | 13 +++- build/Microsoft.DotNet.Cli.Prepare.targets | 47 +++++++++++++ .../dotnet-cli-build/Architecture.cs | 29 ++++++++ .../dotnet-cli-build/GenerateBuildVersion.cs | 66 +++++++++++++++++++ build_projects/dotnet-cli-build/Rid.cs | 29 ++++++++ 6 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Prepare.targets create mode 100644 build_projects/dotnet-cli-build/Architecture.cs create mode 100644 build_projects/dotnet-cli-build/GenerateBuildVersion.cs create mode 100644 build_projects/dotnet-cli-build/Rid.cs diff --git a/.gitignore b/.gitignore index bae5bb22d..ef7be5f3a 100644 --- a/.gitignore +++ b/.gitignore @@ -61,7 +61,6 @@ cmake/ [Rr]eleases/ x64/ x86/ -build/ bld/ [Bb]in/ [Oo]bj/ diff --git a/build.proj b/build.proj index 6fe36e4eb..5ea2e224f 100644 --- a/build.proj +++ b/build.proj @@ -1,5 +1,6 @@ + + + + + + + + + + + $(RepoRoot)/artifacts/$(Rid) + $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/stage2compilation + $(BaseOutputDirectory)/intermediate + + + + + + + + + @(BuildVersion ->'%(NugetVersion)') + Microsoft .NET Core 1.0.0 - SDK Preview 2 + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/Architecture.cs b/build_projects/dotnet-cli-build/Architecture.cs new file mode 100644 index 000000000..d807a1032 --- /dev/null +++ b/build_projects/dotnet-cli-build/Architecture.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class Architecture : Task + { + [Output] + public string OutputArchitecture { get; set; } + + public override bool Execute() + { + OutputArchitecture = RuntimeEnvironment.RuntimeArchitecture; + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersion.cs b/build_projects/dotnet-cli-build/GenerateBuildVersion.cs new file mode 100644 index 000000000..c08887fc4 --- /dev/null +++ b/build_projects/dotnet-cli-build/GenerateBuildVersion.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System.Security.Cryptography; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GenerateBuildVersionInfo : Task + { + [Required] + public string RepoRoot { get; set; } + + [Output] + public ITaskItem OutputBuildVersionInfo { get; set; } + + public override bool Execute() + { + var branchInfo = new BranchInfo(RepoRoot); + + var commitCount = GitUtils.GetCommitCount(); + var commitHash = GitUtils.GetCommitHash(); + + var buildVersion = new BuildVersion() + { + Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]), + Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), + Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), + ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], + CommitCount = commitCount + }; + + OutputBuildVersionInfo = ConstructBuildVersionInfoItem(buildVersion, commitHash); + + return true; + } + + private ITaskItem ConstructBuildVersionInfoItem(BuildVersion buildVersion, string commitHash) + { + var versionInfo = new TaskItem(); + versionInfo.ItemSpec = "BuildVersionInfo"; + + versionInfo.SetMetadata("CommitHash", commitHash); + versionInfo.SetMetadata("Major", buildVersion.Major.ToString()); + versionInfo.SetMetadata("Minor", buildVersion.Minor.ToString()); + versionInfo.SetMetadata("Patch", buildVersion.Patch.ToString()); + versionInfo.SetMetadata("ReleaseSuffix", buildVersion.ReleaseSuffix); + versionInfo.SetMetadata("CommitCount", buildVersion.CommitCountString); + versionInfo.SetMetadata("VersionSuffix", buildVersion.VersionSuffix); + versionInfo.SetMetadata("SimpleVersion", buildVersion.SimpleVersion); + versionInfo.SetMetadata("NugetVersion", buildVersion.NuGetVersion); + versionInfo.SetMetadata("MsiVersion", buildVersion.GenerateMsiVersion()); + + return versionInfo; + } + } +} diff --git a/build_projects/dotnet-cli-build/Rid.cs b/build_projects/dotnet-cli-build/Rid.cs new file mode 100644 index 000000000..f68513e7d --- /dev/null +++ b/build_projects/dotnet-cli-build/Rid.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class Rid : Task + { + [Output] + public string OutputRid { get; set; } + + public override bool Execute() + { + OutputRid = RuntimeEnvironment.GetRuntimeIdentifier(); + + return true; + } + } +} From 038758acf4f2590f669bbde83cb5e67caa69a45a Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 27 Jun 2016 21:09:30 -0500 Subject: [PATCH 005/165] Convert 'Init' to MSBuild. --- Microsoft.DotNet.Cli.sln | 5 + build.proj | 12 +- build/Microsoft.DotNet.Cli.Prepare.targets | 103 +++++++--- .../dotnet-cli-build/Architecture.cs | 29 --- .../dotnet-cli-build/CheckPrereqs.cs | 136 +++++++++++++ .../dotnet-cli-build/GenerateBuildVersion.cs | 66 ------ .../GenerateBuildVersionInfo.cs | 84 ++++++++ .../GetCurrentRuntimeInformation.cs | 27 +++ .../dotnet-cli-build/PrepareTargets.cs | 191 +----------------- build_projects/dotnet-cli-build/Rid.cs | 29 --- build_projects/dotnet-cli-build/SetEnvVar.cs | 22 ++ 11 files changed, 360 insertions(+), 344 deletions(-) delete mode 100644 build_projects/dotnet-cli-build/Architecture.cs create mode 100644 build_projects/dotnet-cli-build/CheckPrereqs.cs delete mode 100644 build_projects/dotnet-cli-build/GenerateBuildVersion.cs create mode 100644 build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs create mode 100644 build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs delete mode 100644 build_projects/dotnet-cli-build/Rid.cs create mode 100644 build_projects/dotnet-cli-build/SetEnvVar.cs diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index bd9c2c513..03125bb8a 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -124,6 +124,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Archive", EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build3.Tests", "test\dotnet-build3.Tests\dotnet-build3.Tests.xproj", "{49D7318E-D198-4E2B-BBEA-3A24D805F88D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}" + ProjectSection(SolutionItems) = preProject + build\Microsoft.DotNet.Cli.Prepare.targets = build\Microsoft.DotNet.Cli.Prepare.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/build.proj b/build.proj index 5ea2e224f..04246e6d5 100644 --- a/build.proj +++ b/build.proj @@ -1,7 +1,5 @@ - - - - - - - - + + + + + @@ -20,28 +24,75 @@ $(BaseOutputDirectory)/stage2 $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate + $(BaseOutputDirectory)/packages - - + + + + + + + + + + + + + - @(BuildVersion ->'%(NugetVersion)') + $(BaseOutputDirectory)/$(VersionBadgeMoniker)_$(Configuration)_version_badge.svg + $(NugetVersion) + + .zip + .tar.gz + + .msi + .pkg + .deb + + .exe + $(InstallerExtension) + $(InstallerExtension) + + $(Rid) + $(OSName)-$(Architecture) + + + $(PackagesDirectory)/dotnet-sdk-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-sdk-$(ProductMonikerRid).$(SdkVersion)$(InstallerExtension) + + $(PackagesDirectory)/dotnet-dev-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-dev-$(ProductMonikerRid).$(SdkVersion)$(BundleExtension) + + $(PackagesDirectory)/dotnet-sharedframework-sdk-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-sharedframework-sdk-$(ProductMonikerRid).$(SdkVersion)$(BundleExtension) + + $(PackagesDirectory)/dotnet-sdk-debug-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-sdk-debug-$(ProductMonikerRid).$(SdkVersion)$(InstallerExtension) + + + $(PackagesDirectory)/dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(InstallerExtension) + + $(PackagesDirectory)/dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(InstallerExtension) + + $(PackagesDirectory)/dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(InstallerExtension) + + $(PackagesDirectory)/dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) + $(PackagesDirectory)/dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(BundleExtension) + Microsoft .NET Core 1.0.0 - SDK Preview 2 + + + + + - \ No newline at end of file + diff --git a/build_projects/dotnet-cli-build/Architecture.cs b/build_projects/dotnet-cli-build/Architecture.cs deleted file mode 100644 index d807a1032..000000000 --- a/build_projects/dotnet-cli-build/Architecture.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class Architecture : Task - { - [Output] - public string OutputArchitecture { get; set; } - - public override bool Execute() - { - OutputArchitecture = RuntimeEnvironment.RuntimeArchitecture; - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/CheckPrereqs.cs b/build_projects/dotnet-cli-build/CheckPrereqs.cs new file mode 100644 index 000000000..6b1894b06 --- /dev/null +++ b/build_projects/dotnet-cli-build/CheckPrereqs.cs @@ -0,0 +1,136 @@ +using System; +using System.IO; +using System.Linq; +using System.Text; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CheckPrereqs : Task + { + public override bool Execute() + { + Run(s => Log.LogMessage(s)); + + return true; + } + + public static void Run(Action logInfo) + { + CheckCoreclrPlatformDependencies(); + CheckInstallerBuildPlatformDependencies(); + + LocateStage0(logInfo); + } + + private static void CheckCoreclrPlatformDependencies() + { + CheckUbuntuCoreclrAndCoreFxDependencies(); + CheckCentOSCoreclrAndCoreFxDependencies(); + } + + private static void CheckInstallerBuildPlatformDependencies() + { + CheckUbuntuDebianPackageBuildDependencies(); + } + + private static void CheckUbuntuCoreclrAndCoreFxDependencies() + { + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) + { + var errorMessageBuilder = new StringBuilder(); + var stage0 = DotNetCli.Stage0.BinPath; + + foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) + { + if (!AptDependencyUtility.PackageIsInstalled(package)) + { + errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); + errorMessageBuilder.Append(Environment.NewLine); + errorMessageBuilder.Append($"-> install with apt-get install {package}"); + errorMessageBuilder.Append(Environment.NewLine); + } + } + + if (errorMessageBuilder.Length > 0) + { + throw new BuildFailureException(errorMessageBuilder.ToString()); + } + } + } + + private static void CheckCentOSCoreclrAndCoreFxDependencies() + { + if (CurrentPlatform.IsPlatform(BuildPlatform.CentOS)) + { + var errorMessageBuilder = new StringBuilder(); + + foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) + { + if (!YumDependencyUtility.PackageIsInstalled(package)) + { + errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); + errorMessageBuilder.Append(Environment.NewLine); + errorMessageBuilder.Append($"-> install with yum install {package}"); + errorMessageBuilder.Append(Environment.NewLine); + } + } + + if (errorMessageBuilder.Length > 0) + { + throw new BuildFailureException(errorMessageBuilder.ToString()); + } + } + } + + private static void CheckUbuntuDebianPackageBuildDependencies() + { + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) + { + var messageBuilder = new StringBuilder(); + var aptDependencyUtility = new AptDependencyUtility(); + + + foreach (var package in PackageDependencies.DebianPackageBuildDependencies) + { + if (!AptDependencyUtility.PackageIsInstalled(package)) + { + messageBuilder.Append($"Error: Debian package build dependency {package} missing."); + messageBuilder.Append(Environment.NewLine); + messageBuilder.Append($"-> install with apt-get install {package}"); + messageBuilder.Append(Environment.NewLine); + } + } + + if (messageBuilder.Length > 0) + { + throw new BuildFailureException(messageBuilder.ToString()); + } + } + } + + private static void LocateStage0(Action logInfo) + { + // We should have been run in the repo root, so locate the stage 0 relative to current directory + var stage0 = DotNetCli.Stage0.BinPath; + + if (!Directory.Exists(stage0)) + { + throw new BuildFailureException($"Stage 0 directory does not exist: {stage0}"); + } + + // Identify the version + string versionFile = Directory.GetFiles(stage0, ".version", SearchOption.AllDirectories).FirstOrDefault(); + + if (string.IsNullOrEmpty(versionFile)) + { + throw new Exception($"'.version' file not found in '{stage0}' folder"); + } + + var version = File.ReadAllLines(versionFile); + logInfo($"Using Stage 0 Version: {version[1]}"); + } + } +} + diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersion.cs b/build_projects/dotnet-cli-build/GenerateBuildVersion.cs deleted file mode 100644 index c08887fc4..000000000 --- a/build_projects/dotnet-cli-build/GenerateBuildVersion.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using System.Security.Cryptography; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class GenerateBuildVersionInfo : Task - { - [Required] - public string RepoRoot { get; set; } - - [Output] - public ITaskItem OutputBuildVersionInfo { get; set; } - - public override bool Execute() - { - var branchInfo = new BranchInfo(RepoRoot); - - var commitCount = GitUtils.GetCommitCount(); - var commitHash = GitUtils.GetCommitHash(); - - var buildVersion = new BuildVersion() - { - Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]), - Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), - Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), - ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], - CommitCount = commitCount - }; - - OutputBuildVersionInfo = ConstructBuildVersionInfoItem(buildVersion, commitHash); - - return true; - } - - private ITaskItem ConstructBuildVersionInfoItem(BuildVersion buildVersion, string commitHash) - { - var versionInfo = new TaskItem(); - versionInfo.ItemSpec = "BuildVersionInfo"; - - versionInfo.SetMetadata("CommitHash", commitHash); - versionInfo.SetMetadata("Major", buildVersion.Major.ToString()); - versionInfo.SetMetadata("Minor", buildVersion.Minor.ToString()); - versionInfo.SetMetadata("Patch", buildVersion.Patch.ToString()); - versionInfo.SetMetadata("ReleaseSuffix", buildVersion.ReleaseSuffix); - versionInfo.SetMetadata("CommitCount", buildVersion.CommitCountString); - versionInfo.SetMetadata("VersionSuffix", buildVersion.VersionSuffix); - versionInfo.SetMetadata("SimpleVersion", buildVersion.SimpleVersion); - versionInfo.SetMetadata("NugetVersion", buildVersion.NuGetVersion); - versionInfo.SetMetadata("MsiVersion", buildVersion.GenerateMsiVersion()); - - return versionInfo; - } - } -} diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs new file mode 100644 index 000000000..1328998aa --- /dev/null +++ b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs @@ -0,0 +1,84 @@ +using System.Globalization; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GenerateBuildVersionInfo : Task + { + [Required] + public string RepoRoot { get; set; } + + [Output] + public int VersionMajor { get; set; } + + [Output] + public int VersionMinor { get; set; } + + [Output] + public int VersionPatch { get; set; } + + [Output] + public string CommitHash { get; set; } + + [Output] + public int CommitCount { get; set; } + + [Output] + public string ReleaseSuffix { get; set; } + + [Output] + public string VersionSuffix { get; set; } + + [Output] + public string SimpleVersion { get; set; } + + [Output] + public string NugetVersion { get; set; } + + [Output] + public string MsiVersion { get; set; } + + [Output] + public string VersionBadgeMoniker { get; set; } + + [Output] + public string Channel { get; set; } + + [Output] + public string BranchName { get; set; } + + public override bool Execute() + { + var branchInfo = new BranchInfo(RepoRoot); + + var commitCount = GitUtils.GetCommitCount(); + var commitHash = GitUtils.GetCommitHash(); + + var buildVersion = new BuildVersion() + { + Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]), + Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), + Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), + ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], + CommitCount = commitCount + }; + + VersionMajor = buildVersion.Major; + VersionMinor = buildVersion.Minor; + VersionPatch = buildVersion.Patch; + CommitHash = commitHash; + CommitCount = commitCount; + ReleaseSuffix = buildVersion.ReleaseSuffix; + VersionSuffix = buildVersion.VersionSuffix; + SimpleVersion = buildVersion.SimpleVersion; + NugetVersion = buildVersion.NuGetVersion; + MsiVersion = buildVersion.GenerateMsiVersion(); + VersionBadgeMoniker = Monikers.GetBadgeMoniker(); + Channel = branchInfo.Entries["CHANNEL"]; + BranchName= branchInfo.Entries["BRANCH_NAME"]; + + return true; + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs b/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs new file mode 100644 index 000000000..e11e40ed3 --- /dev/null +++ b/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs @@ -0,0 +1,27 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.InternalAbstractions; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GetCurrentRuntimeInformation : Task + { + [Output] + public string Rid { get; set; } + + [Output] + public string Architecture { get; set; } + + [Output] + public string OSName { get; set; } + + public override bool Execute() + { + Rid = RuntimeEnvironment.GetRuntimeIdentifier(); + Architecture = RuntimeEnvironment.RuntimeArchitecture; + OSName = Monikers.GetOSShortName(); + + return true; + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/PrepareTargets.cs b/build_projects/dotnet-cli-build/PrepareTargets.cs index 7661ba186..0f061c300 100644 --- a/build_projects/dotnet-cli-build/PrepareTargets.cs +++ b/build_projects/dotnet-cli-build/PrepareTargets.cs @@ -2,18 +2,13 @@ using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Text.RegularExpressions; +using System.IO.Compression; +using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Newtonsoft.Json.Linq; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; using static Microsoft.DotNet.Cli.Build.FS; using static Microsoft.DotNet.Cli.Build.Utils; -using System.IO.Compression; -using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { @@ -38,43 +33,11 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - public static BuildTargetResult CheckPrereqs(BuildTargetContext c) - { - CheckPrereqCmakePresent(c); - CheckPlatformDependencies(c); - - return c.Success(); - } - - public static BuildTargetResult CheckPlatformDependencies(BuildTargetContext c) - { - CheckCoreclrPlatformDependencies(c); - CheckInstallerBuildPlatformDependencies(c); - - return c.Success(); - } - - public static BuildTargetResult CheckCoreclrPlatformDependencies(BuildTargetContext c) - { - CheckUbuntuCoreclrAndCoreFxDependencies(c); - CheckCentOSCoreclrAndCoreFxDependencies(c); - - return c.Success(); - } - - public static BuildTargetResult CheckInstallerBuildPlatformDependencies(BuildTargetContext c) - { - CheckUbuntuDebianPackageBuildDependencies(c); - - return c.Success(); - } - // All major targets will depend on this in order to ensure variables are set up right if they are run independently public static BuildTargetResult Init(BuildTargetContext c) { GenerateVersions(c); - CheckPrereqs(c); - LocateStage0(c); + CheckPrereqs.Run(s => c.Info(s)); ExpectedBuildArtifacts(c); SetTelemetryProfile(c); @@ -140,29 +103,7 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - public static BuildTargetResult LocateStage0(BuildTargetContext c) - { - // We should have been run in the repo root, so locate the stage 0 relative to current directory - var stage0 = DotNetCli.Stage0.BinPath; - - if (!Directory.Exists(stage0)) - { - return c.Failed($"Stage 0 directory does not exist: {stage0}"); - } - - // Identify the version - string versionFile = Directory.GetFiles(stage0, ".version", SearchOption.AllDirectories).FirstOrDefault(); - - if (string.IsNullOrEmpty(versionFile)) - { - throw new Exception($"'.version' file not found in '{stage0}' folder"); - } - - var version = File.ReadAllLines(versionFile); - c.Info($"Using Stage 0 Version: {version[1]}"); - - return c.Success(); - } + public static BuildTargetResult ExpectedBuildArtifacts(BuildTargetContext c) { @@ -379,130 +320,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - public static BuildTargetResult CheckUbuntuDebianPackageBuildDependencies(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) - { - var messageBuilder = new StringBuilder(); - var aptDependencyUtility = new AptDependencyUtility(); - - - foreach (var package in PackageDependencies.DebianPackageBuildDependencies) - { - if (!AptDependencyUtility.PackageIsInstalled(package)) - { - messageBuilder.Append($"Error: Debian package build dependency {package} missing."); - messageBuilder.Append(Environment.NewLine); - messageBuilder.Append($"-> install with apt-get install {package}"); - messageBuilder.Append(Environment.NewLine); - } - } - - if (messageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(messageBuilder.ToString()); - } - } - - return c.Success(); - } - - public static BuildTargetResult CheckUbuntuCoreclrAndCoreFxDependencies(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) - { - var errorMessageBuilder = new StringBuilder(); - var stage0 = DotNetCli.Stage0.BinPath; - - foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) - { - if (!AptDependencyUtility.PackageIsInstalled(package)) - { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with apt-get install {package}"); - errorMessageBuilder.Append(Environment.NewLine); - } - } - - if (errorMessageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(errorMessageBuilder.ToString()); - } - } - - return c.Success(); - } - - public static BuildTargetResult CheckCentOSCoreclrAndCoreFxDependencies(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.CentOS)) - { - var errorMessageBuilder = new StringBuilder(); - - foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) - { - if (!YumDependencyUtility.PackageIsInstalled(package)) - { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with yum install {package}"); - errorMessageBuilder.Append(Environment.NewLine); - } - } - - if (errorMessageBuilder.Length == 0) - { - return c.Success(); - } - else - { - return c.Failed(errorMessageBuilder.ToString()); - } - } - - return c.Success(); - } - - public static BuildTargetResult CheckPrereqCmakePresent(BuildTargetContext c) - { - try - { - Command.Create("cmake", "--version") - .CaptureStdOut() - .CaptureStdErr() - .Execute(); - } - catch (Exception ex) - { - string message = $@"Error running cmake: {ex.Message} -cmake is required to build the native host 'corehost'"; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - message += Environment.NewLine + "Download it from https://www.cmake.org"; - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - message += Environment.NewLine + "Ubuntu: 'sudo apt-get install cmake'"; - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - message += Environment.NewLine + "OS X w/Homebrew: 'brew install cmake'"; - } - return c.Failed(message); - } - - return c.Success(); - } - public static BuildTargetResult SetTelemetryProfile(BuildTargetContext c) { var gitResult = Cmd("git", "rev-parse", "HEAD") diff --git a/build_projects/dotnet-cli-build/Rid.cs b/build_projects/dotnet-cli-build/Rid.cs deleted file mode 100644 index f68513e7d..000000000 --- a/build_projects/dotnet-cli-build/Rid.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class Rid : Task - { - [Output] - public string OutputRid { get; set; } - - public override bool Execute() - { - OutputRid = RuntimeEnvironment.GetRuntimeIdentifier(); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/SetEnvVar.cs b/build_projects/dotnet-cli-build/SetEnvVar.cs new file mode 100644 index 000000000..4d70c5f25 --- /dev/null +++ b/build_projects/dotnet-cli-build/SetEnvVar.cs @@ -0,0 +1,22 @@ +using System; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class SetEnvVar : Task + { + [Required] + public string Name { get; set; } + + [Required] + public string Value { get; set; } + + public override bool Execute() + { + Environment.SetEnvironmentVariable(Name, Value); + + return true; + } + } +} From aff23d00f46c6c4a112e33017345e9f0df485be4 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 28 Jun 2016 18:19:42 -0500 Subject: [PATCH 006/165] Implement RestorePackages in MSBuild. This adds the DotNetTool custom task, with `dotnet restore` implemented. --- build/Microsoft.DotNet.Cli.Prepare.targets | 21 ++++- build_projects/dotnet-cli-build/DotNetTool.cs | 85 +++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 build_projects/dotnet-cli-build/DotNetTool.cs diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 7de75544f..32321e43d 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -5,12 +5,13 @@ + - + @@ -20,6 +21,10 @@ + $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) + $(RepoRoot)/.dotnet_stage0/$(OSName) + $(Stage0Path) + $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/stage2 $(BaseOutputDirectory)/stage2compilation @@ -95,4 +100,18 @@ + + + + + + + + + + + + diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs new file mode 100644 index 000000000..d3d8581b7 --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -0,0 +1,85 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public abstract class DotNetTool : ToolTask + { + private const string ExeName = "dotnet.exe"; + + public DotNetTool() + { + } + + protected abstract string Command { get; } + + protected abstract string Args { get; } + + public string WorkingDirectory { get; set; } + + protected override string ToolName + { + get { return ExeName; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + string path = ToolPath; + + // if ToolPath was not provided by the MSBuild script + if (string.IsNullOrEmpty(path)) + { + Log.LogError($"Could not find the Path to {ExeName}"); + + return string.Empty; + } + + return path; + } + + protected override string GetWorkingDirectory() + { + return WorkingDirectory ?? base.GetWorkingDirectory(); + } + + protected override string GenerateCommandLineCommands() + { + return $"{Command} {Args}"; + } + + protected override void LogToolCommand(string message) + { + base.LogToolCommand($"{GetWorkingDirectory()}> {message}"); + } + } + + public class DotNetRestore : DotNetTool + { + protected override string Command + { + get { return "restore"; } + } + + protected override string Args + { + get { return $"{GetVerbosity()}"; } + } + + public string Verbosity { get; set; } + + private string GetVerbosity() + { + if (!string.IsNullOrEmpty(Verbosity)) + { + return $"--verbosity {Verbosity}"; + } + + return null; + } + } +} From bf172df39b2877f075b4a4096aefa34439272e5d Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 28 Jun 2016 18:59:15 -0500 Subject: [PATCH 007/165] Respond to PR feedback and fix CommitCount not being padded with zeros. --- build/Microsoft.DotNet.Cli.Prepare.targets | 8 +------- .../dotnet-cli-build/GenerateBuildVersionInfo.cs | 4 ++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 32321e43d..b53cfcd3c 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -103,15 +103,9 @@ - - - - - + diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs index 1328998aa..2be4c2a5c 100644 --- a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs +++ b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs @@ -22,7 +22,7 @@ namespace Microsoft.DotNet.Cli.Build public string CommitHash { get; set; } [Output] - public int CommitCount { get; set; } + public string CommitCount { get; set; } [Output] public string ReleaseSuffix { get; set; } @@ -68,7 +68,7 @@ namespace Microsoft.DotNet.Cli.Build VersionMinor = buildVersion.Minor; VersionPatch = buildVersion.Patch; CommitHash = commitHash; - CommitCount = commitCount; + CommitCount = buildVersion.CommitCountString; ReleaseSuffix = buildVersion.ReleaseSuffix; VersionSuffix = buildVersion.VersionSuffix; SimpleVersion = buildVersion.SimpleVersion; From a7d2972509341c87f67832cd2c0079138305babd Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 28 Jun 2016 19:03:10 -0500 Subject: [PATCH 008/165] Fix Stage0 calculation on Unix. --- build/Microsoft.DotNet.Cli.Prepare.targets | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index b53cfcd3c..72a830da7 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -22,7 +22,8 @@ $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) - $(RepoRoot)/.dotnet_stage0/$(OSName) + $(RepoRoot)/.dotnet_stage0/Darwin + $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) $(RepoRoot)/artifacts/$(Rid) From fa97921a4d2ac1f9076dd5a3794370e01289ad6c Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Mon, 27 Jun 2016 18:26:57 -0700 Subject: [PATCH 009/165] change to properties, artifact names --- NuGet.Config | 1 + build.proj | 22 ++- build/Microsoft.DotNet.Cli.Package.targets | 20 +++ build/Microsoft.DotNet.Cli.Prepare.targets | 24 +-- .../Microsoft.DotNet.Cli.Archive.targets | 32 ++++ ...Microsoft.DotNet.Cli.Installer.DEB.targets | 10 ++ ...Microsoft.DotNet.Cli.Installer.MSI.targets | 165 ++++++++++++++++++ ...Microsoft.DotNet.Cli.Installer.PKG.targets | 10 ++ .../Microsoft.DotNet.Cli.Layout.targets | 69 ++++++++ .../Microsoft.DotNet.Cli.Nupkg.targets | 69 ++++++++ .../dotnet-cli-build/ArchiveDirectory.cs | 95 ++++++++++ build_projects/dotnet-cli-build/DebTargets.cs | 12 +- .../dotnet-cli-build/DecompressZip.cs | 34 ++++ .../dotnet-cli-build/DownloadFile.cs | 49 ++++++ .../dotnet-cli-build/GenerateGuidFromName.cs | 82 +++++++++ build_projects/dotnet-cli-build/MsiTargets.cs | 4 +- build_projects/dotnet-cli-build/PkgTargets.cs | 12 +- .../dotnet-cli-build/TestTargets.cs | 2 +- build_projects/dotnet-cli-build/project.json | 4 +- .../shared-build-targets-utils/Utils/Utils.cs | 50 ------ packaging/windows/clisdk/generatebundle.ps1 | 2 - src/dotnet/project.json | 12 +- test/Installer/testmsi.ps1 | 5 +- 23 files changed, 698 insertions(+), 87 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Package.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Archive.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Installer.DEB.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Installer.MSI.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Installer.PKG.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Layout.targets create mode 100644 build/package/Microsoft.DotNet.Cli.Nupkg.targets create mode 100644 build_projects/dotnet-cli-build/ArchiveDirectory.cs create mode 100644 build_projects/dotnet-cli-build/DecompressZip.cs create mode 100644 build_projects/dotnet-cli-build/DownloadFile.cs create mode 100644 build_projects/dotnet-cli-build/GenerateGuidFromName.cs diff --git a/NuGet.Config b/NuGet.Config index 73b213125..6600c4f02 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -5,6 +5,7 @@ + diff --git a/build.proj b/build.proj index 04246e6d5..133cfa712 100644 --- a/build.proj +++ b/build.proj @@ -26,13 +26,21 @@ - - + + + + + + + + Outputs="$(CLIBuildDll)" + DependsOnTargets="MSBuildWorkaroundTarget"> @@ -40,7 +48,6 @@ - @@ -51,13 +58,10 @@ - - - - - \ No newline at end of file + + diff --git a/build/Microsoft.DotNet.Cli.Package.targets b/build/Microsoft.DotNet.Cli.Package.targets new file mode 100644 index 000000000..0ca7a1758 --- /dev/null +++ b/build/Microsoft.DotNet.Cli.Package.targets @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 7de75544f..f999f3c79 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -25,6 +25,7 @@ $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages + $(BaseOutputDirectory)/stage2symbols @@ -46,6 +47,10 @@ $(BaseOutputDirectory)/$(VersionBadgeMoniker)_$(Configuration)_version_badge.svg $(NugetVersion) + + $(VersionMajor).$(VersionMinor).$(VersionPatch)-preview3-$(CommitCount) + $(VersionMajor).$(VersionMinor).$(VersionPatch)-rc4-$(CommitCount) + $(VersionMajor).$(VersionMinor).1-beta-$(CommitCount) .zip .tar.gz @@ -61,18 +66,15 @@ $(Rid) $(OSName)-$(Architecture) - - $(PackagesDirectory)/dotnet-sdk-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-sdk-$(ProductMonikerRid).$(SdkVersion)$(InstallerExtension) + dotnet-sdk + dotnet-sdk-debug + dotnet-dev + dotnet-sharedframework-sdk - $(PackagesDirectory)/dotnet-dev-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-dev-$(ProductMonikerRid).$(SdkVersion)$(BundleExtension) - - $(PackagesDirectory)/dotnet-sharedframework-sdk-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-sharedframework-sdk-$(ProductMonikerRid).$(SdkVersion)$(BundleExtension) - - $(PackagesDirectory)/dotnet-sdk-debug-$(ProductMonikerRid).$(SdkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-sdk-debug-$(ProductMonikerRid).$(SdkVersion)$(InstallerExtension) + $(ArtifactNameSdk)-$(ProductMonikerRid).$(SdkVersion) + $(ArtifactNameSdkDebug)-$(ProductMonikerRid).$(SdkVersion) + $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(ProductMonikerRid).$(SdkVersion) + $(ArtifactNameCombinedFrameworkSdk)-$(ProductMonikerRid).$(SdkVersion) $(PackagesDirectory)/dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(ArchiveExtension) diff --git a/build/package/Microsoft.DotNet.Cli.Archive.targets b/build/package/Microsoft.DotNet.Cli.Archive.targets new file mode 100644 index 000000000..0caa18de8 --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Archive.targets @@ -0,0 +1,32 @@ + + + + + + + + $(PackagesDirectory) + + + + + + + + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets new file mode 100644 index 000000000..13bf3b7df --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets new file mode 100644 index 000000000..afcc2a4a2 --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -0,0 +1,165 @@ + + + + + + + + + + + 3.10.2 + https://dotnetcli.blob.core.windows.net/build/wix/wix.$(WixVersion).zip + $(IntermediateDirectory)/WixTools/$(WixVersion) + $(WixRoot)/WixTools.$(WixVersion).zip + $(WixRoot)/WixDownload.$(WixVersion).sentinel + + + + + $(PackagesDirectory) + + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)-engine.exe + + $(RepoRoot)/packaging/windows/clisdk/generatemsi.ps1 + $(RepoRoot)/packaging/windows/clisdk/generatebundle.ps1 + + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension) + + + $(SharedFrameworkInstallerFile) + $(HostFxrInstallerFile) + $(SharedHostInstallerFile) + + + + + + + + + + + + + + + + + + $(RepoRoot)/test/Installer/testmsi.ps1 + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk).MsiTested.sentinel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets new file mode 100644 index 000000000..fa1ea1aa4 --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets new file mode 100644 index 000000000..4e975fba0 --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -0,0 +1,69 @@ + + + + + + $(IntermediateDirectory)/layouts + + + + + + + + + + + + + $(LayoutDirectory)/$(ArtifactNameSdk) + $(LayoutDirectory)/$(ArtifactNameSdkDebug) + $(LayoutDirectory)/$(ArtifactNameCombinedHostHostFxrFrameworkSdk) + $(LayoutDirectory)/$(ArtifactNameCombinedFrameworkSdk) + + + + + + @(SdkLayoutInput) + @(SdkLayoutInput -> '$(SdkLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + $(ArtifactNameWithVersionSdk) + $(ArtifactNameSdk) + + + + @(SdkDebugLayoutInput) + @(SdkDebugLayoutInput -> '$(SdkDebugLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(SymbolsOutputDirectory), '%(Identity)'))') + $(ArtifactNameWithVersionSdkDebug) + $(ArtifactNameSdkDebug) + + + + @(CombinedHostHostFxrFrameworkSdkInput) + @(CombinedHostHostFxrFrameworkSdkInput -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + $(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk) + $(ArtifactNameCombinedHostHostFxrFrameworkSdk) + + + + @(CombinedFrameworkSdkInput) + @(CombinedFrameworkSdkInput -> '$(CombinedFrameworkSdkOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + $(ArtifactNameWithVersionCombinedFrameworkSdk) + $(ArtifactNameCombinedFrameworkSdk) + + + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets new file mode 100644 index 000000000..ad83caa56 --- /dev/null +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -0,0 +1,69 @@ + + + + + + $(CommitCount) + $(RepoRoot)/src + $(Stage2CompilationDirectory)/forPackaging + $(PackagesDirectory) + + + + + Microsoft.DotNet.Cli.Utils + $(SdkProjectJsonVersion) + + + Microsoft.DotNet.Compiler.Common + $(SdkProjectJsonVersion) + + + Microsoft.DotNet.Files + $(SdkProjectJsonVersion) + + + Microsoft.DotNet.InternalAbstractions + $(DependencyModelAndInternalAbstractionsProjectJsonVersion) + + + Microsoft.DotNet.ProjectModel + $(ProjectModelProjectJsonVersion) + + + Microsoft.DotNet.ProjectModel.Loader + $(SdkProjectJsonVersion) + + + Microsoft.DotNet.ProjectModel.Workspaces + $(SdkProjectJsonVersion) + + + Microsoft.Extensions.DependencyModel + $(DependencyModelAndInternalAbstractionsProjectJsonVersion) + + + Microsoft.Extensions.Testing.Abstractions + $(SdkProjectJsonVersion) + + + + + + + + + + + + + diff --git a/build_projects/dotnet-cli-build/ArchiveDirectory.cs b/build_projects/dotnet-cli-build/ArchiveDirectory.cs new file mode 100644 index 000000000..11285ca04 --- /dev/null +++ b/build_projects/dotnet-cli-build/ArchiveDirectory.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class ArchiveDirectory : Task + { + [Required] + public string FileName { get; set; } + + [Required] + public string OutputDirectory { get; set; } + + [Required] + public string InputDirectory { get; set; } + + [Output] + public string OutputArchive { get; set; } + + public override bool Execute() + { + if (!Directory.Exists(InputDirectory)) + { + return true; + } + + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + { + OutputArchive = GenerateZip(); + } + else + { + OutputArchive = GenerateTarGz(); + } + + return true; + } + + public string GenerateZip() + { + var extension = ".zip"; + var outFile = Path.Combine(OutputDirectory, FileName + extension); + + CreateZipFromDirectory(InputDirectory, outFile); + + return outFile; + } + + public string GenerateTarGz() + { + var extension = ".tar.gz"; + var outFile = Path.Combine(OutputDirectory, FileName + extension); + + CreateTarGzFromDirectory(InputDirectory, outFile); + + return outFile; + } + + private static void CreateZipFromDirectory(string directory, string outputArchivePath) + { + FS.Mkdirp(Path.GetDirectoryName(outputArchivePath)); + + if (File.Exists(outputArchivePath)) + { + File.Delete(outputArchivePath); + } + + ZipFile.CreateFromDirectory(directory, outputArchivePath, CompressionLevel.Optimal, false); + } + + private static void CreateTarGzFromDirectory(string directory, string outputArchivePath) + { + FS.Mkdirp(Path.GetDirectoryName(outputArchivePath)); + + if (File.Exists(outputArchivePath)) + { + File.Delete(outputArchivePath); + } + + Cmd("tar", "-czf", outputArchivePath, "-C", directory, ".") + .Execute() + .EnsureSuccessful(); + } + } +} diff --git a/build_projects/dotnet-cli-build/DebTargets.cs b/build_projects/dotnet-cli-build/DebTargets.cs index 8af22d83d..cf5435cf8 100644 --- a/build_projects/dotnet-cli-build/DebTargets.cs +++ b/build_projects/dotnet-cli-build/DebTargets.cs @@ -7,15 +7,25 @@ using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; +using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class DebTargets + public class DebTargets : Task { + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return GenerateDebs(c).Success; + } + public static BuildTargetResult GenerateDebs(BuildTargetContext c) { if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { + PrepareTargets.Init(c); GenerateSdkDeb(c); } diff --git a/build_projects/dotnet-cli-build/DecompressZip.cs b/build_projects/dotnet-cli-build/DecompressZip.cs new file mode 100644 index 000000000..6daaa97fb --- /dev/null +++ b/build_projects/dotnet-cli-build/DecompressZip.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DecompressZip : Task + { + [Required] + public string InputZip { get; set; } + + [Required] + public string DestinationDirectory { get; set; } + + public override bool Execute() + { + FS.Mkdirp(DestinationDirectory); + + ZipFile.ExtractToDirectory(InputZip, DestinationDirectory); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/DownloadFile.cs b/build_projects/dotnet-cli-build/DownloadFile.cs new file mode 100644 index 000000000..c08a05590 --- /dev/null +++ b/build_projects/dotnet-cli-build/DownloadFile.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DownloadFile : Task + { + [Required] + public string Uri { get; set; } + + [Required] + public string DestinationPath { get; set; } + + public bool Overwrite { get; set; } + + public override bool Execute() + { + FS.Mkdirp(Path.GetDirectoryName(DestinationPath)); + + if (File.Exists(DestinationPath) && !Overwrite) + { + return true; + } + + using (var httpClient = new HttpClient()) + { + var getTask = httpClient.GetStreamAsync(Uri); + + using (var outStream = File.Create(DestinationPath)) + { + getTask.Result.CopyTo(outStream); + } + } + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs new file mode 100644 index 000000000..9554b918a --- /dev/null +++ b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System.Security.Cryptography; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GenerateGuidFromName : Task + { + [Required] + public string Name { get; set; } + + [Output] + public string OutputGuid { get; set; } + + public override bool Execute() + { + OutputGuid = GenerateGuid(Name).ToString(); + + return true; + } + + public static Guid GenerateGuid(string name) + { + // Any fixed GUID will do for a namespace. + Guid namespaceId = new Guid("28F1468D-672B-489A-8E0C-7C5B3030630C"); + + using (SHA1 hasher = SHA1.Create()) + { + var nameBytes = System.Text.Encoding.UTF8.GetBytes(name ?? string.Empty); + var namespaceBytes = namespaceId.ToByteArray(); + + SwapGuidByteOrder(namespaceBytes); + + var streamToHash = new byte[namespaceBytes.Length + nameBytes.Length]; + + Array.Copy(namespaceBytes, streamToHash, namespaceBytes.Length); + Array.Copy(nameBytes, 0, streamToHash, namespaceBytes.Length, nameBytes.Length); + + var hashResult = hasher.ComputeHash(streamToHash); + + var res = new byte[16]; + + Array.Copy(hashResult, res, res.Length); + + unchecked { res[6] = (byte)(0x50 | (res[6] & 0x0F)); } + unchecked { res[8] = (byte)(0x40 | (res[8] & 0x3F)); } + + SwapGuidByteOrder(res); + + return new Guid(res); + } + } + + // Do a byte order swap, .NET GUIDs store multi byte components in little + // endian. + private static void SwapGuidByteOrder(byte[] b) + { + Swap(b, 0, 3); + Swap(b, 1, 2); + Swap(b, 5, 6); + Swap(b, 7, 8); + } + + private static void Swap(byte[] b, int x, int y) + { + byte t = b[x]; + b[x] = b[y]; + b[y] = t; + } + } +} diff --git a/build_projects/dotnet-cli-build/MsiTargets.cs b/build_projects/dotnet-cli-build/MsiTargets.cs index a913a95bf..abb1d3da3 100644 --- a/build_projects/dotnet-cli-build/MsiTargets.cs +++ b/build_projects/dotnet-cli-build/MsiTargets.cs @@ -114,7 +114,7 @@ namespace Microsoft.DotNet.Cli.Build if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) { var cliSdkRoot = c.BuildContext.Get("CLISDKRoot"); - var upgradeCode = Utils.GenerateGuidFromName(SdkMsi).ToString().ToUpper(); + var upgradeCode = GenerateGuidFromName.GenerateGuid(SdkMsi).ToString().ToUpper(); var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; Cmd("powershell", "-NoProfile", "-NoLogo", @@ -131,7 +131,7 @@ namespace Microsoft.DotNet.Cli.Build { if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) { - var upgradeCode = Utils.GenerateGuidFromName(SdkBundle).ToString().ToUpper(); + var upgradeCode = GenerateGuidFromName.GenerateGuid(SdkBundle).ToString().ToUpper(); var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; Cmd("powershell", "-NoProfile", "-NoLogo", diff --git a/build_projects/dotnet-cli-build/PkgTargets.cs b/build_projects/dotnet-cli-build/PkgTargets.cs index aac8a54d0..c10bc2a33 100644 --- a/build_projects/dotnet-cli-build/PkgTargets.cs +++ b/build_projects/dotnet-cli-build/PkgTargets.cs @@ -7,10 +7,11 @@ using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; +using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class PkgTargets + public class PkgTargets : Task { public static string PkgsIntermediateDir { get; set; } public static string SharedHostComponentId { get; set; } @@ -45,10 +46,19 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return GeneratePkgs(c).Success; + } + public static BuildTargetResult GeneratePkgs(BuildTargetContext c) { if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) { + PrepareTargets.Init(c); InitPkg(c); GenerateCLISdkProductArchive(c); } diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index e1a54e55d..82a112d50 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -30,7 +30,7 @@ namespace Microsoft.DotNet.Cli.Build // "dotnet-compile-fsc.Tests", "dotnet-new.Tests", "dotnet-pack.Tests", - "dotnet-projectmodel-server.Tests", + //"dotnet-projectmodel-server.Tests", "dotnet-publish.Tests", "dotnet-resgen.Tests", "dotnet-run.Tests", diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index c6bf2de23..2c1064329 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -22,8 +22,8 @@ "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", "NuGet.CommandLine.XPlat": "3.5.0-beta2-1484", - "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" + "Microsoft.Build.Framework": "0.1.0-preview-00028-160627", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00028-160627" }, "frameworks": { "netcoreapp1.0": { diff --git a/build_projects/shared-build-targets-utils/Utils/Utils.cs b/build_projects/shared-build-targets-utils/Utils/Utils.cs index de0ede723..05e9f0aa6 100644 --- a/build_projects/shared-build-targets-utils/Utils/Utils.cs +++ b/build_projects/shared-build-targets-utils/Utils/Utils.cs @@ -38,56 +38,6 @@ namespace Microsoft.DotNet.Cli.Build } } - // Generate a Version 5 (SHA1 Name Based) Guid from a name. - public static Guid GenerateGuidFromName(string name) - { - // Any fixed GUID will do for a namespace. - Guid namespaceId = new Guid("28F1468D-672B-489A-8E0C-7C5B3030630C"); - - using (SHA1 hasher = SHA1.Create()) - { - var nameBytes = System.Text.Encoding.UTF8.GetBytes(name ?? string.Empty); - var namespaceBytes = namespaceId.ToByteArray(); - - SwapGuidByteOrder(namespaceBytes); - - var streamToHash = new byte[namespaceBytes.Length + nameBytes.Length]; - - Array.Copy(namespaceBytes, streamToHash, namespaceBytes.Length); - Array.Copy(nameBytes, 0, streamToHash, namespaceBytes.Length, nameBytes.Length); - - var hashResult = hasher.ComputeHash(streamToHash); - - var res = new byte[16]; - - Array.Copy(hashResult, res, res.Length); - - unchecked { res[6] = (byte)(0x50 | (res[6] & 0x0F)); } - unchecked { res[8] = (byte)(0x40 | (res[8] & 0x3F)); } - - SwapGuidByteOrder(res); - - return new Guid(res); - } - } - - // Do a byte order swap, .NET GUIDs store multi byte components in little - // endian. - private static void SwapGuidByteOrder(byte[] b) - { - Swap(b, 0, 3); - Swap(b, 1, 2); - Swap(b, 5, 6); - Swap(b, 7, 8); - } - - private static void Swap(byte[] b, int x, int y) - { - byte t = b[x]; - b[x] = b[y]; - b[y] = t; - } - public static void DeleteDirectory(string path) { if (Directory.Exists(path)) diff --git a/packaging/windows/clisdk/generatebundle.ps1 b/packaging/windows/clisdk/generatebundle.ps1 index 948caed91..c0a32947f 100644 --- a/packaging/windows/clisdk/generatebundle.ps1 +++ b/packaging/windows/clisdk/generatebundle.ps1 @@ -113,6 +113,4 @@ if(!(Test-Path $DotnetBundleOutput)) Write-Host -ForegroundColor Green "Successfully created dotnet bundle - $DotnetBundleOutput" -_ $RepoRoot\test\Installer\testmsi.ps1 @("$CLISDKMSIFile") - exit $LastExitCode diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 35116b1ef..527513bc6 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -60,12 +60,12 @@ "exclude": "compile" }, - "MSBuild": "0.1.0-preview-00024-160610", - "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610", - "Microsoft.Build.Targets": "0.1.0-preview-00024-160610", - "Microsoft.Build": "0.1.0-preview-00024-160610", + "MSBuild": "0.1.0-preview-00028-160627", + "Microsoft.Build.Framework": "0.1.0-preview-00028-160627", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00028-160627", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00028-160627", + "Microsoft.Build.Targets": "0.1.0-preview-00028-160627", + "Microsoft.Build": "0.1.0-preview-00028-160627", "Microsoft.Net.Compilers.NetCore": "1.3.0", "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", "Microsoft.Cci": "4.0.0-rc3-24128-00", diff --git a/test/Installer/testmsi.ps1 b/test/Installer/testmsi.ps1 index f3d12cdbb..67200eed3 100644 --- a/test/Installer/testmsi.ps1 +++ b/test/Installer/testmsi.ps1 @@ -2,7 +2,8 @@ # Licensed under the MIT license. See LICENSE file in the project root for full license information. param( - [Parameter(Mandatory=$true)][string]$inputMsi + [string]$InputMsi, + [string]$DotnetDir ) . "$PSScriptRoot\..\..\scripts\common\_common.ps1" @@ -38,7 +39,7 @@ $testName = "Microsoft.DotNet.Cli.Msi.Tests" $testDir="$PSScriptRoot\$testName" $testBin="$RepoRoot\artifacts\tests\$testName" -pushd "$Stage2Dir" +pushd "$DotnetDir" try { .\dotnet restore ` From ddb3637c26d7c73f56c08b2fc660aad54d322e06 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Wed, 29 Jun 2016 15:56:13 -0700 Subject: [PATCH 010/165] PR Feedback --- NuGet.Config | 1 - build_projects/dotnet-cli-build/TestTargets.cs | 1 + build_projects/dotnet-cli-build/project.json | 4 ++-- src/dotnet/project.json | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/NuGet.Config b/NuGet.Config index 6600c4f02..73b213125 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -5,7 +5,6 @@ - diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index 82a112d50..db692a7ee 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -30,6 +30,7 @@ namespace Microsoft.DotNet.Cli.Build // "dotnet-compile-fsc.Tests", "dotnet-new.Tests", "dotnet-pack.Tests", + // TODO: https://github.com/dotnet/cli/issues/3734 //"dotnet-projectmodel-server.Tests", "dotnet-publish.Tests", "dotnet-resgen.Tests", diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 2c1064329..c6bf2de23 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -22,8 +22,8 @@ "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", "NuGet.CommandLine.XPlat": "3.5.0-beta2-1484", - "Microsoft.Build.Framework": "0.1.0-preview-00028-160627", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00028-160627" + "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" }, "frameworks": { "netcoreapp1.0": { diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 527513bc6..35116b1ef 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -60,12 +60,12 @@ "exclude": "compile" }, - "MSBuild": "0.1.0-preview-00028-160627", - "Microsoft.Build.Framework": "0.1.0-preview-00028-160627", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00028-160627", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00028-160627", - "Microsoft.Build.Targets": "0.1.0-preview-00028-160627", - "Microsoft.Build": "0.1.0-preview-00028-160627", + "MSBuild": "0.1.0-preview-00024-160610", + "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610", + "Microsoft.Build.Targets": "0.1.0-preview-00024-160610", + "Microsoft.Build": "0.1.0-preview-00024-160610", "Microsoft.Net.Compilers.NetCore": "1.3.0", "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", "Microsoft.Cci": "4.0.0-rc3-24128-00", From e6905da2b3c1df32153e43ac905f9b7f4e359a7e Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Wed, 29 Jun 2016 15:59:35 -0700 Subject: [PATCH 011/165] ToUpper --- build_projects/dotnet-cli-build/GenerateGuidFromName.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs index 9554b918a..4df4fe250 100644 --- a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs +++ b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs @@ -25,7 +25,7 @@ namespace Microsoft.DotNet.Cli.Build public override bool Execute() { - OutputGuid = GenerateGuid(Name).ToString(); + OutputGuid = GenerateGuid(Name).ToString().ToUpper(); return true; } From 15642cfd2abae770f850c2a248e744624082f37b Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Wed, 29 Jun 2016 02:41:38 -0500 Subject: [PATCH 012/165] Finish converting 'Prepare' to MSBuild. Implement DownloadHostAndSharedFxArtifacts Implement ZipTemplates Switch the Prepare target to use all the MSBuild targets. --- Microsoft.DotNet.Cli.sln | 14 ++- build.proj | 1 + build/Microsoft.DotNet.Cli.Prepare.targets | 101 +++++++++++++++--- ...Microsoft.DotNet.Cli.Installer.MSI.targets | 6 +- .../dotnet-cli-build/ArchiveDirectory.cs | 18 ++-- .../dotnet-cli-build/DecompressZip.cs | 34 ------ build_projects/dotnet-cli-build/DotNetTool.cs | 6 +- .../dotnet-cli-build/DownloadFile.cs | 13 +-- .../dotnet-cli-build/ExtractArchive.cs | 35 ++++++ .../dotnet-cli-build/GenerateGuidFromName.cs | 12 +-- build_projects/dotnet-cli-build/build.ps1 | 2 +- build_projects/dotnet-cli-build/build.sh | 9 +- 12 files changed, 157 insertions(+), 94 deletions(-) delete mode 100644 build_projects/dotnet-cli-build/DecompressZip.cs create mode 100644 build_projects/dotnet-cli-build/ExtractArchive.cs diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 03125bb8a..60ca154de 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.25402.0 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED2FE3E2-F7E7-4389-8231-B65123F2076F}" EndProject @@ -126,9 +126,20 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build3.Tests", "test EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}" ProjectSection(SolutionItems) = preProject + build\Microsoft.DotNet.Cli.Package.targets = build\Microsoft.DotNet.Cli.Package.targets build\Microsoft.DotNet.Cli.Prepare.targets = build\Microsoft.DotNet.Cli.Prepare.targets EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{31A6D092-F50C-4D70-BA4D-97098189A953}" + ProjectSection(SolutionItems) = preProject + build\package\Microsoft.DotNet.Cli.Archive.targets = build\package\Microsoft.DotNet.Cli.Archive.targets + build\package\Microsoft.DotNet.Cli.Installer.DEB.targets = build\package\Microsoft.DotNet.Cli.Installer.DEB.targets + build\package\Microsoft.DotNet.Cli.Installer.MSI.targets = build\package\Microsoft.DotNet.Cli.Installer.MSI.targets + build\package\Microsoft.DotNet.Cli.Installer.PKG.targets = build\package\Microsoft.DotNet.Cli.Installer.PKG.targets + build\package\Microsoft.DotNet.Cli.Layout.targets = build\package\Microsoft.DotNet.Cli.Layout.targets + build\package\Microsoft.DotNet.Cli.Nupkg.targets = build\package\Microsoft.DotNet.Cli.Nupkg.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -967,5 +978,6 @@ Global {4C3B06D5-B6D5-4E5B-A44F-3EBE52A1C759} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {35B19F22-B8C0-4849-9C35-3F809B7588B8} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {49D7318E-D198-4E2B-BBEA-3A24D805F88D} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} + {31A6D092-F50C-4D70-BA4D-97098189A953} = {89905EC4-BC0F-443B-8ADF-691321F10108} EndGlobalSection EndGlobal diff --git a/build.proj b/build.proj index 133cfa712..169def133 100644 --- a/build.proj +++ b/build.proj @@ -20,6 +20,7 @@ Debug $(MSBuildThisFileDirectory) + preview 1.0.0 1.0.1 1.0.1 diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 8ed0fdff6..ef5d28e82 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -1,17 +1,19 @@ - + + + - - - + - + @@ -32,6 +34,7 @@ $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages $(BaseOutputDirectory)/stage2symbols + $(IntermediateDirectory)/sharedFrameworkPublish @@ -83,17 +86,16 @@ $(ArtifactNameCombinedFrameworkSdk)-$(ProductMonikerRid).$(SdkVersion) - $(PackagesDirectory)/dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(InstallerExtension) + dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(InstallerExtension) + $(PackagesDirectory)/$(SharedHostInstallerFileName) - $(PackagesDirectory)/dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(InstallerExtension) + dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(InstallerExtension) + $(PackagesDirectory)/$(HostFxrInstallerFileName) - $(PackagesDirectory)/dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(InstallerExtension) + dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(InstallerExtension) + $(PackagesDirectory)/$(SharedFrameworkInstallerFileName) - $(PackagesDirectory)/dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) - $(PackagesDirectory)/dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(BundleExtension) + dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) Microsoft .NET Core 1.0.0 - SDK Preview 2 @@ -104,11 +106,80 @@ - + + + https://dotnetcli.blob.core.windows.net/dotnet/$(CoreSetupChannel) + $(CoreSetupBlobRootUrl)/Binaries/$(SharedFrameworkVersion) + $(CoreSetupBlobRootUrl)/Installers + + $(IntermediateDirectory)/coreSetupDownload/$(SharedFrameworkVersion) + $(CoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive + + + + <_DownloadAndExtractItem Include="CombinedSharedHostAndFrameworkArchive" + Condition="!Exists('$(CombinedSharedHostAndFrameworkArchive)')"> + $(SharedFrameworkArchiveBlobRootUrl)/$(CombinedFrameworkHostCompressedFileName) + $(CombinedSharedHostAndFrameworkArchive) + $(SharedFrameworkPublishDirectory) + + + <_DownloadAndExtractItem Include="SharedFrameworkInstallerFile" + Condition="!Exists('$(SharedFrameworkInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(SharedFrameworkInstallerFileName) + $(SharedFrameworkInstallerFile) + + + + <_DownloadAndExtractItem Include="SharedHostInstallerFile" + Condition="!Exists('$(SharedHostInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(SharedHostInstallerFileName) + $(SharedHostInstallerFile) + + + + <_DownloadAndExtractItem Include="HostFxrInstallerFile" + Condition="!Exists('$(HostFxrInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(HostFxrInstallerFileName) + $(HostFxrInstallerFile) + + + + + + + + + + + + + - + + + + + + <_DotNetNewFolder>$(RepoRoot)/src/dotnet/commands/dotnet-new + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets index afcc2a4a2..b5b81c41e 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -2,7 +2,7 @@ - + @@ -73,8 +73,8 @@ DestinationPath="$(WixDestinationPath)" Overwrite="false" /> - diff --git a/build_projects/dotnet-cli-build/ArchiveDirectory.cs b/build_projects/dotnet-cli-build/ArchiveDirectory.cs index 11285ca04..2227f9aaf 100644 --- a/build_projects/dotnet-cli-build/ArchiveDirectory.cs +++ b/build_projects/dotnet-cli-build/ArchiveDirectory.cs @@ -1,14 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; +using System.IO; using System.IO.Compression; -using System.Runtime.InteropServices; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; - +using Microsoft.DotNet.Cli.Build.Framework; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; namespace Microsoft.DotNet.Cli.Build @@ -24,6 +18,8 @@ namespace Microsoft.DotNet.Cli.Build [Required] public string InputDirectory { get; set; } + public bool ForceZipArchive { get; set; } + [Output] public string OutputArchive { get; set; } @@ -34,15 +30,17 @@ namespace Microsoft.DotNet.Cli.Build return true; } - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) + if (CurrentPlatform.IsPlatform(BuildPlatform.Windows) || ForceZipArchive) { OutputArchive = GenerateZip(); } - else + else { OutputArchive = GenerateTarGz(); } + Log.LogMessage($"Created Archive '{OutputArchive}'"); + return true; } diff --git a/build_projects/dotnet-cli-build/DecompressZip.cs b/build_projects/dotnet-cli-build/DecompressZip.cs deleted file mode 100644 index 6daaa97fb..000000000 --- a/build_projects/dotnet-cli-build/DecompressZip.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class DecompressZip : Task - { - [Required] - public string InputZip { get; set; } - - [Required] - public string DestinationDirectory { get; set; } - - public override bool Execute() - { - FS.Mkdirp(DestinationDirectory); - - ZipFile.ExtractToDirectory(InputZip, DestinationDirectory); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs index d3d8581b7..388cacade 100644 --- a/build_projects/dotnet-cli-build/DotNetTool.cs +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -5,8 +5,6 @@ namespace Microsoft.DotNet.Cli.Build { public abstract class DotNetTool : ToolTask { - private const string ExeName = "dotnet.exe"; - public DotNetTool() { } @@ -19,7 +17,7 @@ namespace Microsoft.DotNet.Cli.Build protected override string ToolName { - get { return ExeName; } + get { return HostArtifactNames.DotnetHostBaseName; } } protected override MessageImportance StandardOutputLoggingImportance @@ -34,7 +32,7 @@ namespace Microsoft.DotNet.Cli.Build // if ToolPath was not provided by the MSBuild script if (string.IsNullOrEmpty(path)) { - Log.LogError($"Could not find the Path to {ExeName}"); + Log.LogError($"Could not find the Path to {ToolName}"); return string.Empty; } diff --git a/build_projects/dotnet-cli-build/DownloadFile.cs b/build_projects/dotnet-cli-build/DownloadFile.cs index c08a05590..f008c14de 100644 --- a/build_projects/dotnet-cli-build/DownloadFile.cs +++ b/build_projects/dotnet-cli-build/DownloadFile.cs @@ -1,17 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; +using System.IO; using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - namespace Microsoft.DotNet.Cli.Build { public class DownloadFile : Task @@ -33,6 +24,8 @@ namespace Microsoft.DotNet.Cli.Build return true; } + Log.LogMessage($"Downloading '{Uri}' to '{DestinationPath}'"); + using (var httpClient = new HttpClient()) { var getTask = httpClient.GetStreamAsync(Uri); diff --git a/build_projects/dotnet-cli-build/ExtractArchive.cs b/build_projects/dotnet-cli-build/ExtractArchive.cs new file mode 100644 index 000000000..9535cfa2e --- /dev/null +++ b/build_projects/dotnet-cli-build/ExtractArchive.cs @@ -0,0 +1,35 @@ +using System.IO.Compression; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class ExtractArchive : Task + { + [Required] + public string InputFile { get; set; } + + [Required] + public string DestinationDirectory { get; set; } + + public override bool Execute() + { + FS.Mkdirp(DestinationDirectory); + + Log.LogMessage($"Extracting Archive '{InputFile}' to '{DestinationDirectory}'"); + + if (CurrentPlatform.IsWindows) + { + ZipFile.ExtractToDirectory(InputFile, DestinationDirectory); + } + else + { + Exec("tar", "xf", InputFile, "-C", DestinationDirectory); + } + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs index 4df4fe250..98ddc39b4 100644 --- a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs +++ b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs @@ -1,17 +1,7 @@ using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; +using System.Security.Cryptography; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using System.Security.Cryptography; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/build.ps1 b/build_projects/dotnet-cli-build/build.ps1 index 7142e78c2..bbc5dde50 100644 --- a/build_projects/dotnet-cli-build/build.ps1 +++ b/build_projects/dotnet-cli-build/build.ps1 @@ -71,7 +71,7 @@ $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 # Restore the build scripts Write-Host "Restoring Build Script projects..." -pushd "$PSScriptRoot\.." +pushd "$PSScriptRoot" dotnet restore if($LASTEXITCODE -ne 0) { throw "Failed to restore" } popd diff --git a/build_projects/dotnet-cli-build/build.sh b/build_projects/dotnet-cli-build/build.sh index 7cb3649ec..11fee896c 100755 --- a/build_projects/dotnet-cli-build/build.sh +++ b/build_projects/dotnet-cli-build/build.sh @@ -110,7 +110,7 @@ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 # Restore the build scripts echo "Restoring Build Script projects..." ( - cd "$DIR/.." + cd "$DIR" dotnet restore ) @@ -118,13 +118,12 @@ echo "Restoring Build Script projects..." echo "Compiling Build Scripts..." dotnet publish "$DIR" -o "$DIR/bin" --framework netcoreapp1.0 -if [-z "$DOTNET_BUILD_SKIP_RUN" ] -then +if [ -z "$DOTNET_BUILD_SKIP_RUN" ]; then export PATH="$OLDPATH" # Run the builder echo "Invoking Build Scripts..." echo "Configuration: $CONFIGURATION" + + $DIR/bin/dotnet-cli-build ${targets[@]} fi - -$DIR/bin/dotnet-cli-build ${targets[@]} exit $? From 262a46e241dca3b8662b719553004d2d9624bbdb Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 14:10:55 -0700 Subject: [PATCH 013/165] CompileTargets moved to MSBuild CompileTargets moved to MSBuild. Still need to work on input/outputs, refactoring of targets, specially around CompileStage and moving some of the tasks back to msbuild instead of C# code. --- build.proj | 16 +- build/Microsoft.DotNet.Cli.Compile.targets | 189 ++++++++ build/Microsoft.DotNet.Cli.Prepare.targets | 13 +- .../Microsoft.DotNet.Cli.Archive.targets | 43 ++ .../Microsoft.DotNet.Cli.Nupkg.targets | 12 + .../ChangeEntryPointLibraryName.cs | 30 ++ .../dotnet-cli-build/CleanPublishOutput.cs | 34 ++ .../dotnet-cli-build/CompileTargets.cs | 402 ------------------ .../dotnet-cli-build/CrossgenDirectory.cs | 32 ++ .../dotnet-cli-build/FixModeFlags.cs | 28 ++ .../RemoveAssetFromDepsPackages.cs | 68 +++ .../SharedFrameworkNameVersionPath.cs | 34 ++ 12 files changed, 492 insertions(+), 409 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Compile.targets create mode 100644 build/compile/Microsoft.DotNet.Cli.Archive.targets create mode 100644 build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs create mode 100644 build_projects/dotnet-cli-build/CleanPublishOutput.cs delete mode 100644 build_projects/dotnet-cli-build/CompileTargets.cs create mode 100644 build_projects/dotnet-cli-build/CrossgenDirectory.cs create mode 100644 build_projects/dotnet-cli-build/FixModeFlags.cs create mode 100644 build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs create mode 100644 build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs diff --git a/build.proj b/build.proj index 133cfa712..887061871 100644 --- a/build.proj +++ b/build.proj @@ -1,5 +1,8 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(RepoRoot)/src + + .exe + + + + lib + + .dll + .dylib + .so + + dotnet$(ExeSuffix) + $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) + $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 8ed0fdff6..5b9165115 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -25,9 +25,16 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) - $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/tools + $(BaseOutputDirectory)/stage1 + $(BaseOutputDirectory)/stage1symbols + $(Stage1Directory)/dotnet.exe + $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/stage2symbols + $(Stage2Directory)/dotnet.exe + $(Stage2Directory) $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages @@ -111,4 +118,4 @@ - + \ No newline at end of file diff --git a/build/compile/Microsoft.DotNet.Cli.Archive.targets b/build/compile/Microsoft.DotNet.Cli.Archive.targets new file mode 100644 index 000000000..f52d76cfc --- /dev/null +++ b/build/compile/Microsoft.DotNet.Cli.Archive.targets @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntermediateDirectory)/NuGetPackagesArchiveProject + $(IntermediateDirectory)/NuGetPackagesArchiveFolder + $(ToolsOutputDirectory)/Archiver + $(IntermediateDirectory)/nuGetPackagesArchive.lzma + $(Stage2Directory)/nuGetPackagesArchive.lzma + + + \ No newline at end of file diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index ad83caa56..3a888ce60 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -13,6 +13,7 @@ Microsoft.DotNet.Cli.Utils +<<<<<<< 2ed5363187bc82b73720ea0288bcb27b5d793e76 $(SdkProjectJsonVersion) @@ -66,4 +67,15 @@ --configuration $(Configuration) --version-suffix $(NupkgVersionSuffix)" /> + + + + + + diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs new file mode 100644 index 000000000..535427c8f --- /dev/null +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class ChangeEntryPointLibraryName : Task + { + public string DepsFile { get; set; } + + public string NewName { get; set; } + + public override bool Execute() + { + PublishMutationUtilties.ChangeEntryPointLibraryName(DepsFile, NewName); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs new file mode 100644 index 000000000..77ab0d008 --- /dev/null +++ b/build_projects/dotnet-cli-build/CleanPublishOutput.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CleanPublishOutput : Task + { + public string Path { get; set; } + + public string Name { get; set; } + + public bool DeleteRuntimeConfigJson { get; set; } + + public bool DeleteDepsJson { get; set; } + + public override bool Execute() + { + PublishMutationUtilties.CleanPublishOutput(Path, Name, DeleteRuntimeConfigJson, DeleteDepsJson); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs deleted file mode 100644 index 6ed367568..000000000 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ /dev/null @@ -1,402 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CompileTargets : Task - { - public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; - - public static readonly string[] BinariesForCoreHost = new[] - { - "csc" - }; - - public static readonly string[] ProjectsToPublish = new[] - { - "dotnet" - }; - - public static readonly string[] FilesToClean = new[] - { - "vbc.exe" - }; - - public static string HostPackagePlatformRid => HostPackageSupportedRids[ - (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) - ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" - : RuntimeEnvironment.GetRuntimeIdentifier()]; - - public static readonly Dictionary HostPackageSupportedRids = new Dictionary() - { - // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. - { "win7-x64", "win7-x64" }, - { "win7-x86", "win7-x86" }, - { "osx.10.10-x64", "osx.10.10-x64" }, - { "osx.10.11-x64", "osx.10.10-x64" }, - { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, - { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, - { "centos.7-x64", "rhel.7-x64" }, - { "rhel.7-x64", "rhel.7-x64" }, - { "rhel.7.2-x64", "rhel.7-x64" }, - { "debian.8-x64", "debian.8-x64" }, - { "fedora.23-x64", "fedora.23-x64" }, - { "opensuse.13.2-x64", "opensuse.13.2-x64" } - }; - - public const string SharedFrameworkName = "Microsoft.NETCore.App"; - - public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Compile(c).Success; - } - - [Target] - public static BuildTargetResult Compile(BuildTargetContext c) - { - PrepareTargets.Init(c); - CompileStage1(c); - CompileStage2(c); - - return c.Success(); - } - - public static BuildTargetResult CompileStage1(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage1)) - { - Utils.DeleteDirectory(Dirs.Stage1); - } - Directory.CreateDirectory(Dirs.Stage1); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage0, - rootOutputDirectory: Dirs.Stage1); - - CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); - FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); - - return result; - } - - public static BuildTargetResult CompileStage2(BuildTargetContext c) - { - var configuration = c.BuildContext.Get("Configuration"); - - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage2)) - { - Utils.DeleteDirectory(Dirs.Stage2); - } - Directory.CreateDirectory(Dirs.Stage2); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage1, - rootOutputDirectory: Dirs.Stage2, - generateNugetPackagesArchive: true); - - if (!result.Success) - { - return result; - } - - if (CurrentPlatform.IsWindows) - { - // build projects for nuget packages - var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); - Mkdirp(packagingOutputDir); - foreach (var project in PackageTargets.ProjectsToPack) - { - // Just build them, we'll pack later - var packBuildResult = DotNetCli.Stage1.Build( - "--build-base-path", - packagingOutputDir, - "--configuration", - configuration, - Path.Combine(c.BuildContext.BuildDirectory, "src", project)) - .Execute(); - - packBuildResult.EnsureSuccessful(); - } - } - - CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); - FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); - - return c.Success(); - } - - private static void CleanOutputDir(string directory) - { - foreach (var file in FilesToClean) - { - FS.RmFilesInDirRecursive(directory, file); - } - } - - private static void RemovePdbsFromDir(string directory) - { - FS.RmFilesInDirRecursive(directory, "*.pdb"); - } - - private static BuildTargetResult CompileCliSdk( - BuildTargetContext c, - DotNetCli dotnet, - string rootOutputDirectory, - bool generateNugetPackagesArchive = false) - { - var configuration = c.BuildContext.Get("Configuration"); - var buildVersion = c.BuildContext.Get("BuildVersion"); - var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); - var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); - - CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); - - FS.CleanBinObj(c, srcDir); - Rmdir(sdkOutputDirectory); - Mkdirp(sdkOutputDirectory); - - foreach (var project in ProjectsToPublish) - { - dotnet.Publish( - "--native-subdirectory", - "--output", sdkOutputDirectory, - "--configuration", configuration, - "--version-suffix", buildVersion.CommitCountString, - Path.Combine(srcDir, project)) - .Execute() - .EnsureSuccessful(); - } - - FixModeFlags(sdkOutputDirectory); - - string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); - dotnet.Publish(compilersProject, - "--output", - sdkOutputDirectory, - "--framework", - "netcoreapp1.0") - .Execute() - .EnsureSuccessful(); - - var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); - var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); - - var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); - var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); - // Corehostify binaries - foreach (var binaryToCorehostify in BinariesForCoreHost) - { - try - { - // Yes, it is .exe even on Linux. This is the managed exe we're working with - File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); - File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); - var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); - - File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); - File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); - PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); - foreach (var binaryToRemove in new string[] { "csc", "vbc" }) - { - var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); - RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); - RemoveAssetFromDepsPackages( - Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); - } - } - catch (Exception ex) - { - return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); - } - } - - // cleanup compilers project output we don't need - PublishMutationUtilties.CleanPublishOutput( - sdkOutputDirectory, - "compilers", - deleteRuntimeConfigJson: true, - deleteDepsJson: true); - - // Crossgen SDK directory - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - rootOutputDirectory, - sharedFrameworkNugetVersion); - - // Copy Host to SDK Directory - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), - overwrite: true); - - CrossgenUtil.CrossgenDirectory( - sharedFrameworkNameVersionPath, - sdkOutputDirectory); - - // Generate .version file - var version = buildVersion.NuGetVersion; - var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; - File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); - - if(generateNugetPackagesArchive) - { - GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); - } - - CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); - - return c.Success(); - } - - private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) - { - var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); - - var filesToCopy = new List(); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); - - foreach (var fileFullPath in filesToCopy) - { - var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); - var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); - - File.Copy(fileFullPath, destinationFilePath, true); - } - } - - private static void GenerateNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string sdkOutputDirectory) - { - var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); - var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); - - RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); - - CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); - } - - private static void RestoreNuGetPackagesArchive( - DotNetCli dotnet, - string nuGetPackagesArchiveProject, - string nuGetPackagesArchiveFolder) - { - Rmdir(nuGetPackagesArchiveProject); - Mkdirp(nuGetPackagesArchiveProject); - - Rmdir(nuGetPackagesArchiveFolder); - Mkdirp(nuGetPackagesArchiveFolder); - - dotnet.New() - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - - dotnet.Restore("--packages", nuGetPackagesArchiveFolder) - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - } - - private static void CompressNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string nuGetPackagesArchiveFolder, - string sdkOutputDirectory) - { - var configuration = c.BuildContext.Get("Configuration"); - var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); - var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); - var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); - - Rm(intermediateArchive); - Rm($"{intermediateArchive}.zip"); - - c.Info("Publishing Archiver"); - dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) - .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) - .Execute() - .EnsureSuccessful(); - - Cmd(archiverExe, - "-a", intermediateArchive, - nuGetPackagesArchiveFolder) - .Execute(); - - File.Copy(intermediateArchive, finalArchive); - } - - private static void RemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) - { - JToken deps; - using (var file = File.OpenText(depsFile)) - using (JsonTextReader reader = new JsonTextReader(file)) - { - deps = JObject.ReadFrom(reader); - } - - foreach (JProperty target in deps["targets"]) - { - foreach (JProperty pv in target.Value.Children()) - { - var section = pv.Value[sectionName]; - if (section != null) - { - foreach (JProperty relPath in section) - { - if (assetPath.Equals(relPath.Name)) - { - relPath.Remove(); - break; - } - } - } - } - } - using (var file = File.CreateText(depsFile)) - using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) - { - deps.WriteTo(writer); - } - } - - private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) - { - CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); - } - } -} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs new file mode 100644 index 000000000..5010295e3 --- /dev/null +++ b/build_projects/dotnet-cli-build/CrossgenDirectory.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CrossgenDirectory : Task + { + private static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + public string SharedFrameworkNameVersionPath { get; set; } + + public string SdkOutputDirectory { get; set; } + + public override bool Execute() + { + CrossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs new file mode 100644 index 000000000..225a82a6e --- /dev/null +++ b/build_projects/dotnet-cli-build/FixModeFlags.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class FixModeFlags : Task + { + public string Dir { get; set; } + + public override bool Execute() + { + FS.FixModeFlags(Dir); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs new file mode 100644 index 000000000..9d37583fd --- /dev/null +++ b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class RemoveAssetFromDepsPackages : Task + { + public string DepsFile { get; set; } + + public string SectionName { get; set; } + + public string AssetPath { get; set; } + + public override bool Execute() + { + DoRemoveAssetFromDepsPackages(DepsFile, SectionName, AssetPath); + + return true; + } + + private static void DoRemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) + { + JToken deps; + using (var file = File.OpenText(depsFile)) + using (JsonTextReader reader = new JsonTextReader(file)) + { + deps = JObject.ReadFrom(reader); + } + + foreach (JProperty target in deps["targets"]) + { + foreach (JProperty pv in target.Value.Children()) + { + var section = pv.Value[sectionName]; + if (section != null) + { + foreach (JProperty relPath in section) + { + if (assetPath.Equals(relPath.Name)) + { + relPath.Remove(); + break; + } + } + } + } + } + using (var file = File.CreateText(depsFile)) + using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) + { + deps.WriteTo(writer); + } + } + } +} diff --git a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs new file mode 100644 index 000000000..59bb39e49 --- /dev/null +++ b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class SharedFrameworkNameVersionPath : Task + { + public string RootOutputDirectory { get; set; } + + [Output] + public string OutputSharedFrameworkNameVersionPath { get; set; } + + public override bool Execute() + { + var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + OutputSharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( + RootOutputDirectory, + sharedFrameworkNugetVersion); + + return true; + } + } +} From 58c75d54fd374290ff47e075627fccb9f6528ae9 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 14:01:16 -0700 Subject: [PATCH 014/165] Fixing some paths, moving the compile.targets to the end of build.proj. --- build.proj | 4 +--- build/Microsoft.DotNet.Cli.Compile.targets | 24 +++++++++++++------ .../Microsoft.DotNet.Cli.Archive.targets | 6 +++++ .../Microsoft.DotNet.Cli.Nupkg.targets | 3 ++- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/build.proj b/build.proj index 887061871..f0d06e0cc 100644 --- a/build.proj +++ b/build.proj @@ -1,8 +1,5 @@ - - - - - @@ -138,46 +160,13 @@ - - - - - $(RepoRoot)/src - - .exe - - - - lib - - .dll - .dylib - .so - - dotnet$(ExeSuffix) - $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) - $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) - - - - - + + - - - + - - - - - - - - @@ -188,12 +177,4 @@ - - - - - - - - \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 5b9165115..ada5335f2 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -25,7 +25,7 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/tools $(BaseOutputDirectory)/stage1 From f661ec4a8b78c35d8178b8a236bfc462eeb0db1f Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 17:17:32 -0700 Subject: [PATCH 016/165] Revert "Making CompileStage batch over the different stages to avoid msbuild caching of targets." This reverts commit e100b950d2655609e53c90e51d859c2be7b8f8d0. --- build.proj | 6 +- build/Microsoft.DotNet.Cli.Compile.targets | 143 ++++++++++++--------- build/Microsoft.DotNet.Cli.Prepare.targets | 2 +- 3 files changed, 87 insertions(+), 64 deletions(-) diff --git a/build.proj b/build.proj index 0b41aee5e..f0d06e0cc 100644 --- a/build.proj +++ b/build.proj @@ -8,7 +8,7 @@ .ps1 - .sh + .sh -NoRun --norun @@ -55,6 +55,10 @@ + + + + diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index c85690d8b..f2fb8b5d0 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -9,55 +9,47 @@ + CompileStage1; + CompileStage2"> - - - - - - - @(CompileStageInputs) - $(Stage1Directory) - $(Stage1SymbolsDirectory) - $(Stage0Path)/dotnet.exe - - - @(CompileStageInputs) - $(Stage2Directory) - $(Stage2SymbolsDirectory) - $(DotnetStage1) - - + + + + + + $(Stage1Directory) + $(Stage1SymbolsDirectory) + $(Stage0Path)/dotnet.exe + - + + + + - $(RepoRoot)/src + $(Stage2Directory) + $(Stage2SymbolsDirectory) + $(DotnetStage1) + + - .exe - - - - lib - - .dll - .dylib - .so - - dotnet$(ExeSuffix) - $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) - $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) - - %(Stage.StageDirectory) - %(Stage.StageSymbolsDirectory) + + $(StageDirectory)/sdk/$(NugetVersion) runtimes/any/native $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) @@ -65,10 +57,6 @@ - - - - @@ -81,22 +69,12 @@ - - - - - - - - - - - - @@ -160,13 +138,46 @@ + + + + + $(RepoRoot)/src + + .exe + + + + lib + + .dll + .dylib + .so + + dotnet$(ExeSuffix) + $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) + $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) + - - + + + + - + + + + + + + + + + + @@ -177,4 +188,12 @@ + + + + + + + + \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index ada5335f2..5b9165115 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -25,7 +25,7 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/tools $(BaseOutputDirectory)/stage1 From 014b8982d2f70ecb9b67dd209dad9e67cacbea3f Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 14:01:16 -0700 Subject: [PATCH 017/165] Revert "Fixing some paths, moving the compile.targets to the end of build.proj." This reverts commit 58c75d54fd374290ff47e075627fccb9f6528ae9. --- build.proj | 4 +++- build/Microsoft.DotNet.Cli.Compile.targets | 24 ++++++------------- .../Microsoft.DotNet.Cli.Archive.targets | 6 ----- .../Microsoft.DotNet.Cli.Nupkg.targets | 3 +-- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/build.proj b/build.proj index f0d06e0cc..887061871 100644 --- a/build.proj +++ b/build.proj @@ -1,5 +1,8 @@ + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(RepoRoot)/src - - .exe - - - - lib - - .dll - .dylib - .so - - dotnet$(ExeSuffix) - $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) - $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 5b9165115..8ed0fdff6 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -25,16 +25,9 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) - $(BaseOutputDirectory)/tools - $(BaseOutputDirectory)/stage1 - $(BaseOutputDirectory)/stage1symbols - $(Stage1Directory)/dotnet.exe - $(BaseOutputDirectory)/stage2 - $(BaseOutputDirectory)/stage2symbols - $(Stage2Directory)/dotnet.exe - $(Stage2Directory) + $(BaseOutputDirectory)/stage2 $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages @@ -118,4 +111,4 @@ - \ No newline at end of file + diff --git a/build/compile/Microsoft.DotNet.Cli.Archive.targets b/build/compile/Microsoft.DotNet.Cli.Archive.targets deleted file mode 100644 index f52d76cfc..000000000 --- a/build/compile/Microsoft.DotNet.Cli.Archive.targets +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - $(IntermediateDirectory)/NuGetPackagesArchiveProject - $(IntermediateDirectory)/NuGetPackagesArchiveFolder - $(ToolsOutputDirectory)/Archiver - $(IntermediateDirectory)/nuGetPackagesArchive.lzma - $(Stage2Directory)/nuGetPackagesArchive.lzma - - - \ No newline at end of file diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index 3a888ce60..ad83caa56 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -13,7 +13,6 @@ Microsoft.DotNet.Cli.Utils -<<<<<<< 2ed5363187bc82b73720ea0288bcb27b5d793e76 $(SdkProjectJsonVersion) @@ -67,15 +66,4 @@ --configuration $(Configuration) --version-suffix $(NupkgVersionSuffix)" /> - - - - - - diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs deleted file mode 100644 index 535427c8f..000000000 --- a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class ChangeEntryPointLibraryName : Task - { - public string DepsFile { get; set; } - - public string NewName { get; set; } - - public override bool Execute() - { - PublishMutationUtilties.ChangeEntryPointLibraryName(DepsFile, NewName); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs deleted file mode 100644 index 77ab0d008..000000000 --- a/build_projects/dotnet-cli-build/CleanPublishOutput.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CleanPublishOutput : Task - { - public string Path { get; set; } - - public string Name { get; set; } - - public bool DeleteRuntimeConfigJson { get; set; } - - public bool DeleteDepsJson { get; set; } - - public override bool Execute() - { - PublishMutationUtilties.CleanPublishOutput(Path, Name, DeleteRuntimeConfigJson, DeleteDepsJson); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs new file mode 100644 index 000000000..6ed367568 --- /dev/null +++ b/build_projects/dotnet-cli-build/CompileTargets.cs @@ -0,0 +1,402 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; +using static Microsoft.DotNet.Cli.Build.FS; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CompileTargets : Task + { + public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; + + public static readonly string[] BinariesForCoreHost = new[] + { + "csc" + }; + + public static readonly string[] ProjectsToPublish = new[] + { + "dotnet" + }; + + public static readonly string[] FilesToClean = new[] + { + "vbc.exe" + }; + + public static string HostPackagePlatformRid => HostPackageSupportedRids[ + (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) + ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" + : RuntimeEnvironment.GetRuntimeIdentifier()]; + + public static readonly Dictionary HostPackageSupportedRids = new Dictionary() + { + // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. + { "win7-x64", "win7-x64" }, + { "win7-x86", "win7-x86" }, + { "osx.10.10-x64", "osx.10.10-x64" }, + { "osx.10.11-x64", "osx.10.10-x64" }, + { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, + { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, + { "centos.7-x64", "rhel.7-x64" }, + { "rhel.7-x64", "rhel.7-x64" }, + { "rhel.7.2-x64", "rhel.7-x64" }, + { "debian.8-x64", "debian.8-x64" }, + { "fedora.23-x64", "fedora.23-x64" }, + { "opensuse.13.2-x64", "opensuse.13.2-x64" } + }; + + public const string SharedFrameworkName = "Microsoft.NETCore.App"; + + public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Compile(c).Success; + } + + [Target] + public static BuildTargetResult Compile(BuildTargetContext c) + { + PrepareTargets.Init(c); + CompileStage1(c); + CompileStage2(c); + + return c.Success(); + } + + public static BuildTargetResult CompileStage1(BuildTargetContext c) + { + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage1)) + { + Utils.DeleteDirectory(Dirs.Stage1); + } + Directory.CreateDirectory(Dirs.Stage1); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage0, + rootOutputDirectory: Dirs.Stage1); + + CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); + FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); + + return result; + } + + public static BuildTargetResult CompileStage2(BuildTargetContext c) + { + var configuration = c.BuildContext.Get("Configuration"); + + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage2)) + { + Utils.DeleteDirectory(Dirs.Stage2); + } + Directory.CreateDirectory(Dirs.Stage2); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage1, + rootOutputDirectory: Dirs.Stage2, + generateNugetPackagesArchive: true); + + if (!result.Success) + { + return result; + } + + if (CurrentPlatform.IsWindows) + { + // build projects for nuget packages + var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); + Mkdirp(packagingOutputDir); + foreach (var project in PackageTargets.ProjectsToPack) + { + // Just build them, we'll pack later + var packBuildResult = DotNetCli.Stage1.Build( + "--build-base-path", + packagingOutputDir, + "--configuration", + configuration, + Path.Combine(c.BuildContext.BuildDirectory, "src", project)) + .Execute(); + + packBuildResult.EnsureSuccessful(); + } + } + + CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); + FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); + + return c.Success(); + } + + private static void CleanOutputDir(string directory) + { + foreach (var file in FilesToClean) + { + FS.RmFilesInDirRecursive(directory, file); + } + } + + private static void RemovePdbsFromDir(string directory) + { + FS.RmFilesInDirRecursive(directory, "*.pdb"); + } + + private static BuildTargetResult CompileCliSdk( + BuildTargetContext c, + DotNetCli dotnet, + string rootOutputDirectory, + bool generateNugetPackagesArchive = false) + { + var configuration = c.BuildContext.Get("Configuration"); + var buildVersion = c.BuildContext.Get("BuildVersion"); + var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); + var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); + + CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); + + FS.CleanBinObj(c, srcDir); + Rmdir(sdkOutputDirectory); + Mkdirp(sdkOutputDirectory); + + foreach (var project in ProjectsToPublish) + { + dotnet.Publish( + "--native-subdirectory", + "--output", sdkOutputDirectory, + "--configuration", configuration, + "--version-suffix", buildVersion.CommitCountString, + Path.Combine(srcDir, project)) + .Execute() + .EnsureSuccessful(); + } + + FixModeFlags(sdkOutputDirectory); + + string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); + dotnet.Publish(compilersProject, + "--output", + sdkOutputDirectory, + "--framework", + "netcoreapp1.0") + .Execute() + .EnsureSuccessful(); + + var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); + var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); + + var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); + var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); + // Corehostify binaries + foreach (var binaryToCorehostify in BinariesForCoreHost) + { + try + { + // Yes, it is .exe even on Linux. This is the managed exe we're working with + File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); + File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); + var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); + + File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); + File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); + PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); + foreach (var binaryToRemove in new string[] { "csc", "vbc" }) + { + var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); + RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); + RemoveAssetFromDepsPackages( + Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); + } + } + catch (Exception ex) + { + return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); + } + } + + // cleanup compilers project output we don't need + PublishMutationUtilties.CleanPublishOutput( + sdkOutputDirectory, + "compilers", + deleteRuntimeConfigJson: true, + deleteDepsJson: true); + + // Crossgen SDK directory + var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( + rootOutputDirectory, + sharedFrameworkNugetVersion); + + // Copy Host to SDK Directory + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), + Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), + overwrite: true); + + CrossgenUtil.CrossgenDirectory( + sharedFrameworkNameVersionPath, + sdkOutputDirectory); + + // Generate .version file + var version = buildVersion.NuGetVersion; + var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; + File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); + + if(generateNugetPackagesArchive) + { + GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); + } + + CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); + + return c.Success(); + } + + private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) + { + var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); + + var filesToCopy = new List(); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); + + foreach (var fileFullPath in filesToCopy) + { + var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); + var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); + + File.Copy(fileFullPath, destinationFilePath, true); + } + } + + private static void GenerateNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string sdkOutputDirectory) + { + var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); + var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); + + RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); + + CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); + } + + private static void RestoreNuGetPackagesArchive( + DotNetCli dotnet, + string nuGetPackagesArchiveProject, + string nuGetPackagesArchiveFolder) + { + Rmdir(nuGetPackagesArchiveProject); + Mkdirp(nuGetPackagesArchiveProject); + + Rmdir(nuGetPackagesArchiveFolder); + Mkdirp(nuGetPackagesArchiveFolder); + + dotnet.New() + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + + dotnet.Restore("--packages", nuGetPackagesArchiveFolder) + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + } + + private static void CompressNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string nuGetPackagesArchiveFolder, + string sdkOutputDirectory) + { + var configuration = c.BuildContext.Get("Configuration"); + var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); + var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); + var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); + + Rm(intermediateArchive); + Rm($"{intermediateArchive}.zip"); + + c.Info("Publishing Archiver"); + dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) + .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) + .Execute() + .EnsureSuccessful(); + + Cmd(archiverExe, + "-a", intermediateArchive, + nuGetPackagesArchiveFolder) + .Execute(); + + File.Copy(intermediateArchive, finalArchive); + } + + private static void RemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) + { + JToken deps; + using (var file = File.OpenText(depsFile)) + using (JsonTextReader reader = new JsonTextReader(file)) + { + deps = JObject.ReadFrom(reader); + } + + foreach (JProperty target in deps["targets"]) + { + foreach (JProperty pv in target.Value.Children()) + { + var section = pv.Value[sectionName]; + if (section != null) + { + foreach (JProperty relPath in section) + { + if (assetPath.Equals(relPath.Name)) + { + relPath.Remove(); + break; + } + } + } + } + } + using (var file = File.CreateText(depsFile)) + using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) + { + deps.WriteTo(writer); + } + } + + private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) + { + CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); + } + } +} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs deleted file mode 100644 index 5010295e3..000000000 --- a/build_projects/dotnet-cli-build/CrossgenDirectory.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CrossgenDirectory : Task - { - private static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - - public string SharedFrameworkNameVersionPath { get; set; } - - public string SdkOutputDirectory { get; set; } - - public override bool Execute() - { - CrossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs deleted file mode 100644 index 225a82a6e..000000000 --- a/build_projects/dotnet-cli-build/FixModeFlags.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class FixModeFlags : Task - { - public string Dir { get; set; } - - public override bool Execute() - { - FS.FixModeFlags(Dir); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs deleted file mode 100644 index 9d37583fd..000000000 --- a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class RemoveAssetFromDepsPackages : Task - { - public string DepsFile { get; set; } - - public string SectionName { get; set; } - - public string AssetPath { get; set; } - - public override bool Execute() - { - DoRemoveAssetFromDepsPackages(DepsFile, SectionName, AssetPath); - - return true; - } - - private static void DoRemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) - { - JToken deps; - using (var file = File.OpenText(depsFile)) - using (JsonTextReader reader = new JsonTextReader(file)) - { - deps = JObject.ReadFrom(reader); - } - - foreach (JProperty target in deps["targets"]) - { - foreach (JProperty pv in target.Value.Children()) - { - var section = pv.Value[sectionName]; - if (section != null) - { - foreach (JProperty relPath in section) - { - if (assetPath.Equals(relPath.Name)) - { - relPath.Remove(); - break; - } - } - } - } - } - using (var file = File.CreateText(depsFile)) - using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) - { - deps.WriteTo(writer); - } - } - } -} diff --git a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs deleted file mode 100644 index 59bb39e49..000000000 --- a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class SharedFrameworkNameVersionPath : Task - { - public string RootOutputDirectory { get; set; } - - [Output] - public string OutputSharedFrameworkNameVersionPath { get; set; } - - public override bool Execute() - { - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - OutputSharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - RootOutputDirectory, - sharedFrameworkNugetVersion); - - return true; - } - } -} From cddf8fa9851db97b2445e21f1c769cd7f00abd0f Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Wed, 29 Jun 2016 18:52:33 -0500 Subject: [PATCH 019/165] Implement incremental builds for Prepare targets. --- build/Microsoft.DotNet.Cli.Prepare.targets | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index ef5d28e82..13ffbe217 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -159,23 +159,40 @@ DestinationDirectory="%(_DownloadAndExtractItem.ExtractDestintation)" /> + + + + + + + + DependsOnTargets="SetupRestorePackagesInputsOutputs;Init" + Inputs="@(RestorePackagesInput)" + Outputs="@(RestorePackagesInput->'%(RelativeDir)/project.lock.json')"> - + <_DotNetNewFolder>$(RepoRoot)/src/dotnet/commands/dotnet-new - + + + + + + Date: Thu, 30 Jun 2016 14:30:26 -0700 Subject: [PATCH 020/165] Remove Project Model Server --- .../DthTestProjects/global.json | 3 - .../src/BrokenProjectPathSample/project.json | 9 - .../src/EmptyConsoleApp/Program.cs | 13 - .../src/EmptyConsoleApp/project.json | 11 - .../DthTestProjects/src/EmptyLibrary/Class.cs | 8 - .../src/EmptyLibrary/project-update.json | 11 - .../src/EmptyLibrary/project.json | 12 - .../src/EmptyNetCoreApp/Program.cs | 13 - .../src/EmptyNetCoreApp/project.json | 15 - .../src/FailReleaseProject/Program.cs | 14 - .../src/FailReleaseProject/project.json | 11 - .../IncompatiblePackageSample/project.json | 9 - .../src/UnresolvedPackageSample/project.json | 8 - .../src/UnresolvedProjectSample/project.json | 8 - .../ext/Newtonsoft.Json/project.json | 8 - .../home/global.json | 6 - .../home/src/MainProject/project.json | 8 - .../IncorrectGlobalJson/global.json | 3 - .../src/Project1/NuGet.Config | 9 - .../src/Project1/Program.cs | 12 - .../src/Project1/project.json | 12 - .../IncorrectProjectJson/project.json | 9 - .../MSBuildReferencesProjects/.gitignore | 3 - .../ValidCase01/ClassLibrary1/Class1.cs | 12 - .../ClassLibrary1/ClassLibrary1.csproj | 62 -- .../ClassLibrary1/Properties/AssemblyInfo.cs | 36 - .../ValidCase01/ClassLibrary1/packages.config | 4 - .../ValidCase01/ClassLibrary2/Class1.cs | 12 - .../ClassLibrary2/ClassLibrary2.csproj | 61 -- .../ClassLibrary2/Properties/AssemblyInfo.cs | 36 - .../ValidCase01/ClassLibrary3/Class1.cs | 12 - .../ClassLibrary3/ClassLibrary3.csproj | 61 -- .../ClassLibrary3/Properties/AssemblyInfo.cs | 36 - .../ValidCase01/ConsoleApp13.sln | 53 -- .../ValidCase01/global.json | 3 - .../ValidCase01/src/MainApp/MainApp.xproj | 24 - .../ValidCase01/src/MainApp/Program.cs | 15 - .../src/MainApp/Properties/AssemblyInfo.cs | 19 - .../src/MainApp/project.fragment.lock.json | 36 - .../ValidCase01/src/MainApp/project.json | 21 - .../ValidCase01/src/MainApp/project.lock.json | 61 -- .../MscorlibLibraryDuplication/project.json | 11 - .../dotnet-cli-build/TestTargets.cs | 15 - src/dotnet/Program.cs | 2 - .../ConnectionContext.cs | 62 -- .../Helpers/DependencyTypeChangeFinder.cs | 101 --- .../Helpers/JTokenExtensions.cs | 26 - .../Helpers/LibraryExtensions.cs | 21 - .../Helpers/NuGetFrameworkExtensions.cs | 22 - .../Helpers/ProjectExtensions.cs | 59 -- .../InternalModels/ProjectContextSnapshot.cs | 93 --- .../InternalModels/ProjectSnapshot.cs | 51 -- .../MessageTypes.cs | 27 - .../Messengers/CompilerOptionsMessenger.cs | 42 - .../Messengers/DependenciesMessenger.cs | 47 -- .../DependencyDiagnosticsMessenger.cs | 34 - .../Messengers/GlobalErrorMessenger.cs | 43 - .../Messengers/Messenger.cs | 34 - .../Messengers/ProjectDiagnosticsMessenger.cs | 32 - .../Messengers/ProjectInformationMessenger.cs | 68 -- .../Messengers/ReferencesMessenger.cs | 48 -- .../Messengers/SourcesMessenger.cs | 45 - .../Models/DependencyDescription.cs | 94 --- .../Models/DependencyItem.cs | 27 - .../Models/DiagnosticMessageGroup.cs | 25 - .../Models/DiagnosticMessageView.cs | 74 -- .../Models/DiagnosticsListMessage.cs | 69 -- .../Models/ErrorMessage.cs | 30 - .../Models/FrameworkData.cs | 28 - .../Models/Message.cs | 39 - .../Models/ProjectReferenceDescription.cs | 57 -- .../ProcessingQueue.cs | 88 -- .../dotnet-projectmodel-server/Program.cs | 161 ---- .../ProjectManager.cs | 327 -------- .../ProtocolManager.cs | 107 --- .../DthTestClient.cs | 294 ------- .../DthTestServer.cs | 52 -- .../DthTests.cs | 789 ------------------ .../Helpers/DthMessage.cs | 24 - .../Helpers/DthMessageCollectionExtension.cs | 81 -- .../Helpers/DthMessageExtension.cs | 78 -- .../Helpers/JArrayExtensions.cs | 100 --- .../Helpers/JObjectExtensions.cs | 83 -- .../dotnet-projectmodel-server.Tests.xproj | 21 - .../project.json | 34 - 85 files changed, 4344 deletions(-) delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/global.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/BrokenProjectPathSample/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/Program.cs delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/Class.cs delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project-update.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/Program.cs delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/Program.cs delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/IncompatiblePackageSample/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedPackageSample/project.json delete mode 100644 TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedProjectSample/project.json delete mode 100644 TestAssets/ProjectModelServer/DthUpdateSearchPathSample/ext/Newtonsoft.Json/project.json delete mode 100644 TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/global.json delete mode 100644 TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/src/MainProject/project.json delete mode 100644 TestAssets/ProjectModelServer/IncorrectGlobalJson/global.json delete mode 100755 TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/NuGet.Config delete mode 100755 TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/Program.cs delete mode 100755 TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/project.json delete mode 100644 TestAssets/ProjectModelServer/IncorrectProjectJson/project.json delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/.gitignore delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Class1.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/ClassLibrary1.csproj delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Properties/AssemblyInfo.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/packages.config delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Class1.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/ClassLibrary2.csproj delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Properties/AssemblyInfo.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Class1.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/ClassLibrary3.csproj delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Properties/AssemblyInfo.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ConsoleApp13.sln delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/global.json delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/MainApp.xproj delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Program.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Properties/AssemblyInfo.cs delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.fragment.lock.json delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.json delete mode 100644 TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.lock.json delete mode 100644 TestAssets/ProjectModelServer/MscorlibLibraryDuplication/project.json delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/ConnectionContext.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Helpers/DependencyTypeChangeFinder.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Helpers/JTokenExtensions.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Helpers/LibraryExtensions.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Helpers/NuGetFrameworkExtensions.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Helpers/ProjectExtensions.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectContextSnapshot.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectSnapshot.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/MessageTypes.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/CompilerOptionsMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependenciesMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependencyDiagnosticsMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/GlobalErrorMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/Messenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectDiagnosticsMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectInformationMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/ReferencesMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Messengers/SourcesMessenger.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyDescription.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyItem.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageGroup.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageView.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticsListMessage.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/ErrorMessage.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/FrameworkData.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/Message.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Models/ProjectReferenceDescription.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/ProcessingQueue.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/Program.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs delete mode 100644 src/dotnet/commands/dotnet-projectmodel-server/ProtocolManager.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/DthTestClient.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/DthTestServer.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/DthTests.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/Helpers/DthMessage.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/Helpers/DthMessageCollectionExtension.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/Helpers/DthMessageExtension.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/Helpers/JArrayExtensions.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/Helpers/JObjectExtensions.cs delete mode 100644 test/dotnet-projectmodel-server.Tests/dotnet-projectmodel-server.Tests.xproj delete mode 100644 test/dotnet-projectmodel-server.Tests/project.json diff --git a/TestAssets/ProjectModelServer/DthTestProjects/global.json b/TestAssets/ProjectModelServer/DthTestProjects/global.json deleted file mode 100644 index 364730368..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/global.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "projects": ["src"] -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/BrokenProjectPathSample/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/BrokenProjectPathSample/project.json deleted file mode 100644 index 6390ad290..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/BrokenProjectPathSample/project.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.App": "1.0.0", - "EmptyLibrary": "1.0.0-*" - }, - "frameworks": { - "netcoreapp1.0": {} - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/Program.cs b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/Program.cs deleted file mode 100644 index 6c7859b64..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Misc.DthTestProjects.EmptyConsoleApp -{ - public class Program - { - public int Main(string[] args) - { - Console.WriteLine("Hello, world."); - return 0; - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/project.json deleted file mode 100644 index a1827ad70..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyConsoleApp/project.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": {}, - "frameworks": { - "netcoreapp1.0": { - "dependencies": { - "Microsoft.NETCore.App": "1.0.0" - } - }, - "dnx451": {} - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/Class.cs b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/Class.cs deleted file mode 100644 index 3fe898a95..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/Class.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Misc.DthTestProjects.EmptyLibrary -{ - public class Class - { - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project-update.json b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project-update.json deleted file mode 100644 index ebe3e29af..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project-update.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": { }, - "frameworks": { - "dnxcore50": { - "dependencies":{ - "NETStandard.Library": "1.0.0-rc2-23811", - "System.Console": "4.0.0-beta-*" - } - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project.json deleted file mode 100644 index 3ab07f47c..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyLibrary/project.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "1.0.0-*", - "dependencies": {}, - "frameworks": { - "netstandard1.3": { - "imports": "dnxcore50", - "dependencies": { - "NETStandard.Library": "1.6.0" - } - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/Program.cs b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/Program.cs deleted file mode 100644 index 9e6dde0c3..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Misc.DthTestProjects.SimpleConsoleApp -{ - public class Program - { - public int Main(string[] args) - { - Console.WriteLine("Hello, world."); - return 0; - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/project.json deleted file mode 100644 index b20601e54..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/EmptyNetCoreApp/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": {}, - "frameworks": { - "netcoreapp1.0": { - "imports": "dnxcore50", - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "Newtonsoft.Json": "8.0.3" - } - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/Program.cs b/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/Program.cs deleted file mode 100644 index e2e4aa3a1..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace FailReleaseProject -{ - public class Program - { - public int Main(string[] args) - { -#if RELEASE - // fail the compilation under Release configuration - i -#endif - return 0; - } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/project.json deleted file mode 100644 index 6bddf49a1..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/FailReleaseProject/project.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "frameworks": { - "netcoreapp1.0": { - "imports": "dnxcore50", - "dependencies": { - "Microsoft.NETCore.App": "1.0.0" - } - } - }, - "dependencies": {} -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/IncompatiblePackageSample/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/IncompatiblePackageSample/project.json deleted file mode 100644 index 6a03cc355..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/IncompatiblePackageSample/project.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.App": "1.0.0", - "Microsoft.Web.Administration": "7.0.0" - }, - "frameworks": { - "netcoreapp1.0": {} - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedPackageSample/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedPackageSample/project.json deleted file mode 100644 index e9ba88773..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedPackageSample/project.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "NoSuchPackage": "1.0.0" - }, - "frameworks": { - "dnx451": { } - } -} diff --git a/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedProjectSample/project.json b/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedProjectSample/project.json deleted file mode 100644 index 330ce6436..000000000 --- a/TestAssets/ProjectModelServer/DthTestProjects/src/UnresolvedProjectSample/project.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "EmptyLibrary": "1.0.0-*" - }, - "frameworks": { - "dnx451": { } - } -} diff --git a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/ext/Newtonsoft.Json/project.json b/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/ext/Newtonsoft.Json/project.json deleted file mode 100644 index 49f740598..000000000 --- a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/ext/Newtonsoft.Json/project.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": "9.0.1", - "dependencies": { - }, - "frameworks": { - "netstandard1.5": { } - } -} diff --git a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/global.json b/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/global.json deleted file mode 100644 index c6bd139a9..000000000 --- a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/global.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "projects": [ - "src", - "../ext" - ] -} diff --git a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/src/MainProject/project.json b/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/src/MainProject/project.json deleted file mode 100644 index aa50018cd..000000000 --- a/TestAssets/ProjectModelServer/DthUpdateSearchPathSample/home/src/MainProject/project.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "Newtonsoft.Json": "9.0.1" - }, - "frameworks": { - "netstandard1.5": {} - } -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/IncorrectGlobalJson/global.json b/TestAssets/ProjectModelServer/IncorrectGlobalJson/global.json deleted file mode 100644 index 6663ba432..000000000 --- a/TestAssets/ProjectModelServer/IncorrectGlobalJson/global.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "projects": ["src"]] -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/NuGet.Config b/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/NuGet.Config deleted file mode 100755 index e80222c1f..000000000 --- a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/NuGet.Config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/Program.cs b/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/Program.cs deleted file mode 100755 index 51233cffa..000000000 --- a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace ConsoleApplication -{ - public class Program - { - public static void Main(string[] args) - { - Console.WriteLine("Hello World!"); - } - } -} diff --git a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/project.json b/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/project.json deleted file mode 100755 index 71152b304..000000000 --- a/TestAssets/ProjectModelServer/IncorrectGlobalJson/src/Project1/project.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "emitEntryPoint": true - }, - "dependencies": { - "Microsoft.NETCore.App": "1.0.0" - }, - "frameworks": { - "netcoreapp1.0": {} - } -} diff --git a/TestAssets/ProjectModelServer/IncorrectProjectJson/project.json b/TestAssets/ProjectModelServer/IncorrectProjectJson/project.json deleted file mode 100644 index 891039f78..000000000 --- a/TestAssets/ProjectModelServer/IncorrectProjectJson/project.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "version": "1.0.0-*", - "dependencies": { - " - }, - "frameworks": { - [] - } -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/.gitignore b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/.gitignore deleted file mode 100644 index 497f0e325..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Negates the lock file -# MSBuiild references' project model server tests requires these lock files, since they can't be created without VS tooling. -!project.lock.json diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Class1.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Class1.cs deleted file mode 100644 index 08281c64a..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ClassLibrary1 -{ - public class Class1 - { - } -} diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/ClassLibrary1.csproj b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/ClassLibrary1.csproj deleted file mode 100644 index 7364cb64d..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/ClassLibrary1.csproj +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Debug - AnyCPU - {FD073258-550B-4E57-86AE-DC4874015EB1} - Library - Properties - ClassLibrary1 - ClassLibrary1 - v4.5.2 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll - True - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Properties/AssemblyInfo.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Properties/AssemblyInfo.cs deleted file mode 100644 index 6437643a7..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ClassLibrary1")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ClassLibrary1")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("fd073258-550b-4e57-86ae-dc4874015eb1")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/packages.config b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/packages.config deleted file mode 100644 index 1975352b1..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary1/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Class1.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Class1.cs deleted file mode 100644 index ad2fff55e..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ClassLibrary2 -{ - public class Class1 - { - } -} diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/ClassLibrary2.csproj b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/ClassLibrary2.csproj deleted file mode 100644 index fb17ee317..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/ClassLibrary2.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Debug - AnyCPU - 0f2d2a48-e867-496c-85a7-e97b64cfeda4 - Library - Properties - ClassLibrary2 - ClassLibrary2 - v4.6 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Properties/AssemblyInfo.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Properties/AssemblyInfo.cs deleted file mode 100644 index b40cfab4c..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary2/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ClassLibrary2")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ClassLibrary2")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0f2d2a48-e867-496c-85a7-e97b64cfeda4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Class1.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Class1.cs deleted file mode 100644 index 21384c5b2..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ClassLibrary3 -{ - public class Class1 - { - } -} diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/ClassLibrary3.csproj b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/ClassLibrary3.csproj deleted file mode 100644 index 0bcde3dfe..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/ClassLibrary3.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Debug - AnyCPU - 428e95cb-8435-414b-a313-9d734c633b3e - Library - Properties - ClassLibrary3 - ClassLibrary3 - v4.6 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Properties/AssemblyInfo.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Properties/AssemblyInfo.cs deleted file mode 100644 index 0eadf724e..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ClassLibrary3/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ClassLibrary3")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ClassLibrary3")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("428e95cb-8435-414b-a313-9d734c633b3e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ConsoleApp13.sln b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ConsoleApp13.sln deleted file mode 100644 index 1ac8ff099..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/ConsoleApp13.sln +++ /dev/null @@ -1,53 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25029.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{1443ACE0-3065-4C20-AD59-D561798AE0A5}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0AE82780-22C8-4DC8-8F1E-86977FDD092F}" - ProjectSection(SolutionItems) = preProject - global.json = global.json - EndProjectSection -EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ConsoleApp13", "src\ConsoleApp13\ConsoleApp13.xproj", "{767D3038-AC3A-4722-B21F-F85F2CBC3AA3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{FD073258-550B-4E57-86AE-DC4874015EB1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary2", "ClassLibrary2\ClassLibrary2.csproj", "{0F2D2A48-E867-496C-85A7-E97B64CFEDA4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary3", "ClassLibrary3\ClassLibrary3.csproj", "{428E95CB-8435-414B-A313-9D734C633B3E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {767D3038-AC3A-4722-B21F-F85F2CBC3AA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {767D3038-AC3A-4722-B21F-F85F2CBC3AA3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {767D3038-AC3A-4722-B21F-F85F2CBC3AA3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {767D3038-AC3A-4722-B21F-F85F2CBC3AA3}.Release|Any CPU.Build.0 = Release|Any CPU - {FD073258-550B-4E57-86AE-DC4874015EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD073258-550B-4E57-86AE-DC4874015EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD073258-550B-4E57-86AE-DC4874015EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD073258-550B-4E57-86AE-DC4874015EB1}.Release|Any CPU.Build.0 = Release|Any CPU - {0F2D2A48-E867-496C-85A7-E97B64CFEDA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F2D2A48-E867-496C-85A7-E97B64CFEDA4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F2D2A48-E867-496C-85A7-E97B64CFEDA4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F2D2A48-E867-496C-85A7-E97B64CFEDA4}.Release|Any CPU.Build.0 = Release|Any CPU - {428E95CB-8435-414B-A313-9D734C633B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {428E95CB-8435-414B-A313-9D734C633B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {428E95CB-8435-414B-A313-9D734C633B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {428E95CB-8435-414B-A313-9D734C633B3E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {767D3038-AC3A-4722-B21F-F85F2CBC3AA3} = {1443ACE0-3065-4C20-AD59-D561798AE0A5} - {FD073258-550B-4E57-86AE-DC4874015EB1} = {1443ACE0-3065-4C20-AD59-D561798AE0A5} - {0F2D2A48-E867-496C-85A7-E97B64CFEDA4} = {1443ACE0-3065-4C20-AD59-D561798AE0A5} - {428E95CB-8435-414B-A313-9D734C633B3E} = {1443ACE0-3065-4C20-AD59-D561798AE0A5} - EndGlobalSection -EndGlobal diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/global.json b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/global.json deleted file mode 100644 index 5e6422e6d..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/global.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "projects": [ "src", "test" ] -} diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/MainApp.xproj b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/MainApp.xproj deleted file mode 100644 index ec559dc46..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/MainApp.xproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 767d3038-ac3a-4722-b21f-f85f2cbc3aa3 - ConsoleApp13 - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\ - v4.6 - - - 2.0 - - - - - - - - \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Program.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Program.cs deleted file mode 100644 index 6723332b1..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Program.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace ConsoleApp13 -{ - public class Program - { - public static void Main(string[] args) - { - var q = new ClassLibrary1.Class1(); - } - } -} diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Properties/AssemblyInfo.cs b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Properties/AssemblyInfo.cs deleted file mode 100644 index 83e8803f8..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ConsoleApp13")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("767d3038-ac3a-4722-b21f-f85f2cbc3aa3")] diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.fragment.lock.json b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.fragment.lock.json deleted file mode 100644 index 1efff4670..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.fragment.lock.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "version": 2, - "exports": { - "ClassLibrary1/1.0.0": { - "type": "project", - "framework": ".NETFramework,Version=v4.5.2", - "compile": { - "bin/Debug/ClassLibrary1.dll": {} - }, - "runtime": { - "../packages/Newtonsoft.Json.8.0.3/lib/net45/Newtonsoft.Json.dll": {}, - "bin/Debug/ClassLibrary1.dll": {} - } - }, - "ClassLibrary2/1.0.0": { - "type": "project", - "framework": ".NETFramework,Version=v4.6", - "compile": { - "bin/Debug/ClassLibrary2.dll": {} - }, - "runtime": { - "bin/Debug/ClassLibrary2.dll": {} - } - }, - "ClassLibrary3/1.0.0": { - "type": "project", - "framework": ".NETFramework,Version=v4.6", - "compile": { - "bin/Debug/ClassLibrary3.dll": {} - }, - "runtime": { - "bin/Debug/ClassLibrary3.dll": {} - } - } - } -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.json b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.json deleted file mode 100644 index 34284fa19..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "emitEntryPoint": true - }, - "frameworks": { - "net46": { - "dependencies": { - "ClassLibrary1": { - "target": "project" - }, - "ClassLibrary2": { - "target": "project" - }, - "ClassLibrary3": { - "target": "project" - } - } - } - } -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.lock.json b/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.lock.json deleted file mode 100644 index 244c3771b..000000000 --- a/TestAssets/ProjectModelServer/MSBuildReferencesProjects/ValidCase01/src/MainApp/project.lock.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "locked": false, - "version": 2, - "targets": { - ".NETFramework,Version=v4.6": { - "ClassLibrary1/1.0.0": { - "type": "project" - }, - "ClassLibrary2/1.0.0": { - "type": "project" - }, - "ClassLibrary3/1.0.0": { - "type": "project" - } - }, - ".NETFramework,Version=v4.6/win7-x64": { - "ClassLibrary1/1.0.0": { - "type": "project" - }, - "ClassLibrary2/1.0.0": { - "type": "project" - }, - "ClassLibrary3/1.0.0": { - "type": "project" - } - }, - ".NETFramework,Version=v4.6/win7-x86": { - "ClassLibrary1/1.0.0": { - "type": "project" - }, - "ClassLibrary2/1.0.0": { - "type": "project" - }, - "ClassLibrary3/1.0.0": { - "type": "project" - } - } - }, - "libraries": { - "ClassLibrary1/1.0.0": { - "type": "project", - "msbuildProject": "../../ClassLibrary1/ClassLibrary1.csproj" - }, - "ClassLibrary2/1.0.0": { - "type": "project", - "msbuildProject": "../../ClassLibrary2/ClassLibrary2.csproj" - }, - "ClassLibrary3/1.0.0": { - "type": "project", - "msbuildProject": "../../ClassLibrary3/ClassLibrary3.csproj" - } - }, - "projectFileDependencyGroups": { - "": [], - ".NETFramework,Version=v4.6": [ - "ClassLibrary1", - "ClassLibrary2", - "ClassLibrary3" - ] - } -} \ No newline at end of file diff --git a/TestAssets/ProjectModelServer/MscorlibLibraryDuplication/project.json b/TestAssets/ProjectModelServer/MscorlibLibraryDuplication/project.json deleted file mode 100644 index a446526e2..000000000 --- a/TestAssets/ProjectModelServer/MscorlibLibraryDuplication/project.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": { - }, - "frameworks": { - "net45": { - "frameworkAssemblies": { - "mscorlib": "" - } - } - } -} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index db692a7ee..b18bee36f 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -30,8 +30,6 @@ namespace Microsoft.DotNet.Cli.Build // "dotnet-compile-fsc.Tests", "dotnet-new.Tests", "dotnet-pack.Tests", - // TODO: https://github.com/dotnet/cli/issues/3734 - //"dotnet-projectmodel-server.Tests", "dotnet-publish.Tests", "dotnet-resgen.Tests", "dotnet-run.Tests", @@ -137,19 +135,6 @@ namespace Microsoft.DotNet.Cli.Build .Execute() .EnsureSuccessful(); - // The 'ProjectModelServer' directory contains intentionally-unresolved dependencies, so don't check for success. Also, suppress the output - dotnet.Restore( - "--verbosity", "verbose", - "--infer-runtimes") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "ProjectModelServer", "DthTestProjects")) - .Execute(); - - dotnet.Restore( - "--verbosity", "verbose", - "--infer-runtimes") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "ProjectModelServer", "DthUpdateSearchPathSample")) - .Execute(); - return c.Success(); } diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs index 9cabbcffc..a9508a01b 100644 --- a/src/dotnet/Program.cs +++ b/src/dotnet/Program.cs @@ -10,7 +10,6 @@ using System.Text; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Configurer; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel.Server; using Microsoft.DotNet.Tools.Build; using Microsoft.DotNet.Tools.Compiler; using Microsoft.DotNet.Tools.Compiler.Csc; @@ -33,7 +32,6 @@ namespace Microsoft.DotNet.Cli ["help"] = HelpCommand.Run, ["new"] = NewCommand.Run, ["pack"] = PackCommand.Run, - ["projectmodel-server"] = ProjectModelServerCommand.Run, ["publish"] = PublishCommand.Run, ["restore"] = RestoreCommand.Run, ["run"] = RunCommand.Run, diff --git a/src/dotnet/commands/dotnet-projectmodel-server/ConnectionContext.cs b/src/dotnet/commands/dotnet-projectmodel-server/ConnectionContext.cs deleted file mode 100644 index 235db0530..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/ConnectionContext.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using System.Net.Sockets; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ConnectionContext - { - private readonly string _hostName; - private readonly ProcessingQueue _queue; - private readonly IDictionary _projects; - - public ConnectionContext(Socket acceptedSocket, - string hostName, - ProtocolManager protocolManager, - DesignTimeWorkspace workspaceContext, - IDictionary projects) - { - _hostName = hostName; - _projects = projects; - - _queue = new ProcessingQueue(new NetworkStream(acceptedSocket)); - _queue.OnReceive += message => - { - if (protocolManager.IsProtocolNegotiation(message)) - { - message.Sender = this; - protocolManager.Negotiate(message); - } - else - { - message.Sender = this; - ProjectManager projectManager; - if (!_projects.TryGetValue(message.ContextId, out projectManager)) - { - projectManager = new ProjectManager(message.ContextId, - workspaceContext, - protocolManager); - - _projects[message.ContextId] = projectManager; - } - - projectManager.OnReceive(message); - } - }; - } - - public void QueueStart() - { - _queue.Start(); - } - - public bool Transmit(Message message) - { - message.HostId = _hostName; - return _queue.Send(message); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/DependencyTypeChangeFinder.cs b/src/dotnet/commands/dotnet-projectmodel-server/Helpers/DependencyTypeChangeFinder.cs deleted file mode 100644 index 7865c3126..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/DependencyTypeChangeFinder.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Graph; - -namespace Microsoft.DotNet.ProjectModel.Server.Helpers -{ - internal class DependencyTypeChangeFinder - { - public static IEnumerable Diagnose( - ProjectContext context, - IEnumerable previousSearchPaths) - { - var result = new List(); - var project = context.ProjectFile; - var libraries = context.LibraryManager.GetLibraries(); - - var updatedSearchPath = GetUpdatedSearchPaths(previousSearchPaths, project.ResolveSearchPaths()); - var projectCandiates = GetProjectCandidates(updatedSearchPath); - var rootDependencies = libraries.FirstOrDefault(library => string.Equals(library.Identity.Name, project.Name)) - ?.Dependencies - ?.ToDictionary(libraryRange => libraryRange.Name); - - foreach (var library in libraries) - { - var diagnostic = Validate(library, projectCandiates, rootDependencies); - if (diagnostic != null) - { - result.Add(diagnostic); - } - } - - return result; - } - - private static DiagnosticMessage Validate(LibraryDescription library, - HashSet projectCandidates, - Dictionary rootDependencies) - { - if (!library.Resolved || projectCandidates == null) - { - return null; - } - - var foundCandidate = projectCandidates.Contains(library.Identity.Name); - - if ((library.Identity.Type == LibraryType.Project && !foundCandidate) || - (library.Identity.Type == LibraryType.Package && foundCandidate)) - { - library.Resolved = false; - - var libraryRange = rootDependencies[library.Identity.Name]; - - return new DiagnosticMessage( - ErrorCodes.NU1010, - $"The type of dependency {library.Identity.Name} was changed.", - libraryRange.SourceFilePath, - DiagnosticMessageSeverity.Error, - libraryRange.SourceLine, - libraryRange.SourceColumn, - library); - } - - return null; - } - - private static HashSet GetProjectCandidates(IEnumerable searchPaths) - { - if (searchPaths == null) - { - return null; - } - - return new HashSet(searchPaths.Where(path => Directory.Exists(path)) - .SelectMany(path => Directory.GetDirectories(path)) - .Where(path => File.Exists(Path.Combine(path, Project.FileName))) - .Select(path => Path.GetFileName(path))); - } - - /// - /// Returns the search paths if they're updated. Otherwise returns null. - /// - private static IEnumerable GetUpdatedSearchPaths(IEnumerable oldSearchPaths, - IEnumerable newSearchPaths) - { - // The oldSearchPaths is null when the current project is not initialized. It is not necessary to - // validate the dependency in this case. - if (oldSearchPaths == null) - { - return null; - } - - if (Enumerable.SequenceEqual(oldSearchPaths, newSearchPaths)) - { - return null; - } - - return newSearchPaths; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/JTokenExtensions.cs b/src/dotnet/commands/dotnet-projectmodel-server/Helpers/JTokenExtensions.cs deleted file mode 100644 index 9edd1d8bf..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/JTokenExtensions.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Newtonsoft.Json.Linq; - -namespace Microsoft.DotNet.ProjectModel.Server.Helpers -{ - public static class JTokenExtensions - { - public static string GetValue(this JToken token, string name) - { - return GetValue(token, name); - } - - public static TVal GetValue(this JToken token, string name) - { - var value = token?[name]; - if (value != null) - { - return value.Value(); - } - - return default(TVal); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/LibraryExtensions.cs b/src/dotnet/commands/dotnet-projectmodel-server/Helpers/LibraryExtensions.cs deleted file mode 100644 index 2c86daade..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/LibraryExtensions.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.DotNet.ProjectModel.Graph; - -namespace Microsoft.DotNet.ProjectModel.Server.Helpers -{ - public static class LibraryExtensions - { - public static string GetUniqueName(this LibraryDescription library) - { - var identity = library.Identity; - return identity.Type != LibraryType.ReferenceAssembly ? identity.Name : $"fx/{identity.Name}"; - } - - public static string GetUniqueName(this LibraryRange range) - { - return range.Target != LibraryType.ReferenceAssembly ? range.Name : $"fx/{range.Name}"; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/NuGetFrameworkExtensions.cs b/src/dotnet/commands/dotnet-projectmodel-server/Helpers/NuGetFrameworkExtensions.cs deleted file mode 100644 index 5bc8c1d53..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/NuGetFrameworkExtensions.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.DotNet.ProjectModel.Resolution; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public static class NuGetFrameworkExtensions - { - public static FrameworkData ToPayload(this NuGetFramework framework) - { - return new FrameworkData - { - ShortName = framework.GetShortFolderName(), - FrameworkName = framework.DotNetFrameworkName, - FriendlyName = FrameworkReferenceResolver.Default.GetFriendlyFrameworkName(framework), - RedistListPath = FrameworkReferenceResolver.Default.GetFrameworkRedistListPath(framework) - }; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/ProjectExtensions.cs b/src/dotnet/commands/dotnet-projectmodel-server/Helpers/ProjectExtensions.cs deleted file mode 100644 index ef28bbc23..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Helpers/ProjectExtensions.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; - -namespace Microsoft.DotNet.ProjectModel.Server.Helpers -{ - public static class ProjectExtensions - { - public static IEnumerable ResolveSearchPaths(this Project project) - { - GlobalSettings settings; - return project.ResolveSearchPaths(out settings); - } - - public static IEnumerable ResolveSearchPaths(this Project project, out GlobalSettings globalSettings) - { - if (project == null) - { - throw new ArgumentNullException(nameof(project)); - } - - var searchPaths = new HashSet { Directory.GetParent(project.ProjectDirectory).FullName }; - - globalSettings = project.ResolveGlobalSettings(); - if (globalSettings != null) - { - foreach (var searchPath in globalSettings.ProjectSearchPaths) - { - var path = Path.Combine(globalSettings.DirectoryPath, searchPath); - searchPaths.Add(Path.GetFullPath(path)); - } - } - - return searchPaths; - } - - public static GlobalSettings ResolveGlobalSettings(this Project project) - { - if (project == null) - { - throw new ArgumentNullException(nameof(project)); - } - - GlobalSettings settings; - var root = ProjectRootResolver.ResolveRootDirectory(project.ProjectDirectory); - if (GlobalSettings.TryGetGlobalSettings(root, out settings)) - { - return settings; - } - else - { - return null; - } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectContextSnapshot.cs b/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectContextSnapshot.cs deleted file mode 100644 index 1307714d0..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectContextSnapshot.cs +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.Cli.Compiler.Common; -using Microsoft.DotNet.ProjectModel.Files; -using Microsoft.DotNet.ProjectModel.Graph; -using Microsoft.DotNet.ProjectModel.Server.Helpers; -using Microsoft.DotNet.ProjectModel.Server.Models; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ProjectContextSnapshot - { - public string RootDependency { get; set; } - public NuGetFramework TargetFramework { get; set; } - public IReadOnlyList SourceFiles { get; set; } - public CommonCompilerOptions CompilerOptions { get; set; } - public IReadOnlyList ProjectReferences { get; set; } - public IReadOnlyList FileReferences { get; set; } - public IReadOnlyList DependencyDiagnostics { get; set; } - public IDictionary Dependencies { get; set; } - - public static ProjectContextSnapshot Create(ProjectContext context, string configuration, IEnumerable previousSearchPaths) - { - var snapshot = new ProjectContextSnapshot(); - - var allDependencyDiagnostics = new List(); - allDependencyDiagnostics.AddRange(context.LibraryManager.GetAllDiagnostics()); - allDependencyDiagnostics.AddRange(DependencyTypeChangeFinder.Diagnose(context, previousSearchPaths)); - - var diagnosticsLookup = allDependencyDiagnostics.ToLookup(d => d.Source); - - var allExports = context.CreateExporter(configuration) - .GetAllExports() - .ToDictionary(export => export.Library.Identity.Name); - - var allSourceFiles = new List(GetSourceFiles(context, configuration)); - var allFileReferences = new List(); - var allProjectReferences = new List(); - var allDependencies = new Dictionary(); - - // All exports are returned. When the same library name have a ReferenceAssembly type export and a Package type export - // both will be listed as dependencies. Prefix "fx/" will be added to ReferenceAssembly type dependency. - foreach (var export in allExports.Values) - { - allSourceFiles.AddRange(export.SourceReferences.Select(f => f.ResolvedPath)); - var diagnostics = diagnosticsLookup[export.Library].ToList(); - var description = DependencyDescription.Create(export.Library, diagnostics, allExports); - allDependencies[description.Name] = description; - - var projectReferene = ProjectReferenceDescription.Create(export.Library); - if (projectReferene != null && export.Library.Identity.Name != context.ProjectFile.Name) - { - allProjectReferences.Add(projectReferene); - } - - if (export.Library.Identity.Type != LibraryType.Project) - { - allFileReferences.AddRange(export.CompilationAssemblies.Select(asset => asset.ResolvedPath)); - } - } - - snapshot.RootDependency = context.ProjectFile.Name; - snapshot.TargetFramework = context.TargetFramework; - snapshot.SourceFiles = allSourceFiles.Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(path => path).ToList(); - snapshot.CompilerOptions = context.GetLanguageSpecificCompilerOptions(context.TargetFramework, configuration); - snapshot.ProjectReferences = allProjectReferences.OrderBy(reference => reference.Name).ToList(); - snapshot.FileReferences = allFileReferences.Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(path => path).ToList(); - snapshot.DependencyDiagnostics = allDependencyDiagnostics; - snapshot.Dependencies = allDependencies; - - return snapshot; - } - - private static IEnumerable GetSourceFiles(ProjectContext context, string configuration) - { - var compilerOptions = context.ProjectFile.GetCompilerOptions(context.TargetFramework, configuration); - - if (compilerOptions.CompileInclude == null) - { - return context.ProjectFile.Files.SourceFiles; - } - - var includeFiles = IncludeFilesResolver.GetIncludeFiles(compilerOptions.CompileInclude, "/", diagnostics: null); - - return includeFiles.Select(f => f.SourcePath); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectSnapshot.cs b/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectSnapshot.cs deleted file mode 100644 index 0b28210bf..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/InternalModels/ProjectSnapshot.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Helpers; -using Microsoft.DotNet.ProjectModel.Server.Models; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ProjectSnapshot - { - public Project Project { get; set; } - public string GlobalJsonPath { get; set; } - public IReadOnlyList ProjectSearchPaths { get; set; } - public IReadOnlyList ProjectDiagnostics { get; set; } - public ErrorMessage GlobalErrorMessage { get; set; } - public Dictionary ProjectContexts { get; } = new Dictionary(); - - public static ProjectSnapshot Create(string projectDirectory, - string configuration, - DesignTimeWorkspace workspaceContext, - IReadOnlyList previousSearchPaths, - bool clearWorkspaceContextCache) - { - var projectContextsCollection = workspaceContext.GetProjectContextCollection(projectDirectory, clearWorkspaceContextCache); - if (!projectContextsCollection.ProjectContexts.Any()) - { - throw new InvalidOperationException($"Unable to find project.json in '{projectDirectory}'"); - } - GlobalSettings globalSettings; - var currentSearchPaths = projectContextsCollection.Project.ResolveSearchPaths(out globalSettings); - - var snapshot = new ProjectSnapshot(); - snapshot.Project = projectContextsCollection.Project; - snapshot.ProjectDiagnostics = new List(projectContextsCollection.ProjectDiagnostics); - snapshot.ProjectSearchPaths = currentSearchPaths.ToList(); - snapshot.GlobalJsonPath = globalSettings?.FilePath; - - foreach (var projectContext in projectContextsCollection.FrameworkOnlyContexts) - { - snapshot.ProjectContexts[projectContext.TargetFramework] = - ProjectContextSnapshot.Create(projectContext, configuration, previousSearchPaths); - } - - return snapshot; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/MessageTypes.cs b/src/dotnet/commands/dotnet-projectmodel-server/MessageTypes.cs deleted file mode 100644 index df9419502..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/MessageTypes.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.ProjectModel.Server -{ - public class MessageTypes - { - // Incoming - public const string Initialize = nameof(Initialize); - public const string ChangeConfiguration = nameof(ChangeConfiguration); - public const string RefreshDependencies = nameof(RefreshDependencies); - public const string RestoreComplete = nameof(RestoreComplete); - public const string FilesChanged = nameof(FilesChanged); - public const string GetDiagnostics = nameof(GetDiagnostics); - public const string ProtocolVersion = nameof(ProtocolVersion); - - // Outgoing - public const string Error = nameof(Error); - public const string ProjectInformation = nameof(ProjectInformation); - public const string Diagnostics = nameof(Diagnostics); - public const string DependencyDiagnostics = nameof(DependencyDiagnostics); - public const string Dependencies = nameof(Dependencies); - public const string CompilerOptions = nameof(CompilerOptions); - public const string References = nameof(References); - public const string Sources = nameof(Sources); - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/CompilerOptionsMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/CompilerOptionsMessenger.cs deleted file mode 100644 index 57c46426b..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/CompilerOptionsMessenger.cs +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class CompilerOptionsMessenger : Messenger - { - public CompilerOptionsMessenger(Action transmit) - : base(MessageTypes.CompilerOptions, transmit) - { } - - protected override bool CheckDifference(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - return remote.CompilerOptions != null && - Equals(local.CompilerOptions, remote.CompilerOptions); - } - - protected override void SendPayload(ProjectContextSnapshot local, Action send) - { - send(new CompilationOptionsMessage - { - Framework = local.TargetFramework.ToPayload(), - Options = local.CompilerOptions - }); - } - - protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - remote.CompilerOptions = local.CompilerOptions; - } - - private class CompilationOptionsMessage - { - public FrameworkData Framework { get; set; } - - public CommonCompilerOptions Options { get; set; } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependenciesMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependenciesMessenger.cs deleted file mode 100644 index e89fcabc4..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependenciesMessenger.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class DependenciesMessenger : Messenger - { - public DependenciesMessenger(Action transmit) - : base(MessageTypes.Dependencies, transmit) - { } - - protected override bool CheckDifference(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - return remote.Dependencies != null && - string.Equals(local.RootDependency, remote.RootDependency) && - Equals(local.TargetFramework, remote.TargetFramework) && - Enumerable.SequenceEqual(local.Dependencies, remote.Dependencies); - } - - protected override void SendPayload(ProjectContextSnapshot local, Action send) - { - send(new DependenciesMessage - { - Framework = local.TargetFramework.ToPayload(), - RootDependency = local.RootDependency, - Dependencies = local.Dependencies - }); - } - - protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - remote.Dependencies = local.Dependencies; - } - - private class DependenciesMessage - { - public FrameworkData Framework { get; set; } - public string RootDependency { get; set; } - public IDictionary Dependencies { get; set; } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependencyDiagnosticsMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependencyDiagnosticsMessenger.cs deleted file mode 100644 index fa95b756b..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/DependencyDiagnosticsMessenger.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class DependencyDiagnosticsMessenger : Messenger - { - public DependencyDiagnosticsMessenger(Action transmit) - : base(MessageTypes.DependencyDiagnostics, transmit) - { } - - protected override bool CheckDifference(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - return remote.DependencyDiagnostics != null && - Enumerable.SequenceEqual(local.DependencyDiagnostics, remote.DependencyDiagnostics); - } - - protected override void SendPayload(ProjectContextSnapshot local, Action send) - { - send(new DiagnosticsListMessage( - local.DependencyDiagnostics, - local.TargetFramework?.ToPayload())); - } - - protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - remote.DependencyDiagnostics = local.DependencyDiagnostics; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/GlobalErrorMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/GlobalErrorMessenger.cs deleted file mode 100644 index 854465ef8..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/GlobalErrorMessenger.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class GlobalErrorMessenger : Messenger - { - public GlobalErrorMessenger(Action transmit) - : base(MessageTypes.Error, transmit) - { } - - protected override bool CheckDifference(ProjectSnapshot local, ProjectSnapshot remote) - { - return remote != null && Equals(local.GlobalErrorMessage, remote.GlobalErrorMessage); - } - - protected override void SendPayload(ProjectSnapshot local, Action send) - { - if (local.GlobalErrorMessage != null) - { - send(local.GlobalErrorMessage); - } - else - { - send(new ErrorMessage - { - Message = null, - Path = null, - Line = -1, - Column = -1 - }); - } - } - - protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) - { - remote.GlobalErrorMessage = local.GlobalErrorMessage; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/Messenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/Messenger.cs deleted file mode 100644 index 5805e9425..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/Messenger.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal abstract class Messenger where T : class - { - protected readonly Action _transmit; - - public Messenger(string messageType, Action transmit) - { - _transmit = transmit; - - MessageType = messageType; - } - - public string MessageType { get; } - - public void UpdateRemote(T local, T remote) - { - if (!CheckDifference(local, remote)) - { - SendPayload(local, payload => _transmit(MessageType, payload)); - SetValue(local, remote); - } - } - - protected abstract void SetValue(T local, T remote); - protected abstract void SendPayload(T local, Action send); - protected abstract bool CheckDifference(T local, T remote); - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectDiagnosticsMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectDiagnosticsMessenger.cs deleted file mode 100644 index 4ef95660d..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectDiagnosticsMessenger.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class ProjectDiagnosticsMessenger : Messenger - { - public ProjectDiagnosticsMessenger(Action transmit) - : base(MessageTypes.Diagnostics, transmit) - { } - - protected override bool CheckDifference(ProjectSnapshot local, ProjectSnapshot remote) - { - return remote.ProjectDiagnostics != null && - Enumerable.SequenceEqual(local.ProjectDiagnostics, remote.ProjectDiagnostics); - } - - protected override void SendPayload(ProjectSnapshot local, Action send) - { - send(new DiagnosticsListMessage(local.ProjectDiagnostics)); - } - - protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) - { - remote.ProjectDiagnostics = local.ProjectDiagnostics; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectInformationMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectInformationMessenger.cs deleted file mode 100644 index 096f42747..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ProjectInformationMessenger.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class ProjectInformationMessenger : Messenger - { - public ProjectInformationMessenger(Action transmit) - : base(MessageTypes.ProjectInformation, transmit) - { } - - protected override bool CheckDifference(ProjectSnapshot local, ProjectSnapshot remote) - { - return remote.Project != null && - string.Equals(local.Project.Name, remote.Project.Name) && - string.Equals(local.GlobalJsonPath, remote.GlobalJsonPath) && - Enumerable.SequenceEqual(local.Project.GetTargetFrameworks().Select(f => f.FrameworkName), - remote.Project.GetTargetFrameworks().Select(f => f.FrameworkName)) && - Enumerable.SequenceEqual(local.Project.GetConfigurations(), remote.Project.GetConfigurations()) && - Enumerable.SequenceEqual(local.Project.Commands, remote.Project.Commands) && - Enumerable.SequenceEqual(local.ProjectSearchPaths, remote.ProjectSearchPaths); - } - - protected override void SendPayload(ProjectSnapshot local, Action send) - { - send(new ProjectInformationMessage(local.Project, local.GlobalJsonPath, local.ProjectSearchPaths)); - } - - protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) - { - remote.Project = local.Project; - remote.GlobalJsonPath = local.GlobalJsonPath; - remote.ProjectSearchPaths = local.ProjectSearchPaths; - } - - private class ProjectInformationMessage - { - public ProjectInformationMessage(Project project, - string gloablJsonPath, - IReadOnlyList projectSearchPaths) - { - Name = project.Name; - Frameworks = project.GetTargetFrameworks().Select(f => f.FrameworkName.ToPayload()).ToList(); - Configurations = project.GetConfigurations().ToList(); - Commands = project.Commands; - ProjectSearchPaths = projectSearchPaths; - GlobalJsonPath = gloablJsonPath; - } - - public string Name { get; } - - public IReadOnlyList Frameworks { get; } - - public IReadOnlyList Configurations { get; } - - public IDictionary Commands { get; } - - public IReadOnlyList ProjectSearchPaths { get; } - - public string GlobalJsonPath { get; } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ReferencesMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ReferencesMessenger.cs deleted file mode 100644 index 04a06af0b..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/ReferencesMessenger.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class ReferencesMessenger : Messenger - { - public ReferencesMessenger(Action transmit) - : base(MessageTypes.References, transmit) - { } - - protected override bool CheckDifference(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - return remote.FileReferences != null && - remote.ProjectReferences != null && - Enumerable.SequenceEqual(local.FileReferences, remote.FileReferences) && - Enumerable.SequenceEqual(local.ProjectReferences, remote.ProjectReferences); - } - - protected override void SendPayload(ProjectContextSnapshot local, Action send) - { - send(new ReferencesMessage - { - Framework = local.TargetFramework.ToPayload(), - ProjectReferences = local.ProjectReferences, - FileReferences = local.FileReferences - }); - } - - protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - remote.FileReferences = local.FileReferences; - remote.ProjectReferences = local.ProjectReferences; - } - - private class ReferencesMessage - { - public FrameworkData Framework { get; set; } - public IReadOnlyList FileReferences { get; set; } - public IReadOnlyList ProjectReferences { get; set; } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/SourcesMessenger.cs b/src/dotnet/commands/dotnet-projectmodel-server/Messengers/SourcesMessenger.cs deleted file mode 100644 index 66f7767df..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Messengers/SourcesMessenger.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server.Messengers -{ - internal class SourcesMessenger : Messenger - { - public SourcesMessenger(Action transmit) - : base(MessageTypes.Sources, transmit) - { } - - protected override bool CheckDifference(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - return remote.SourceFiles != null && - Enumerable.SequenceEqual(local.SourceFiles, remote.SourceFiles); - } - - protected override void SendPayload(ProjectContextSnapshot local, Action send) - { - send(new SourcesMessage - { - Framework = local.TargetFramework.ToPayload(), - Files = local.SourceFiles, - GeneratedFiles = new Dictionary() - }); - } - - protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) - { - remote.SourceFiles = local.SourceFiles; - } - - private class SourcesMessage - { - public FrameworkData Framework { get; set; } - public IReadOnlyList Files { get; set; } - public IDictionary GeneratedFiles { get; set; } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyDescription.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyDescription.cs deleted file mode 100644 index 32c3854e5..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyDescription.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel.Compilation; -using Microsoft.DotNet.ProjectModel.Graph; -using NuGet.Versioning; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class DependencyDescription - { - private DependencyDescription() { } - - public string Name { get; private set; } - - public string DisplayName { get; private set; } - - public string Version { get; private set; } - - public string Path { get; private set; } - - public string Type { get; private set; } - - public bool Resolved { get; private set; } - - public IEnumerable Dependencies { get; private set; } - - public IEnumerable Errors { get; private set; } - - public IEnumerable Warnings { get; private set; } - - public override bool Equals(object obj) - { - var other = obj as DependencyDescription; - - return other != null && - Resolved == other.Resolved && - string.Equals(Name, other.Name) && - object.Equals(Version, other.Version) && - string.Equals(Path, other.Path) && - string.Equals(Type, other.Type) && - Enumerable.SequenceEqual(Dependencies, other.Dependencies) && - Enumerable.SequenceEqual(Errors, other.Errors) && - Enumerable.SequenceEqual(Warnings, other.Warnings); - } - - public override int GetHashCode() - { - // These objects are currently POCOs and we're overriding equals - // so that things like Enumerable.SequenceEqual just work. - return base.GetHashCode(); - } - - public static DependencyDescription Create(LibraryDescription library, - List diagnostics, - IDictionary exportsLookup) - { - var result = new DependencyDescription - { - Name = library.Identity.Name, - DisplayName = library.Identity.Name, - Version = (library.Identity.Version ?? new NuGetVersion("1.0.0")).ToNormalizedString(), - Type = library.Identity.Type.Value, - Resolved = library.Resolved, - Path = library.Path, - Dependencies = library.Dependencies.Select(dependency => GetDependencyItem(dependency, exportsLookup)), - Errors = diagnostics.Where(d => d.Severity == DiagnosticMessageSeverity.Error) - .Select(d => new DiagnosticMessageView(d)), - Warnings = diagnostics.Where(d => d.Severity == DiagnosticMessageSeverity.Warning) - .Select(d => new DiagnosticMessageView(d)) - }; - - var msbuildLibrary = library as MSBuildProjectDescription; - if (msbuildLibrary != null) - { - result.Path = msbuildLibrary.MSBuildProjectPath; - } - - return result; - } - - private static DependencyItem GetDependencyItem(LibraryRange dependency, - IDictionary exportsLookup) - { - return new DependencyItem - { - Name = dependency.Name, - Version = exportsLookup[dependency.Name].Library.Identity.Version?.ToNormalizedString() - }; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyItem.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyItem.cs deleted file mode 100644 index 1f014daff..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/DependencyItem.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class DependencyItem - { - public string Name { get; set; } - - public string Version { get; set; } - - public override bool Equals(object obj) - { - var other = obj as DependencyItem; - return other != null && - string.Equals(Name, other.Name) && - object.Equals(Version, other.Version); - } - - public override int GetHashCode() - { - // These objects are currently POCOs and we're overriding equals - // so that things like Enumerable.SequenceEqual just work. - return base.GetHashCode(); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageGroup.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageGroup.cs deleted file mode 100644 index c76adf86c..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageGroup.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class DiagnosticMessageGroup - { - public DiagnosticMessageGroup(IEnumerable diagnostics) - : this(framework: null, diagnostics: diagnostics) - { } - - public DiagnosticMessageGroup(NuGetFramework framework, IEnumerable diagnostics) - { - Framework = framework; - Diagnostics = diagnostics; - } - - public IEnumerable Diagnostics { get; } - - public NuGetFramework Framework { get; } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageView.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageView.cs deleted file mode 100644 index 8285d48ba..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticMessageView.cs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class DiagnosticMessageView - { - public DiagnosticMessageView(DiagnosticMessage data) - { - ErrorCode = data.ErrorCode; - SourceFilePath = data.SourceFilePath; - Message = data.Message; - Severity = data.Severity; - StartLine = data.StartLine; - StartColumn = data.StartColumn; - EndLine = data.EndLine; - EndColumn = data.EndColumn; - FormattedMessage = data.FormattedMessage; - - var description = data.Source as LibraryDescription; - if (description != null) - { - Source = new - { - Name = description.Identity.Name, - Version = description.Identity.Version?.ToString() - }; - } - } - - public string ErrorCode { get; } - - public string SourceFilePath { get; } - - public string Message { get; } - - public DiagnosticMessageSeverity Severity { get; } - - public int StartLine { get; } - - public int StartColumn { get; } - - public int EndLine { get; } - - public int EndColumn { get; } - - public string FormattedMessage { get; } - - public object Source { get; } - - public override bool Equals(object obj) - { - var other = obj as DiagnosticMessageView; - - return other != null && - Severity == other.Severity && - StartLine == other.StartLine && - StartColumn == other.StartColumn && - EndLine == other.EndLine && - EndColumn == other.EndColumn && - string.Equals(ErrorCode, other.ErrorCode, StringComparison.Ordinal) && - string.Equals(SourceFilePath, other.SourceFilePath, StringComparison.Ordinal) && - string.Equals(Message, other.Message, StringComparison.Ordinal) && - object.Equals(Source, other.Source); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticsListMessage.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticsListMessage.cs deleted file mode 100644 index dc66cd12d..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/DiagnosticsListMessage.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Newtonsoft.Json; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class DiagnosticsListMessage - { - public DiagnosticsListMessage(IEnumerable diagnostics) : - this(diagnostics, frameworkData: null) - { - } - - public DiagnosticsListMessage(IEnumerable diagnostics, FrameworkData frameworkData) : - this(diagnostics.Select(msg => new DiagnosticMessageView(msg)).ToList(), frameworkData) - { - if (diagnostics == null) - { - throw new ArgumentNullException(nameof(diagnostics)); - } - } - - public DiagnosticsListMessage(IEnumerable diagnostics) : - this(diagnostics, frameworkData: null) - { - } - - public DiagnosticsListMessage(IEnumerable diagnostics, FrameworkData frameworkData) - { - if (diagnostics == null) - { - throw new ArgumentNullException(nameof(diagnostics)); - } - - Diagnostics = diagnostics; - Errors = diagnostics.Where(msg => msg.Severity == DiagnosticMessageSeverity.Error).ToList(); - Warnings = diagnostics.Where(msg => msg.Severity == DiagnosticMessageSeverity.Warning).ToList(); - Framework = frameworkData; - } - - public FrameworkData Framework { get; } - - [JsonIgnore] - public IEnumerable Diagnostics { get; } - - public IList Errors { get; } - - public IList Warnings { get; } - - public override bool Equals(object obj) - { - var other = obj as DiagnosticsListMessage; - - return other != null && - Enumerable.SequenceEqual(Errors, other.Errors) && - Enumerable.SequenceEqual(Warnings, other.Warnings) && - object.Equals(Framework, other.Framework); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/ErrorMessage.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/ErrorMessage.cs deleted file mode 100644 index 8623afae3..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/ErrorMessage.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class ErrorMessage - { - public string Message { get; set; } - public string Path { get; set; } - public int Line { get; set; } - public int Column { get; set; } - - public override bool Equals(object obj) - { - var payload = obj as ErrorMessage; - return payload != null && - string.Equals(Message, payload.Message, StringComparison.Ordinal) && - string.Equals(Path, payload.Path, StringComparison.OrdinalIgnoreCase) && - Line == payload.Line && - Column == payload.Column; - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/FrameworkData.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/FrameworkData.cs deleted file mode 100644 index 258c1cb08..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/FrameworkData.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - public class FrameworkData - { - public string FrameworkName { get; set; } - public string FriendlyName { get; set; } - public string ShortName { get; set; } - public string RedistListPath { get; set; } - - public override bool Equals(object obj) - { - var other = obj as FrameworkData; - - return other != null && - string.Equals(FrameworkName, other.FrameworkName); - } - - public override int GetHashCode() - { - // These objects are currently POCOs and we're overriding equals - // so that things like Enumerable.SequenceEqual just work. - return base.GetHashCode(); - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/Message.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/Message.cs deleted file mode 100644 index 0c0bfe8f3..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/Message.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - internal class Message - { - public static Message FromPayload(string messageType, int contextId, object payload) - { - return new Message - { - MessageType = messageType, - ContextId = contextId, - Payload = payload is JToken ? (JToken)payload : JToken.FromObject(payload) - }; - } - - private Message() { } - - public string MessageType { get; set; } - - public string HostId { get; set; } - - public int ContextId { get; set; } = -1; - - public JToken Payload { get; set; } - - [JsonIgnore] - public ConnectionContext Sender { get; set; } - - public override string ToString() - { - return $"({HostId}, {MessageType}, {ContextId}) -> {Payload?.ToString(Formatting.Indented)}"; - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Models/ProjectReferenceDescription.cs b/src/dotnet/commands/dotnet-projectmodel-server/Models/ProjectReferenceDescription.cs deleted file mode 100644 index 224837488..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Models/ProjectReferenceDescription.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.ProjectModel.Server.Models -{ - internal class ProjectReferenceDescription - { - private ProjectReferenceDescription() { } - - public FrameworkData Framework { get; set; } - public string Name { get; set; } - public string Path { get; set; } - - public override bool Equals(object obj) - { - var other = obj as ProjectReferenceDescription; - return other != null && - string.Equals(Name, other.Name) && - string.Equals(Path, other.Path); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - - /// - /// Create a ProjectReferenceDescription from given LibraryDescription. If the library doesn't - /// represent a project reference returns null. - /// - public static ProjectReferenceDescription Create(LibraryDescription library) - { - if (library is ProjectDescription) - { - return new ProjectReferenceDescription - { - Framework = library.Framework.ToPayload(), - Name = library.Identity.Name, - Path = library.Path - }; - } - else if (library is MSBuildProjectDescription) - { - return new ProjectReferenceDescription - { - Framework = library.Framework.ToPayload(), - Name = library.Identity.Name, - Path = ((MSBuildProjectDescription)library).MSBuildProjectPath, - }; - } - else - { - return null; - } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/ProcessingQueue.cs b/src/dotnet/commands/dotnet-projectmodel-server/ProcessingQueue.cs deleted file mode 100644 index d3ceb13e9..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/ProcessingQueue.cs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using System.Threading; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.ProjectModel.Server.Models; -using Newtonsoft.Json; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ProcessingQueue - { - private readonly BinaryReader _reader; - private readonly BinaryWriter _writer; - - public ProcessingQueue(Stream stream) - { - _reader = new BinaryReader(stream); - _writer = new BinaryWriter(stream); - } - - public event Action OnReceive; - - public void Start() - { - Reporter.Output.WriteLine("Start"); - new Thread(ReceiveMessages).Start(); - } - - public bool Send(Action writeAction) - { - lock (_writer) - { - try - { - writeAction(_writer); - return true; - } - catch (IOException ex) - { - // swallow - Reporter.Output.WriteLine($"Ignore {nameof(IOException)} during sending message: \"{ex.Message}\"."); - } - catch (Exception ex) - { - Reporter.Output.WriteLine($"Unexpected exception {ex.GetType().Name} during sending message: \"{ex.Message}\"."); - throw; - } - } - - return false; - } - - public bool Send(Message message) - { - return Send(_writer => - { - Reporter.Output.WriteLine($"OnSend ({message})"); - _writer.Write(JsonConvert.SerializeObject(message)); - }); - } - - private void ReceiveMessages() - { - try - { - while (true) - { - var content = _reader.ReadString(); - var message = JsonConvert.DeserializeObject(content); - - Reporter.Output.WriteLine($"OnReceive ({message})"); - OnReceive(message); - } - } - catch (IOException ex) - { - Reporter.Output.WriteLine($"Ignore {nameof(IOException)} during receiving messages: \"{ex}\"."); - } - catch (Exception ex) - { - Reporter.Error.WriteLine($"Unexpected exception {ex.GetType().Name} during receiving messages: \"{ex}\"."); - } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/Program.cs b/src/dotnet/commands/dotnet-projectmodel-server/Program.cs deleted file mode 100644 index 3211ed15d..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/Program.cs +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Net; -using System.Net.Sockets; -using Microsoft.DotNet.Cli.CommandLine; -using Microsoft.DotNet.Cli.Utils; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - public class ProjectModelServerCommand - { - private readonly Dictionary _projects; - private readonly DesignTimeWorkspace _workspaceContext; - private readonly ProtocolManager _protocolManager; - private readonly string _hostName; - private readonly int _port; - private Socket _listenSocket; - - public ProjectModelServerCommand(int port, string hostName) - { - _port = port; - _hostName = hostName; - _protocolManager = new ProtocolManager(maxVersion: 4); - _workspaceContext = new DesignTimeWorkspace(ProjectReaderSettings.ReadFromEnvironment()); - _projects = new Dictionary(); - } - - public static int Run(string[] args) - { - var app = new CommandLineApplication(); - app.Name = "dotnet-projectmodel-server"; - app.Description = ".NET Project Model Server"; - app.FullName = ".NET Design Time Server"; - app.Description = ".NET Design Time Server"; - app.HelpOption("-?|-h|--help"); - - var verbose = app.Option("--verbose", "Verbose ouput", CommandOptionType.NoValue); - var hostpid = app.Option("--host-pid", "The process id of the host", CommandOptionType.SingleValue); - var hostname = app.Option("--host-name", "The name of the host", CommandOptionType.SingleValue); - var port = app.Option("--port", "The TCP port used for communication", CommandOptionType.SingleValue); - - app.OnExecute(() => - { - try - { - if (!MonitorHostProcess(hostpid)) - { - return 1; - } - - var intPort = CheckPort(port); - if (intPort == -1) - { - return 1; - } - - if (!hostname.HasValue()) - { - Reporter.Error.WriteLine($"Option \"{hostname.LongName}\" is missing."); - return 1; - } - - var program = new ProjectModelServerCommand(intPort, hostname.Value()); - program.OpenChannel(); - } - catch (Exception ex) - { - Reporter.Error.WriteLine($"Unhandled exception in server main: {ex}"); - throw; - } - - return 0; - }); - - return app.Execute(args); - } - - public void OpenChannel() - { - _listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - _listenSocket.Bind(new IPEndPoint(IPAddress.Loopback, _port)); - _listenSocket.Listen(10); - - Reporter.Output.WriteLine($"Process ID {Process.GetCurrentProcess().Id}"); - Reporter.Output.WriteLine($"Listening on port {_port}"); - - while (true) - { - var acceptSocket = _listenSocket.Accept(); - Reporter.Output.WriteLine($"Client accepted {acceptSocket.LocalEndPoint}"); - - var connection = new ConnectionContext(acceptSocket, - _hostName, - _protocolManager, - _workspaceContext, - _projects); - - connection.QueueStart(); - } - } - - public void Shutdown() - { - if (_listenSocket.Connected) - { - _listenSocket.Shutdown(SocketShutdown.Both); - } - } - - private static int CheckPort(CommandOption port) - { - if (!port.HasValue()) - { - Reporter.Error.WriteLine($"Option \"{port.LongName}\" is missing."); - } - - int result; - if (int.TryParse(port.Value(), out result)) - { - return result; - } - else - { - Reporter.Error.WriteLine($"Option \"{port.LongName}\" is not a valid Int32 value."); - return -1; - } - } - - private static bool MonitorHostProcess(CommandOption host) - { - if (!host.HasValue()) - { - Console.Error.WriteLine($"Option \"{host.LongName}\" is missing."); - return false; - } - - int hostPID; - if (int.TryParse(host.Value(), out hostPID)) - { - var hostProcess = Process.GetProcessById(hostPID); - hostProcess.EnableRaisingEvents = true; - hostProcess.Exited += (s, e) => - { - Process.GetCurrentProcess().Kill(); - }; - - Reporter.Output.WriteLine($"Server will exit when process {hostPID} exits."); - return true; - } - else - { - Reporter.Error.WriteLine($"Option \"{host.LongName}\" is not a valid Int32 value."); - return false; - } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs b/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs deleted file mode 100644 index 47f4a0390..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Threading; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.ProjectModel.Server.Helpers; -using Microsoft.DotNet.ProjectModel.Server.Messengers; -using Microsoft.DotNet.ProjectModel.Server.Models; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ProjectManager - { - private readonly object _processingLock = new object(); - private readonly Queue _inbox = new Queue(); - private readonly ProtocolManager _protocolManager; - - private ConnectionContext _initializedContext; - - // triggers - private readonly Trigger _appPath = new Trigger(); - private readonly Trigger _configure = new Trigger(); - private readonly Trigger _refreshDependencies = new Trigger(); - private readonly Trigger _filesChanged = new Trigger(); - - private ProjectSnapshot _local = new ProjectSnapshot(); - private ProjectSnapshot _remote = new ProjectSnapshot(); - - private readonly DesignTimeWorkspace _workspaceContext; - private int? _contextProtocolVersion; - - private readonly List> _messengers; - - private ProjectDiagnosticsMessenger _projectDiagnosticsMessenger; - private GlobalErrorMessenger _globalErrorMessenger; - private ProjectInformationMessenger _projectInforamtionMessenger; - - public ProjectManager( - int contextId, - DesignTimeWorkspace workspaceContext, - ProtocolManager protocolManager) - { - Id = contextId; - _workspaceContext = workspaceContext; - _protocolManager = protocolManager; - - _messengers = new List> - { - new ReferencesMessenger(Transmit), - new DependenciesMessenger(Transmit), - new DependencyDiagnosticsMessenger(Transmit), - new CompilerOptionsMessenger(Transmit), - new SourcesMessenger(Transmit) - }; - - _projectDiagnosticsMessenger = new ProjectDiagnosticsMessenger(Transmit); - _globalErrorMessenger = new GlobalErrorMessenger(Transmit); - _projectInforamtionMessenger = new ProjectInformationMessenger(Transmit); - } - - public int Id { get; } - - public string ProjectPath { get { return _appPath.Value; } } - - public int ProtocolVersion - { - get - { - if (_contextProtocolVersion.HasValue) - { - return _contextProtocolVersion.Value; - } - else - { - return _protocolManager.CurrentVersion; - } - } - } - - public void OnReceive(Message message) - { - lock (_inbox) - { - _inbox.Enqueue(message); - } - - ThreadPool.QueueUserWorkItem(state => ((ProjectManager)state).ProcessLoop(), this); - } - - private void Transmit(string messageType, object payload) - { - var message = Message.FromPayload(messageType, Id, payload); - _initializedContext.Transmit(message); - } - - private void ProcessLoop() - { - if (!Monitor.TryEnter(_processingLock)) - { - return; - } - - try - { - lock (_inbox) - { - if (!_inbox.Any()) - { - return; - } - } - - DoProcessLoop(); - } - catch (Exception ex) - { - Reporter.Error.WriteLine($"A unexpected exception occurred: {ex}"); - - var error = new ErrorMessage - { - Message = ex.Message - }; - - var fileFormatException = ex as FileFormatException; - if (fileFormatException != null) - { - error.Path = fileFormatException.Path; - error.Line = fileFormatException.Line; - error.Column = fileFormatException.Column; - } - - var message = Message.FromPayload(MessageTypes.Error, Id, error); - - _initializedContext.Transmit(message); - _remote.GlobalErrorMessage = error; - } - finally - { - Monitor.Exit(_processingLock); - } - } - - private void DoProcessLoop() - { - while (true) - { - DrainInbox(); - - UpdateProject(); - SendOutgingMessages(); - - lock (_inbox) - { - if (_inbox.Count == 0) - { - return; - } - } - } - } - - private void DrainInbox() - { - Reporter.Output.WriteLine("Begin draining inbox."); - - while (ProcessMessage()) { } - - Reporter.Output.WriteLine("Finish draining inbox."); - } - - private bool ProcessMessage() - { - Message message; - - lock (_inbox) - { - if (!_inbox.Any()) - { - return false; - } - - message = _inbox.Dequeue(); - Debug.Assert(message != null); - } - - Reporter.Output.WriteLine($"Received {message.MessageType}"); - - switch (message.MessageType) - { - case MessageTypes.Initialize: - Initialize(message); - break; - case MessageTypes.ChangeConfiguration: - // TODO: what if the payload is null or represent empty string? - _configure.Value = message.Payload.GetValue("Configuration"); - break; - case MessageTypes.RefreshDependencies: - // In the case of RefreshDependencies request, the cache will not be reset in any case. The value - // is set so as to trigger refresh action in later loop. - _refreshDependencies.Value = false; - break; - case MessageTypes.RestoreComplete: - // In the case of RestoreComplete request, the value of the 'Reset' property in payload will determine - // if the cache should be reset. If the property doesn't exist, cache will be reset. - _refreshDependencies.Value = message.Payload.HasValues ? message.Payload.Value("Reset") : true; - break; - case MessageTypes.FilesChanged: - _filesChanged.Value = 0; - break; - } - - return true; - } - - private void Initialize(Message message) - { - if (_initializedContext != null) - { - Reporter.Output.WriteLine($"Received {message.MessageType} message more than once for {_appPath.Value}"); - return; - } - - _initializedContext = message.Sender; - _appPath.Value = message.Payload.GetValue("ProjectFolder"); - _configure.Value = message.Payload.GetValue("Configuration") ?? "Debug"; - - var version = message.Payload.GetValue("Version"); - if (version != 0 && !_protocolManager.EnvironmentOverridden) - { - _contextProtocolVersion = Math.Min(version, _protocolManager.MaxVersion); - Reporter.Output.WriteLine($"Set context protocol version to {_contextProtocolVersion.Value}"); - } - } - - private bool UpdateProject() - { - ProjectSnapshot newSnapshot = null; - - if (_appPath.WasAssigned || _configure.WasAssigned || _filesChanged.WasAssigned || _refreshDependencies.WasAssigned) - { - _appPath.ClearAssigned(); - _configure.ClearAssigned(); - _filesChanged.ClearAssigned(); - - bool resetCache = _refreshDependencies.WasAssigned ? _refreshDependencies.Value : false; - _refreshDependencies.ClearAssigned(); - - newSnapshot = ProjectSnapshot.Create(_appPath.Value, - _configure.Value, - _workspaceContext, - _remote.ProjectSearchPaths, - clearWorkspaceContextCache: resetCache); - } - - if (newSnapshot == null) - { - return false; - } - - _local = newSnapshot; - - return true; - } - - private void SendOutgingMessages() - { - _projectInforamtionMessenger.UpdateRemote(_local, _remote); - _projectDiagnosticsMessenger.UpdateRemote(_local, _remote); - - var unprocessedFrameworks = new HashSet(_remote.ProjectContexts.Keys); - foreach (var pair in _local.ProjectContexts) - { - ProjectContextSnapshot localProjectSnapshot = pair.Value; - ProjectContextSnapshot remoteProjectSnapshot; - - if (!_remote.ProjectContexts.TryGetValue(pair.Key, out remoteProjectSnapshot)) - { - remoteProjectSnapshot = new ProjectContextSnapshot(); - _remote.ProjectContexts[pair.Key] = remoteProjectSnapshot; - } - - unprocessedFrameworks.Remove(pair.Key); - - foreach (var messenger in _messengers) - { - messenger.UpdateRemote(localProjectSnapshot, - remoteProjectSnapshot); - } - } - - // Remove all processed frameworks from the remote view - foreach (var framework in unprocessedFrameworks) - { - _remote.ProjectContexts.Remove(framework); - } - - _globalErrorMessenger.UpdateRemote(_local, _remote); - } - - private class Trigger - { - private TValue _value; - - public bool WasAssigned { get; private set; } - - public void ClearAssigned() - { - WasAssigned = false; - } - - public TValue Value - { - get { return _value; } - set - { - WasAssigned = true; - _value = value; - } - } - } - } -} diff --git a/src/dotnet/commands/dotnet-projectmodel-server/ProtocolManager.cs b/src/dotnet/commands/dotnet-projectmodel-server/ProtocolManager.cs deleted file mode 100644 index dd7de15c9..000000000 --- a/src/dotnet/commands/dotnet-projectmodel-server/ProtocolManager.cs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.ProjectModel.Server.Models; - -namespace Microsoft.DotNet.ProjectModel.Server -{ - internal class ProtocolManager - { - /// - /// Environment variable for overriding protocol. - /// - public const string EnvDthProtocol = "DTH_PROTOCOL"; - - public ProtocolManager(int maxVersion) - { - MaxVersion = maxVersion; - - // initialized to the highest supported version or environment overridden value - int? protocol = GetProtocolVersionFromEnvironment(); - - if (protocol.HasValue) - { - CurrentVersion = protocol.Value; - EnvironmentOverridden = true; - } - else - { - CurrentVersion = 4; - } - } - - public int MaxVersion { get; } - - public int CurrentVersion { get; private set; } - - public bool EnvironmentOverridden { get; } - - public bool IsProtocolNegotiation(Message message) - { - return message?.MessageType == MessageTypes.ProtocolVersion; - } - - public void Negotiate(Message message) - { - if (!IsProtocolNegotiation(message)) - { - return; - } - - Reporter.Output.WriteLine("Initializing the protocol negotiation."); - - if (EnvironmentOverridden) - { - Reporter.Output.WriteLine($"DTH protocol negotiation is override by environment variable {EnvDthProtocol} and set to {CurrentVersion}."); - return; - } - - var tokenValue = message.Payload?["Version"]; - if (tokenValue == null) - { - Reporter.Output.WriteLine("Protocol negotiation failed. Version property is missing in payload."); - return; - } - - var preferredVersion = tokenValue.ToObject(); - if (preferredVersion == 0) - { - // the preferred version can't be zero. either property is missing or the the payload is corrupted. - Reporter.Output.WriteLine("Protocol negotiation failed. Protocol version 0 is invalid."); - return; - } - - CurrentVersion = Math.Min(preferredVersion, MaxVersion); - Reporter.Output.WriteLine($"Protocol negotiation successed. Use protocol {CurrentVersion}"); - - if (message.Sender != null) - { - Reporter.Output.WriteLine("Respond to protocol negotiation."); - message.Sender.Transmit(Message.FromPayload( - MessageTypes.ProtocolVersion, - 0, - new { Version = CurrentVersion })); - } - else - { - Reporter.Output.WriteLine($"{nameof(Message.Sender)} is null."); - } - } - - private static int? GetProtocolVersionFromEnvironment() - { - // look for the environment variable DTH_PROTOCOL, if it is set override the protocol version. - // this is for debugging. - var strProtocol = Environment.GetEnvironmentVariable(EnvDthProtocol); - int intProtocol = -1; - if (!string.IsNullOrEmpty(strProtocol) && Int32.TryParse(strProtocol, out intProtocol)) - { - return intProtocol; - } - - return null; - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/DthTestClient.cs b/test/dotnet-projectmodel-server.Tests/DthTestClient.cs deleted file mode 100644 index 08a1cf224..000000000 --- a/test/dotnet-projectmodel-server.Tests/DthTestClient.cs +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Sockets; -using System.Threading; -using System.Threading.Tasks; -using Newtonsoft.Json; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public class DthTestClient : IDisposable - { - private readonly string _hostId; - private readonly BinaryReader _reader; - private readonly BinaryWriter _writer; - private readonly NetworkStream _networkStream; - private readonly BlockingCollection _messageQueue; - private readonly CancellationTokenSource _readCancellationToken; - private readonly TimeSpan _defaultTimeout = TimeSpan.FromSeconds(20); - - // Keeps track of initialized project contexts - // REVIEW: This needs to be exposed if we ever create 2 clients in order to simulate how build - // works in visual studio - private readonly Dictionary _projectContexts = new Dictionary(); - private int _nextContextId; - private readonly Socket _socket; - - public DthTestClient(DthTestServer server) - { - // Avoid Socket exception 10006 on Linux - Thread.Sleep(100); - - _socket = new Socket(AddressFamily.InterNetwork, - SocketType.Stream, - ProtocolType.Tcp); - - _socket.Connect(new IPEndPoint(IPAddress.Loopback, server.Port)); - - _hostId = server.HostId; - - _networkStream = new NetworkStream(_socket); - _reader = new BinaryReader(_networkStream); - _writer = new BinaryWriter(_networkStream); - - _messageQueue = new BlockingCollection(); - - _readCancellationToken = new CancellationTokenSource(); - Task.Run(() => ReadMessage(_readCancellationToken.Token), _readCancellationToken.Token); - } - - public void SendPayload(Project project, string messageType) - { - SendPayload(project.ProjectDirectory, messageType); - } - - public void SendPayload(string projectPath, string messageType) - { - SendPayload(projectPath, messageType, new { }); - } - - public void SendPayload(string projectPath, string messageType, object payload) - { - int contextId; - if (!_projectContexts.TryGetValue(projectPath, out contextId)) - { - Assert.True(false, $"Unable to resolve context for {projectPath}"); - } - - SendPayload(contextId, messageType, payload); - } - - public void SendPayload(int contextId, string messageType) - { - SendPayload(contextId, messageType, new { }); - } - - public void SendPayload(int contextId, string messageType, object payload) - { - lock (_writer) - { - var message = new - { - ContextId = contextId, - HostId = _hostId, - MessageType = messageType, - Payload = payload - }; - _writer.Write(JsonConvert.SerializeObject(message)); - } - } - - public int Initialize(string projectPath) - { - var contextId = _nextContextId++; - - _projectContexts[projectPath] = contextId; - SendPayload(contextId, MessageTypes.Initialize, new { ProjectFolder = projectPath }); - - return contextId; - } - - public int Initialize(string projectPath, int protocolVersion) - { - var contextId = _nextContextId++; - - _projectContexts[projectPath] = contextId; - SendPayload(contextId, MessageTypes.Initialize, new { ProjectFolder = projectPath, Version = protocolVersion }); - - return contextId; - } - - public int Initialize(string projectPath, int protocolVersion, string configuration) - { - var contextId = _nextContextId++; - - _projectContexts[projectPath] = contextId; - SendPayload(contextId, MessageTypes.Initialize, new { ProjectFolder = projectPath, Version = protocolVersion, Configuration = configuration }); - - return contextId; - } - - public void SetProtocolVersion(int version) - { - SendPayload(0, MessageTypes.ProtocolVersion, new { Version = version }); - } - - public List DrainMessage(int count) - { - var result = new List(); - while (count > 0) - { - result.Add(GetResponse(timeout: _defaultTimeout)); - count--; - } - - return result; - } - - public List DrainAllMessages() - { - return DrainAllMessages(_defaultTimeout); - } - - /// - /// Read all messages from pipeline till timeout - /// - /// The timeout - /// All the messages in a list - public List DrainAllMessages(TimeSpan timeout) - { - var result = new List(); - while (true) - { - try - { - result.Add(GetResponse(timeout)); - } - catch (TimeoutException) - { - return result; - } - catch (Exception) - { - throw; - } - } - } - - /// - /// Read messages from pipeline until the first match - /// ] - /// A message type - /// The first match message - public DthMessage DrainTillFirst(string type) - { - return DrainTillFirst(type, _defaultTimeout); - } - - /// - /// Read messages from pipeline until the first match - /// - /// A message type - /// Timeout for each read - /// The first match message - public DthMessage DrainTillFirst(string type, TimeSpan timeout) - { - while (true) - { - var next = GetResponse(timeout); - if (next.MessageType == type) - { - return next; - } - } - } - - /// - /// Read messages from pipeline until the first match - /// - /// A message type - /// Timeout - /// All the messages read before the first match - /// The first match - public DthMessage DrainTillFirst(string type, TimeSpan timeout, out List leadingMessages) - { - leadingMessages = new List(); - while (true) - { - var next = GetResponse(timeout); - if (next.MessageType == type) - { - return next; - } - else - { - leadingMessages.Add(next); - } - } - } - - public void Dispose() - { - _reader.Dispose(); - _writer.Dispose(); - _networkStream.Dispose(); - _readCancellationToken.Cancel(); - - try - { - _socket.Shutdown(SocketShutdown.Both); - } - catch (SocketException ex) - { - // Swallow this error for now. - // This is a temporary fix for a random failure on CI. The issue happens on Windowx x86 - // only. - Console.Error.WriteLine($"Exception thrown durning socket shutting down: {ex.SocketErrorCode}."); - } - } - - private void ReadMessage(CancellationToken cancellationToken) - { - while (true) - { - try - { - if (cancellationToken.IsCancellationRequested) - { - return; - } - - var content = _reader.ReadString(); - var message = JsonConvert.DeserializeObject(content); - - _messageQueue.Add(message); - } - catch (IOException) - { - // swallow - } - catch (JsonSerializationException deserializException) - { - throw new InvalidOperationException( - $"Fail to deserailze data into {nameof(DthMessage)}.", - deserializException); - } - catch (Exception ex) - { - throw ex; - } - } - } - - private DthMessage GetResponse(TimeSpan timeout) - { - DthMessage message; - - if (_messageQueue.TryTake(out message, timeout)) - { - return message; - } - else - { - throw new TimeoutException($"Response time out after {timeout.TotalSeconds} seconds."); - } - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/DthTestServer.cs b/test/dotnet-projectmodel-server.Tests/DthTestServer.cs deleted file mode 100644 index 9c17737d2..000000000 --- a/test/dotnet-projectmodel-server.Tests/DthTestServer.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Net; -using System.Net.Sockets; -using System.Threading; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public class DthTestServer : IDisposable - { - private readonly ProjectModelServerCommand _program; - private readonly Thread _thread; - - public DthTestServer() - { - Port = FindFreePort(); - HostId = Guid.NewGuid().ToString(); - - _program = new ProjectModelServerCommand(Port, HostId); - - _thread = new Thread(() => { _program.OpenChannel(); }) { IsBackground = true }; - _thread.Start(); - } - - public string HostId { get; } - - public int Port { get; } - - public void Dispose() - { - try - { - _program.Shutdown(); - } - catch (InvalidOperationException) - { - // swallow the exception if the process had been terminated. - } - } - - private static int FindFreePort() - { - using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) - { - socket.Bind(new IPEndPoint(IPAddress.Loopback, 0)); - return ((IPEndPoint)socket.LocalEndPoint).Port; - } - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/DthTests.cs b/test/dotnet-projectmodel-server.Tests/DthTests.cs deleted file mode 100644 index 77db2d429..000000000 --- a/test/dotnet-projectmodel-server.Tests/DthTests.cs +++ /dev/null @@ -1,789 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.DotNet.ProjectModel.Graph; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public class DthTests : TestBase - { - private readonly TestAssetsManager _testAssetsManager; - - public DthTests() - { - _testAssetsManager = new TestAssetsManager( - Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "DthTestProjects", "src")); - } - - [Fact] - public void DthStartup_GetProjectInformation() - { - var projectPath = Path.Combine(_testAssetsManager.AssetsRoot, "EmptyConsoleApp"); - Assert.NotNull(projectPath); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - - var projectInformation = client.DrainTillFirst(MessageTypes.ProjectInformation) - .EnsureSource(server, client) - .RetrievePayloadAs() - .AssertProperty("Name", "EmptyConsoleApp"); - - projectInformation.RetrievePropertyAs("Configurations") - .AssertJArrayCount(2) - .AssertJArrayContains("Debug") - .AssertJArrayContains("Release"); - - var frameworkShortNames = projectInformation.RetrievePropertyAs("Frameworks") - .AssertJArrayCount(2) - .Select(f => f["ShortName"].Value()); - - Assert.Contains("netcoreapp1.0", frameworkShortNames); - Assert.Contains("dnx451", frameworkShortNames); - } - } - - [Theory] - [InlineData(MessageTypes.RefreshDependencies, null)] - [InlineData(MessageTypes.RestoreComplete, null)] - [InlineData(MessageTypes.RestoreComplete, true)] - [InlineData(MessageTypes.RestoreComplete, false)] - public void RefreshDependenciesResultsAreConsistent(string messageType, bool? clearCache) - { - var projectPath = Path.Combine(_testAssetsManager.AssetsRoot, "EmptyNetCoreApp"); - Assert.True(Directory.Exists(projectPath)); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - var originalDependencies = client.DrainMessage(7).Single(m => m.MessageType == MessageTypes.Dependencies) - .RetrievePayloadAs(); - - if (clearCache.HasValue) - { - client.SendPayload(projectPath, messageType, new { Reset = clearCache.Value }); - } - else - { - client.SendPayload(projectPath, messageType); - } - - var refreshedDependencies = client.DrainTillFirst(MessageTypes.Dependencies).Payload.ToString(); - - Assert.Equal(originalDependencies.ToString(), refreshedDependencies.ToString()); - } - } - - [Fact] - public void DependencyDiagnsoticsAfterDependencies() - { - var projectPath = Path.Combine(_testAssetsManager.AssetsRoot, "EmptyConsoleApp"); - Assert.NotNull(projectPath); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - var messages = client.DrainMessage(12) - .Select(message => message.MessageType) - .ToArray(); - - var expectDependencies = true; - var expectDependencyDiagnostics = false; - for (var i = 0; i < messages.Length; ++i) - { - if (messages[i] == MessageTypes.Dependencies) - { - Assert.True(expectDependencies); - expectDependencies = false; - expectDependencyDiagnostics = true; - } - else if (messages[i] == MessageTypes.DependencyDiagnostics) - { - Assert.True(expectDependencyDiagnostics); - expectDependencyDiagnostics = false; - break; - } - } - - Assert.False(expectDependencies); - Assert.False(expectDependencyDiagnostics); - } - } - - [Theory] - [InlineData(4, 4)] - [InlineData(5, 4)] - [InlineData(3, 3)] - public void DthStartup_ProtocolNegotiation(int requestVersion, int expectVersion) - { - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.SetProtocolVersion(requestVersion); - - var response = client.DrainTillFirst(MessageTypes.ProtocolVersion, TimeSpan.FromDays(1)); - response.EnsureSource(server, client); - - Assert.Equal(expectVersion, response.Payload["Version"]?.Value()); - } - } - - [Fact] - public void DthStartup_ProtocolNegotiation_ZeroIsNoAllowed() - { - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.SetProtocolVersion(0); - - Assert.Throws(() => - { - client.DrainTillFirst(MessageTypes.ProtocolVersion, timeout: TimeSpan.FromSeconds(1)); - }); - } - } - - [Theory] - [InlineData("Project", "UnresolvedProjectSample", "EmptyLibrary", "Project")] - [InlineData("Package", "UnresolvedPackageSample", "NoSuchPackage", null)] - [InlineData("Package", "IncompatiblePackageSample", "Microsoft.Web.Administration", "Package")] - public void DthCompilation_Initialize_UnresolvedDependency(string referenceType, - string testProjectName, - string expectedUnresolvedDependency, - string expectedUnresolvedType) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - Console.WriteLine("Test is skipped on Linux"); - return; - } - - var projectPath = Path.Combine(_testAssetsManager.AssetsRoot, testProjectName); - Assert.NotNull(projectPath); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - - var referencesMessage = client.DrainTillFirst(MessageTypes.References, TimeSpan.FromDays(1)) - .EnsureSource(server, client); - - if (referenceType == "Project") - { - var expectedUnresolvedProjectPath = Path.Combine(Path.GetDirectoryName(projectPath), - expectedUnresolvedDependency, - Project.FileName); - - referencesMessage.RetrievePayloadAs() - .RetrievePropertyAs("ProjectReferences") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("Name", expectedUnresolvedDependency) - .AssertProperty("Path", expectedUnresolvedProjectPath); - } - else if (referenceType == "Package") - { - referencesMessage.RetrievePayloadAs() - .RetrievePropertyAs("ProjectReferences") - .AssertJArrayCount(0); - } - - var unresolveDependency = client.DrainTillFirst(MessageTypes.Dependencies) - .EnsureSource(server, client) - .RetrieveDependency(expectedUnresolvedDependency); - - unresolveDependency.AssertProperty("Name", expectedUnresolvedDependency) - .AssertProperty("DisplayName", expectedUnresolvedDependency) - .AssertProperty("Resolved", false) - .AssertProperty("Type", expectedUnresolvedType); - - if (expectedUnresolvedType == "Project") - { - unresolveDependency.AssertProperty("Path", Path.Combine(Path.GetDirectoryName(projectPath), - expectedUnresolvedDependency, - Project.FileName)); - } - else - { - Assert.False(unresolveDependency["Path"].HasValues); - } - } - } - - [Fact] - public void DthNegative_BrokenProjectPathInLockFile() - { - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - // After restore the project is copied to another place so that - // the relative path in project lock file is invalid. - var movedProjectPath = _testAssetsManager.CreateTestInstance("BrokenProjectPathSample") - .WithLockFiles() - .TestRoot; - - client.Initialize(movedProjectPath); - - client.DrainTillFirst("Dependencies") - .RetrieveDependency("EmptyLibrary") - .AssertProperty("Errors", errorsArray => errorsArray.Count == 1) - .AssertProperty("Warnings", warningsArray => warningsArray.Count == 0) - .AssertProperty("Name", "EmptyLibrary") - .AssertProperty("Resolved", false); - - client.DrainTillFirst("DependencyDiagnostics") - .RetrieveDependencyDiagnosticsCollection() - .RetrieveDependencyDiagnosticsErrorAt(0) - .AssertProperty("FormattedMessage", message => message.Contains("error NU1002")) - .RetrievePropertyAs("Source") - .AssertProperty("Name", "EmptyLibrary"); - } - } - - [Fact] - public void DthDependencies_UpdateGlobalJson_RefreshDependencies() - { - var assetsManager = new TestAssetsManager(Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer")); - var projectPath = assetsManager.CreateTestInstance("DthUpdateSearchPathSample").WithLockFiles().TestRoot; - Assert.True(Directory.Exists(projectPath)); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - var testProject = Path.Combine(projectPath, "home", "src", "MainProject"); - - client.Initialize(testProject); - - client.DrainTillFirst("ProjectInformation") - .RetrievePayloadAs() - .RetrievePropertyAs("ProjectSearchPaths") - .AssertJArrayCount(2); - - client.DrainTillFirst("Dependencies") - .RetrieveDependency("Newtonsoft.Json") - .AssertProperty("Type", "Project") - .AssertProperty("Resolved", true) - .AssertProperty("Errors", array => array.Count == 0, _ => "Dependency shouldn't contain any error."); - - client.DrainTillFirst("DependencyDiagnostics") - .RetrievePayloadAs() - .AssertProperty("Errors", array => array.Count == 0) - .AssertProperty("Warnings", array => array.Count == 0); - - // Overwrite the global.json to remove search path to ext - File.WriteAllText( - Path.Combine(projectPath, "home", GlobalSettings.FileName), - JsonConvert.SerializeObject(new { projects = new string[] { "src" } })); - - client.SendPayload(testProject, "RefreshDependencies"); - - client.DrainTillFirst("ProjectInformation") - .RetrievePayloadAs() - .RetrievePropertyAs("ProjectSearchPaths") - .AssertJArrayCount(1) - .AssertJArrayElement(0, Path.Combine(projectPath, "home", "src")); - - client.DrainTillFirst("Dependencies") - .RetrieveDependency("Newtonsoft.Json") - .AssertProperty("Resolved", false) - .AssertProperty("Type", "Project") - .RetrievePropertyAs("Errors") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("ErrorCode", ErrorCodes.NU1010); - - client.DrainTillFirst("DependencyDiagnostics") - .RetrieveDependencyDiagnosticsCollection() - .RetrieveDependencyDiagnosticsErrorAt(0) - .AssertProperty("ErrorCode", ErrorCodes.NU1010); - - var restoreCommand = new RestoreCommand(); - restoreCommand.WorkingDirectory = projectPath; - restoreCommand.Execute().Should().Pass(); - - client.SendPayload(testProject, "RefreshDependencies"); - - client.DrainTillFirst("Dependencies") - .RetrieveDependency("Newtonsoft.Json") - .AssertProperty("Resolved", true) - .AssertProperty("Type", "Package") - .RetrievePropertyAs("Errors") - .AssertJArrayCount(0); - - client.DrainTillFirst("DependencyDiagnostics") - .RetrievePayloadAs() - .AssertProperty("Errors", array => array.Count == 0) - .AssertProperty("Warnings", array => array.Count == 0); - - // Overwrite the global.json to add search path to ext back - File.WriteAllText( - Path.Combine(projectPath, "home", GlobalSettings.FileName), - JsonConvert.SerializeObject(new { projects = new string[] { "src", "../ext" } })); - - client.SendPayload(testProject, "RefreshDependencies"); - - client.DrainTillFirst("ProjectInformation") - .RetrievePayloadAs() - .RetrievePropertyAs("ProjectSearchPaths") - .AssertJArrayCount(2) - .AssertJArrayElement(0, Path.Combine(projectPath, "home", "src")) - .AssertJArrayElement(1, Path.Combine(projectPath, "ext")); - - client.DrainTillFirst("Dependencies") - .RetrieveDependency("Newtonsoft.Json") - .AssertProperty("Resolved", false) - .AssertProperty("Type", "Package") - .RetrievePropertyAs("Errors") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("ErrorCode", ErrorCodes.NU1010); - - client.DrainTillFirst("DependencyDiagnostics") - .RetrieveDependencyDiagnosticsCollection() - .RetrieveDependencyDiagnosticsErrorAt(0) - .AssertProperty("ErrorCode", ErrorCodes.NU1010); - } - } - - [Fact] - public void DthStartup_OpenProjectBeforeRestore() - { - var projectPath = _testAssetsManager.CreateTestInstance("EmptyConsoleApp").TestRoot; - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - var messages = client.DrainMessage(12); - Assert.False(messages.Any(msg => msg.MessageType == MessageTypes.Error)); - - var dependencyDiagnostics = messages.Where(msg => msg.MessageType == MessageTypes.DependencyDiagnostics); - Assert.Equal(2, dependencyDiagnostics.Count()); - - foreach (var message in dependencyDiagnostics) - { - message.RetrievePayloadAs() - .RetrievePropertyAs("Errors") - .AssertJArrayContains(error => error["ErrorCode"].Value() == ErrorCodes.NU1009); - } - } - } - - [Fact] - public void InvalidProjectJson() - { - var testAssetsPath = Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer"); - var assetsManager = new TestAssetsManager(testAssetsPath); - var testSource = assetsManager.CreateTestInstance("IncorrectProjectJson").TestRoot; - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(Path.Combine(_testAssetsManager.AssetsRoot, "EmptyLibrary")); - client.Initialize(testSource); - - // Error for invalid project.json - var messages = client.DrainMessage(8); - messages.Single(msg => msg.MessageType == MessageTypes.Error) - .Payload.AsJObject() - .AssertProperty("Path", v => v.Contains("IncorrectProjectJson")); - - // Successfully initialize the other project - messages.Single(msg => msg.MessageType == MessageTypes.ProjectInformation) - .Payload.AsJObject() - .AssertProperty("Name", v => string.Equals(v, "EmptyLibrary", StringComparison.Ordinal)); - - // Successfully initialize another project afterwards - client.Initialize(Path.Combine(_testAssetsManager.AssetsRoot, "EmptyConsoleApp")); - client.DrainTillFirst(MessageTypes.ProjectInformation) - .Payload.AsJObject() - .AssertProperty("Name", v => string.Equals(v, "EmptyConsoleApp", StringComparison.Ordinal)); - } - } - - [Fact] - public void InvalidGlobalJson() - { - var testAssetsPath = Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer"); - var assetsManager = new TestAssetsManager(testAssetsPath); - var testSource = assetsManager.CreateTestInstance("IncorrectGlobalJson"); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(Path.Combine(testSource.TestRoot, "src", "Project1")); - - client.DrainTillFirst(MessageTypes.Error) - .Payload.AsJObject() - .AssertProperty("Path", v => v.Contains("InvalidGlobalJson")); - } - } - - [Fact] - public void RecoverFromGlobalError() - { - var testProject = _testAssetsManager.CreateTestInstance("EmptyConsoleApp") - .WithLockFiles() - .TestRoot; - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - var projectFile = Path.Combine(testProject, Project.FileName); - var content = File.ReadAllText(projectFile); - File.WriteAllText(projectFile, content + "}"); - - client.Initialize(testProject); - client.DrainTillFirst(MessageTypes.Error); - - File.WriteAllText(projectFile, content); - client.SendPayload(testProject, MessageTypes.FilesChanged); - client.DrainTillFirst(MessageTypes.Error) - .Payload.AsJObject() - .AssertProperty("Message", null as string); - } - } - - [Theory] - [InlineData(500, true)] - [InlineData(3000, false)] - public void WaitForLockFileReleased(int occupyFileFor, bool expectSuccess) - { - var testProject = _testAssetsManager.CreateTestInstance("EmptyConsoleApp") - .WithLockFiles() - .TestRoot; - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - var lockFilePath = Path.Combine(testProject, LockFile.FileName); - var lockFileContent = File.ReadAllText(lockFilePath); - var fs = new FileStream(lockFilePath, FileMode.Create, FileAccess.Write, FileShare.None); - - // Test the platform - // A sharing violation is expected in following code. Otherwise the FileSteam is not implemented correctly. - Assert.ThrowsAny(() => - { - new FileStream(lockFilePath, FileMode.Open, FileAccess.Read, FileShare.Read); - }); - - var task = Task.Run(() => - { - // WorkspaceContext will try to open the lock file for 3 times with 500 ms interval in between. - Thread.Sleep(occupyFileFor); - fs.Dispose(); - }); - - client.Initialize(testProject); - if (expectSuccess) - { - client.DrainMessage(12).AssertDoesNotContain(MessageTypes.Error); - } - else - { - client.DrainTillFirst(MessageTypes.Error); - } - } - } - - [Fact] - public void AddMSBuildReferenceBeforeRestore() - { - var tam = new TestAssetsManager( - Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MSBuildReferencesProjects")); - - // var appName = "EmptyNetCoreApp"; - var projectPath = tam.CreateTestInstance("ValidCase01").WithLockFiles().TestRoot; - projectPath = Path.Combine(projectPath, "src", "MainApp"); - - var projectFilePath = Path.Combine(projectPath, Project.FileName); - var projectJson = JsonConvert.DeserializeObject(File.ReadAllText(projectFilePath)); - - ((JObject)projectJson["frameworks"]["net46"]["dependencies"]) - .Add("ClassLibrary4", JToken.FromObject(new { target = "project" })); - - File.WriteAllText(projectFilePath, JsonConvert.SerializeObject(projectJson)); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - var messages = client.DrainMessage(7); - messages.AssertDoesNotContain(MessageTypes.Error); - messages.RetrieveSingleMessage(MessageTypes.Dependencies) - .RetrieveDependency("ClassLibrary4") - .AssertProperty( - "Version", - v => !string.IsNullOrEmpty(v.ToString()), - v => $"Version string shouldn't be empty. Value [{v.ToString()}]"); - } - } - - [Fact] - public void MSBuildReferenceTest() - { - var testProject = Path.Combine(RepoRoot, "TestAssets", - "ProjectModelServer", - "MSBuildReferencesProjects", - "ValidCase01", - "src", - "MainApp"); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(testProject); - var messages = client.DrainMessage(7); - - var classLibraries = new HashSet(new string[] { "ClassLibrary1", "ClassLibrary2", "ClassLibrary3" }); - var dependencies = messages.RetrieveSingleMessage(MessageTypes.Dependencies); - var testProjectRoot = Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MSBuildReferencesProjects", "ValidCase01"); - foreach (var classLibrary in classLibraries) - { - var dependency = dependencies.RetrieveDependency(classLibrary); - dependency.AssertProperty("Type", LibraryType.MSBuildProject.ToString()); - dependency.AssertProperty("Path", NormalizePathString(Path.Combine(testProjectRoot, classLibrary, $"{classLibrary}.csproj"))); - dependency.AssertProperty("Resolved", true); - dependency.AssertProperty("Name", classLibrary); - dependency.AssertProperty("Errors", array => array.Count == 0); - dependency.AssertProperty("Warnings", array => array.Count == 0); - } - - var references = messages.RetrieveSingleMessage(MessageTypes.References) - .RetrievePayloadAs(); - - var projectReferences = references.RetrievePropertyAs("ProjectReferences"); - Assert.Equal(3, projectReferences.Count); - for (int i = 0; i < 3; ++i) - { - var projectRef = projectReferences.RetrieveArraryElementAs(i); - var name = projectRef["Name"].Value(); - - Assert.True(classLibraries.Contains(name)); - projectRef.AssertProperty("Path", NormalizePathString(Path.Combine(testProjectRoot, name, $"{name}.csproj"))); - } - - var fileReferences = references.RetrievePropertyAs("FileReferences") - .Select(each => each.Value()) - .ToArray(); - foreach (var each in classLibraries) - { - fileReferences.Contains(Path.Combine("ValidCase01", "ClassLibrary1", "bin", "Debug", $"{each}.dll")); - } - } - } - - [Fact] - public void RemovePackageDependencyFromProjectJson() - { - // Remove a package dependency from project.json and then request refreshing dependency before - // restore. - - var appName = "EmptyNetCoreApp"; - var projectPath = _testAssetsManager.CreateTestInstance(appName) - .WithLockFiles() - .TestRoot; - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - - client.DrainMessage(7) - .AssertDoesNotContain(MessageTypes.Error) - .RetrieveSingleMessage(MessageTypes.Dependencies) - .RetrieveDependency(appName) - .RetrievePropertyAs("Dependencies") - .AssertJArrayCount(2); - - var projectFilePath = Path.Combine(projectPath, Project.FileName); - var projectJson = JsonConvert.DeserializeObject(File.ReadAllText(projectFilePath)); - - // Remove newtonsoft.json dependency - var dependencies = projectJson["frameworks"]["netcoreapp1.0"]["dependencies"] as JObject; - dependencies.Remove("Newtonsoft.Json"); - - File.WriteAllText(projectFilePath, JsonConvert.SerializeObject(projectJson)); - - client.SendPayload(projectPath, MessageTypes.RefreshDependencies); - - var afterDependencies = client.DrainTillFirst(MessageTypes.Dependencies); - afterDependencies.RetrieveDependency(appName) - .RetrievePropertyAs("Dependencies") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("Name", "Microsoft.NETCore.App"); - afterDependencies.RetrieveDependency("Newtonsoft.Json"); - } - } - - [Fact] - public void RemoveMSBuildDependencyFromProjectJson() - { - // Remove a msbuild project dependency from project.json and then request refreshing dependency before - // restore. - - var tam = new TestAssetsManager( - Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MSBuildReferencesProjects")); - - // var appName = "EmptyNetCoreApp"; - var projectPath = tam.CreateTestInstance("ValidCase01").WithLockFiles().TestRoot; - projectPath = Path.Combine(projectPath, "src", "MainApp"); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - - client.DrainMessage(7) - .AssertDoesNotContain(MessageTypes.Error) - .RetrieveSingleMessage(MessageTypes.Dependencies) - .RetrieveDependency("MainApp") - .RetrievePropertyAs("Dependencies") - .AssertJArrayContains(dep => dep["Name"].Value() == "ClassLibrary1") - .AssertJArrayContains(dep => dep["Name"].Value() == "ClassLibrary2") - .AssertJArrayContains(dep => dep["Name"].Value() == "ClassLibrary3"); - - var projectFilePath = Path.Combine(projectPath, Project.FileName); - var projectJson = JsonConvert.DeserializeObject(File.ReadAllText(projectFilePath)); - - // Remove ClassLibrary2 and ClassLibrary3 dependency - var dependencies = projectJson["frameworks"]["net46"]["dependencies"] as JObject; - dependencies.Remove("ClassLibrary2"); - dependencies.Remove("ClassLibrary3"); - - File.WriteAllText(projectFilePath, JsonConvert.SerializeObject(projectJson)); - - client.SendPayload(projectPath, MessageTypes.RefreshDependencies); - - var afterDependencies = client.DrainTillFirst(MessageTypes.Dependencies); - afterDependencies.RetrieveDependency("MainApp") - .RetrievePropertyAs("Dependencies") - .AssertJArrayNotContains(dep => dep["Name"].Value() == "ClassLibrary2") - .AssertJArrayNotContains(dep => dep["Name"].Value() == "ClassLibrary3"); - - afterDependencies.RetrieveDependency("ClassLibrary2"); - afterDependencies.RetrieveDependency("ClassLibrary3"); - } - } - - [Fact] - public void TestMscorlibLibraryDuplication() - { - var projectPath = Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MscorlibLibraryDuplication"); - - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - client.Initialize(projectPath); - client.DrainMessage(7).AssertDoesNotContain(MessageTypes.Error); - } - } - - [Fact] - public void TestTargetFrameworkChange() - { - using (var server = new DthTestServer()) - using (var client = new DthTestClient(server)) - { - var testProject = _testAssetsManager.CreateTestInstance("EmptyLibrary") - .WithLockFiles() - .TestRoot; - - // initialize the project and drain all messages (7 message for project with one framework) - client.Initialize(testProject); - client.DrainMessage(7); - - // update the target framework from netstandard1.3 to netstandard 1.5 so as to invalidate all - // dependencies - var projectJsonPath = Path.Combine(testProject, "project.json"); - File.WriteAllText(projectJsonPath, - File.ReadAllText(projectJsonPath).Replace("netstandard1.3", "netstandard1.5")); - - // send files change request to server to prompt update - client.SendPayload(testProject, MessageTypes.FilesChanged); - - // assert project information is updated - client.DrainTillFirst(MessageTypes.ProjectInformation) - .RetrievePayloadAs() - .RetrievePropertyAs("Frameworks") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("ShortName", "netstandard1.5"); - - // the NETStandard.Library dependency should turn unresolved - var dependencies = client.DrainTillFirst(MessageTypes.Dependencies); - - dependencies.RetrievePayloadAs() - .RetrievePropertyAs("Framework") - .AssertProperty("ShortName", "netstandard1.5"); - - dependencies.RetrieveDependency("NETStandard.Library") - .RetrievePropertyAs("Errors") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("ErrorCode", "NU1001"); - - // warning for project.json and project.lock.json out of sync - var diagnostics = client.DrainTillFirst(MessageTypes.DependencyDiagnostics); - - diagnostics.RetrievePayloadAs() - .RetrievePropertyAs("Framework") - .AssertProperty("ShortName", "netstandard1.5"); - - diagnostics.RetrievePayloadAs() - .RetrievePropertyAs("Warnings") - .AssertJArrayCount(1) - .RetrieveArraryElementAs(0) - .AssertProperty("ErrorCode", "NU1006"); - - // restore again - var restoreCommand = new RestoreCommand(); - restoreCommand.WorkingDirectory = testProject; - restoreCommand.Execute().Should().Pass(); - - client.SendPayload(testProject, MessageTypes.RefreshDependencies); - - client.DrainTillFirst(MessageTypes.Dependencies) - .RetrieveDependency("NETStandard.Library") - .RetrievePropertyAs("Errors") - .AssertJArrayCount(0); - - client.DrainTillFirst(MessageTypes.DependencyDiagnostics) - .RetrievePayloadAs() - .RetrievePropertyAs("Warnings") - .AssertJArrayCount(0); - } - } - - private static string NormalizePathString(string original) - { - return original.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar); - } - - private static void PrintAllMessages(IEnumerable messages) - { - foreach (var message in messages) - { - Console.WriteLine($"{message.MessageType} => {message.Payload.ToString()}"); - } - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessage.cs b/test/dotnet-projectmodel-server.Tests/Helpers/DthMessage.cs deleted file mode 100644 index b0360d6b3..000000000 --- a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessage.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using Newtonsoft.Json.Linq; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public class DthMessage - { - public string HostId { get; set; } - - public string MessageType { get; set; } - - public int ContextId { get; set; } - - public int Version { get; set; } - - public JToken Payload { get; set; } - - // for ProjectContexts message only - public Dictionary Projects { get; set; } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageCollectionExtension.cs b/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageCollectionExtension.cs deleted file mode 100644 index 4a8545c28..000000000 --- a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageCollectionExtension.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Versioning; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public static class DthMessageCollectionExtension - { - public static IList GetMessagesByFramework(this IEnumerable messages, FrameworkName targetFramework) - { - return messages.Where(msg => MatchesFramework(targetFramework, msg)).ToList(); - } - - public static IList GetMessagesByType(this IEnumerable messages, string typename) - { - return messages.Where(msg => string.Equals(msg.MessageType, typename)).ToList(); - } - - public static DthMessage RetrieveSingleMessage(this IEnumerable messages, - string typename) - { - var result = messages.SingleOrDefault(msg => string.Equals(msg.MessageType, typename, StringComparison.Ordinal)); - - if (result == null) - { - if (messages.FirstOrDefault(msg => string.Equals(msg.MessageType, typename, StringComparison.Ordinal)) != null) - { - Assert.False(true, $"More than one {typename} messages exist."); - } - else - { - Assert.False(true, $"{typename} message doesn't exists."); - } - } - - return result; - } - - public static IEnumerable ContainsMessage(this IEnumerable messages, - string typename) - { - var contain = messages.FirstOrDefault(msg => string.Equals(msg.MessageType, typename, StringComparison.Ordinal)) != null; - - Assert.True(contain, $"Messages collection doesn't contain message of type {typename}."); - - return messages; - } - - public static IEnumerable AssertDoesNotContain(this IEnumerable messages, string typename) - { - var notContain = messages.FirstOrDefault(msg => string.Equals(msg.MessageType, typename, StringComparison.Ordinal)) == null; - - Assert.True(notContain, $"Message collection contains message of type {typename}."); - - return messages; - } - - private static bool MatchesFramework(FrameworkName targetFramework, DthMessage msg) - { - if (msg.Payload.Type != JTokenType.Object) - { - return false; - } - - var frameworkObj = msg.Payload["Framework"]; - - if (frameworkObj == null || !frameworkObj.HasValues) - { - return false; - } - - return string.Equals(frameworkObj.Value("FrameworkName"), targetFramework.FullName, StringComparison.OrdinalIgnoreCase); - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageExtension.cs b/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageExtension.cs deleted file mode 100644 index 6230884c9..000000000 --- a/test/dotnet-projectmodel-server.Tests/Helpers/DthMessageExtension.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public static class DthMessageExtension - { - public static JObject RetrieveDependency(this DthMessage message, string dependencyName) - { - Assert.NotNull(message); - Assert.Equal(MessageTypes.Dependencies, message.MessageType); - - var payload = message.Payload as JObject; - Assert.NotNull(payload); - - var dependency = payload[MessageTypes.Dependencies][dependencyName] as JObject; - Assert.NotNull(dependency); - Assert.Equal(dependencyName, dependency["Name"].Value()); - - return dependency; - } - - public static DthMessage EnsureNotContainDependency(this DthMessage message, string dependencyName) - { - Assert.NotNull(message); - Assert.Equal(MessageTypes.Dependencies, message.MessageType); - - var payload = message.Payload as JObject; - Assert.NotNull(payload); - - Assert.True(payload[MessageTypes.Dependencies][dependencyName] == null, $"Unexpected dependency {dependencyName} exists."); - - return message; - } - - public static JObject RetrieveDependencyDiagnosticsCollection(this DthMessage message) - { - Assert.NotNull(message); - Assert.Equal(MessageTypes.DependencyDiagnostics, message.MessageType); - - var payload = message.Payload as JObject; - Assert.NotNull(payload); - - return payload; - } - - public static T RetrievePayloadAs(this DthMessage message) - where T : JToken - { - Assert.NotNull(message); - AssertType(message.Payload, "Payload"); - - return (T)message.Payload; - } - - /// - /// Throws if the message is not generated in communication between given server and client - /// - public static DthMessage EnsureSource(this DthMessage message, DthTestServer server, DthTestClient client) - { - if (message.HostId != server.HostId) - { - throw new Exception($"{nameof(message.HostId)} doesn't match the one of server. Expected {server.HostId} but actually {message.HostId}."); - } - - return message; - } - - public static void AssertType(object obj, string name) - { - Assert.True(obj is T, $"{name} is not of type {typeof(T).Name}."); - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/Helpers/JArrayExtensions.cs b/test/dotnet-projectmodel-server.Tests/Helpers/JArrayExtensions.cs deleted file mode 100644 index fb925fe72..000000000 --- a/test/dotnet-projectmodel-server.Tests/Helpers/JArrayExtensions.cs +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public static class JArrayExtensions - { - public static JArray AssertJArrayEmpty(this JArray array) - { - Assert.NotNull(array); - Assert.Empty(array); - - return array; - } - - public static JArray AssertJArrayNotEmpty(this JArray array) - { - Assert.NotNull(array); - Assert.NotEmpty(array); - - return array; - } - - public static JArray AssertJArrayCount(this JArray array, int expectedCount) - { - Assert.NotNull(array); - Assert.Equal(expectedCount, array.Count); - - return array; - } - - public static JArray AssertJArrayElement(this JArray array, int index, T expectedElementValue) - { - Assert.NotNull(array); - - var element = array[index]; - Assert.NotNull(element); - Assert.Equal(expectedElementValue, element.Value()); - - return array; - } - - public static JArray AssertJArrayContains(this JArray array, T value) - { - AssertJArrayContains(array, element => object.Equals(element, value)); - - return array; - } - - public static JArray AssertJArrayContains(this JArray array, Func critiera) - { - bool contains = false; - foreach (var element in array) - { - var value = element.Value(); - - contains = critiera(value); - if (contains) - { - break; - } - } - - Assert.True(contains, "JArray doesn't contains the specified element."); - - return array; - } - - public static JArray AssertJArrayNotContains(this JArray array, Func critiera) - { - foreach (var element in array) - { - var value = element.Value(); - - if (critiera(value)) - { - Assert.True(false, "JArray contains unexpected element."); - } - } - - return array; - } - - public static T RetrieveArraryElementAs(this JArray json, int index) - where T : JToken - { - Assert.NotNull(json); - Assert.True(index >= 0 && index < json.Count, "Index out of range"); - - var element = json[index]; - DthMessageExtension.AssertType(element, $"Element at {index}"); - - return (T)element; - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/Helpers/JObjectExtensions.cs b/test/dotnet-projectmodel-server.Tests/Helpers/JObjectExtensions.cs deleted file mode 100644 index aa513917c..000000000 --- a/test/dotnet-projectmodel-server.Tests/Helpers/JObjectExtensions.cs +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.ProjectModel.Server.Tests -{ - public static class JObjectExtensions - { - public static JObject AsJObject(this JToken token) - { - DthMessageExtension.AssertType(token, nameof(JToken)); - - return (JObject)token; - } - - public static JObject RetrieveDependencyDiagnosticsErrorAt(this JObject payload, int index) - { - Assert.NotNull(payload); - - return payload.RetrievePropertyAs("Errors") - .RetrieveArraryElementAs(index); - } - - public static T RetrieveDependencyDiagnosticsErrorAt(this JObject payload, int index) - where T : JToken - { - Assert.NotNull(payload); - - return payload.RetrievePropertyAs("Errors") - .RetrieveArraryElementAs(index); - } - - public static T RetrievePropertyAs(this JObject json, string propertyName) - where T : JToken - { - Assert.NotNull(json); - - var property = json[propertyName]; - Assert.NotNull(property); - DthMessageExtension.AssertType(property, $"Property {propertyName}"); - - return (T)property; - } - - public static JObject AssertProperty(this JObject json, string propertyName, T expectedPropertyValue) - { - Assert.NotNull(json); - - var property = json[propertyName]; - Assert.NotNull(property); - Assert.Equal(expectedPropertyValue, property.Value()); - - return json; - } - - public static JObject AssertProperty(this JObject json, string propertyName, Func assertion) - { - return AssertProperty(json, - propertyName, - assertion, - value => $"Assert failed on {propertyName}."); - } - - public static JObject AssertProperty(this JObject json, string propertyName, Func assertion, Func errorMessage) - { - Assert.NotNull(json); - - var property = json[propertyName]; - Assert.False(property == null, $"Property {propertyName} doesn't exist."); - - var propertyValue = property.Value(); - Assert.False(propertyValue == null, $"Property {propertyName} of type {typeof(T).Name} doesn't exist."); - - Assert.True(assertion(propertyValue), - errorMessage(propertyValue)); - - return json; - } - } -} diff --git a/test/dotnet-projectmodel-server.Tests/dotnet-projectmodel-server.Tests.xproj b/test/dotnet-projectmodel-server.Tests/dotnet-projectmodel-server.Tests.xproj deleted file mode 100644 index 29f474eb4..000000000 --- a/test/dotnet-projectmodel-server.Tests/dotnet-projectmodel-server.Tests.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 11c77123-e4da-499f-8900-80c88c2c69f2 - Microsoft.DotNet.ProjectModel.Server.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - - - - \ No newline at end of file diff --git a/test/dotnet-projectmodel-server.Tests/project.json b/test/dotnet-projectmodel-server.Tests/project.json deleted file mode 100644 index c75556768..000000000 --- a/test/dotnet-projectmodel-server.Tests/project.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet": { - "target": "project" - }, - "Microsoft.Win32.Registry": { - "version": "4.0.0", - "exclude": "Compile" - }, - "Microsoft.DotNet.Tools.Tests.Utilities": { - "target": "project" - }, - "Microsoft.DotNet.ProjectModel": { - "target": "project" - }, - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24", - "System.Net.NameResolution": "4.0.0" - }, - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "netstandardapp1.5", - "dotnet5.4", - "portable-net451+win8" - ] - } - }, - "testRunner": "xunit" -} From c7d3f24be0c7d4fd28c734876bb16bc62bb13dfb Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Thu, 30 Jun 2016 17:11:33 -0700 Subject: [PATCH 021/165] MakeRelative Task (#3750) * MakeRelative Task * PR Feedback * Fix naming conflict --- .../dotnet-cli-build/MakeRelative.cs | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 build_projects/dotnet-cli-build/MakeRelative.cs diff --git a/build_projects/dotnet-cli-build/MakeRelative.cs b/build_projects/dotnet-cli-build/MakeRelative.cs new file mode 100644 index 000000000..fbb144fdd --- /dev/null +++ b/build_projects/dotnet-cli-build/MakeRelative.cs @@ -0,0 +1,119 @@ +using System; +using System.IO; +using Microsoft.Build.Utilities; +using Microsoft.Build.Framework; +using Microsoft.DotNet.Cli.Build.Framework; +using Newtonsoft.Json; + +namespace Microsoft.DotNet.Cli.Build +{ + public class MakeRelative : Task + { + [Required] + public string Path1 { get; set; } + + [Required] + public string Path2 { get; set; } + + public char SeparatorChar { get; set; } + + [Output] + public ITaskItem RelativePath { get; set; } + + public override bool Execute() + { + if (SeparatorChar == default(char)) + { + SeparatorChar = Path.DirectorySeparatorChar; + } + + var relativePath = GetRelativePath(Path1, Path2, SeparatorChar); + + RelativePath = ToTaskItem(Path1, Path2, relativePath); + + return true; + } + + private static TaskItem ToTaskItem(string path1, string path2, string relativePath) + { + var framework = new TaskItem(); + framework.ItemSpec = relativePath; + + framework.SetMetadata("Path1", path1); + framework.SetMetadata("Path2", path2); + framework.SetMetadata("RelativePath", relativePath); + + return framework; + } + + private static string GetRelativePath(string path1, string path2, char separator = default(char)) + { + + StringComparison compare; + if (CurrentPlatform.IsWindows) + { + compare = StringComparison.OrdinalIgnoreCase; + // check if paths are on the same volume + if (!string.Equals(Path.GetPathRoot(path1), Path.GetPathRoot(path2))) + { + // on different volumes, "relative" path is just Path2 + return path2; + } + } + else + { + compare = StringComparison.Ordinal; + } + + var index = 0; + var path1Segments = path1.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var path2Segments = path2.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + // if path1 does not end with / it is assumed the end is not a directory + // we will assume that is isn't a directory by ignoring the last split + var len1 = path1Segments.Length - 1; + var len2 = path2Segments.Length; + + // find largest common absolute path between both paths + var min = Math.Min(len1, len2); + while (min > index) + { + if (!string.Equals(path1Segments[index], path2Segments[index], compare)) + { + break; + } + // Handle scenarios where folder and file have same name (only if os supports same name for file and directory) + // e.g. /file/name /file/name/app + else if ((len1 == index && len2 > index + 1) || (len1 > index && len2 == index + 1)) + { + break; + } + ++index; + } + + var path = ""; + + // check if path2 ends with a non-directory separator and if path1 has the same non-directory at the end + if (len1 + 1 == len2 && !string.IsNullOrEmpty(path1Segments[index]) && + string.Equals(path1Segments[index], path2Segments[index], compare)) + { + return path; + } + + for (var i = index; len1 > i; ++i) + { + path += ".." + separator; + } + for (var i = index; len2 - 1 > i; ++i) + { + path += path2Segments[i] + separator; + } + // if path2 doesn't end with an empty string it means it ended with a non-directory name, so we add it back + if (!string.IsNullOrEmpty(path2Segments[len2 - 1])) + { + path += path2Segments[len2 - 1]; + } + + return path; + } + } +} From 5cfecec2e9d27ca04246323f6d96dce66f32570f Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Wed, 29 Jun 2016 16:21:46 -0700 Subject: [PATCH 022/165] nuget version --- Microsoft.DotNet.Cli.sln | 7 +- build.proj | 2 + build/Microsoft.DotNet.Cli.Monikers.props | 11 ++ build/Microsoft.DotNet.Cli.Prepare.targets | 44 +++--- ...Microsoft.DotNet.Cli.Installer.DEB.targets | 14 +- ...Microsoft.DotNet.Cli.Installer.MSI.targets | 107 +++++++------- ...Microsoft.DotNet.Cli.Installer.PKG.targets | 131 +++++++++++++++++- .../Microsoft.DotNet.Cli.Layout.targets | 31 ++++- .../Microsoft.DotNet.Cli.Nupkg.targets | 18 +-- .../dotnet-cli-build/ReplaceFileContents.cs | 79 +++++++++++ 10 files changed, 340 insertions(+), 104 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Monikers.props create mode 100644 build_projects/dotnet-cli-build/ReplaceFileContents.cs diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 60ca154de..4cdf71157 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +VisualStudioVersion = 14.0.25123.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED2FE3E2-F7E7-4389-8231-B65123F2076F}" EndProject @@ -126,11 +126,12 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build3.Tests", "test EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}" ProjectSection(SolutionItems) = preProject + build\Microsoft.DotNet.Cli.Monikers.props = build\Microsoft.DotNet.Cli.Monikers.props build\Microsoft.DotNet.Cli.Package.targets = build\Microsoft.DotNet.Cli.Package.targets build\Microsoft.DotNet.Cli.Prepare.targets = build\Microsoft.DotNet.Cli.Prepare.targets EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{31A6D092-F50C-4D70-BA4D-97098189A953}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{FD7D515A-D10F-4F49-B8AE-21CF7ED071AE}" ProjectSection(SolutionItems) = preProject build\package\Microsoft.DotNet.Cli.Archive.targets = build\package\Microsoft.DotNet.Cli.Archive.targets build\package\Microsoft.DotNet.Cli.Installer.DEB.targets = build\package\Microsoft.DotNet.Cli.Installer.DEB.targets @@ -978,6 +979,6 @@ Global {4C3B06D5-B6D5-4E5B-A44F-3EBE52A1C759} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {35B19F22-B8C0-4849-9C35-3F809B7588B8} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {49D7318E-D198-4E2B-BBEA-3A24D805F88D} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} - {31A6D092-F50C-4D70-BA4D-97098189A953} = {89905EC4-BC0F-443B-8ADF-691321F10108} + {FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108} EndGlobalSection EndGlobal diff --git a/build.proj b/build.proj index 169def133..61ba87e7e 100644 --- a/build.proj +++ b/build.proj @@ -1,5 +1,7 @@ + + - dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(InstallerExtension) - $(PackagesDirectory)/$(SharedHostInstallerFileName) + dotnet-host-$(ProductMonikerRid).$(SharedHostVersion)$(InstallerExtension) + $(PackagesDirectory)/$(DownloadedSharedHostInstallerFileName) - dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(InstallerExtension) - $(PackagesDirectory)/$(HostFxrInstallerFileName) + dotnet-hostfxr-$(ProductMonikerRid).$(HostFxrVersion)$(InstallerExtension) + $(PackagesDirectory)/$(DownloadedHostFxrInstallerFileName) - dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(InstallerExtension) - $(PackagesDirectory)/$(SharedFrameworkInstallerFileName) + dotnet-sharedframework-$(ProductMonikerRid).$(SharedFrameworkVersion)$(InstallerExtension) + $(PackagesDirectory)/$(DownloadedSharedFrameworkInstallerFileName) dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) - - Microsoft .NET Core 1.0.0 - SDK Preview 2 @@ -124,24 +122,24 @@ $(SharedFrameworkPublishDirectory) - <_DownloadAndExtractItem Include="SharedFrameworkInstallerFile" - Condition="!Exists('$(SharedFrameworkInstallerFile)')"> - $(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(SharedFrameworkInstallerFileName) - $(SharedFrameworkInstallerFile) + <_DownloadAndExtractItem Include="DownloadedSharedFrameworkInstallerFile" + Condition="!Exists('$(DownloadedSharedFrameworkInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(DownloadedSharedFrameworkInstallerFileName) + $(DownloadedSharedFrameworkInstallerFile) - <_DownloadAndExtractItem Include="SharedHostInstallerFile" - Condition="!Exists('$(SharedHostInstallerFile)')"> - $(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(SharedHostInstallerFileName) - $(SharedHostInstallerFile) + <_DownloadAndExtractItem Include="DownloadedSharedHostInstallerFile" + Condition="!Exists('$(DownloadedSharedHostInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(DownloadedSharedHostInstallerFileName) + $(DownloadedSharedHostInstallerFile) - <_DownloadAndExtractItem Include="HostFxrInstallerFile" - Condition="!Exists('$(HostFxrInstallerFile)')"> - $(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(HostFxrInstallerFileName) - $(HostFxrInstallerFile) + <_DownloadAndExtractItem Include="DownloadedHostFxrInstallerFile" + Condition="!Exists('$(DownloadedHostFxrInstallerFile)')"> + $(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(DownloadedHostFxrInstallerFileName) + $(DownloadedHostFxrInstallerFile) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 13bf3b7df..9dce2263c 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -1,10 +1,16 @@ - + - - - + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets index b5b81c41e..1d09dd19a 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -26,11 +26,6 @@ $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) $(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension) - - - $(SharedFrameworkInstallerFile) - $(HostFxrInstallerFile) - $(SharedHostInstallerFile) @@ -60,22 +55,22 @@ Inputs="$(WixDownloadSentinel)" Outputs="$(WixDestinationPath)"> - - - + + + - + - + @@ -86,16 +81,16 @@ $(SdkGenerateMsiPowershellScript)" Outputs="$(SdkInstallerFile)"> - + - + - + - + - + - + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets index fa1ea1aa4..63cc98cc8 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets @@ -1,10 +1,133 @@ - - + + + + + $(PackagesDirectory) + $(IntermediateDirectory)/pkgs/$(SdkVersion) - - + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension) + + + com.microsoft.dotnet.sharedhost.component.osx.x64 + com.microsoft.dotnet.hostfxr.component.osx.x64 + com.microsoft.dotnet.sharedframework.$(SharedFrameworkNugetName).$(SharedFrameworkVersion).component.osx.x64 + com.microsoft.dotnet.dev.$(SdkVersion).component.osx.x64 + com.microsoft.dotnet.dev.$(SdkVersion).osx.x64 + + /usr/local/share/dotnet + + $(RepoRoot)/packaging/osx/clisdk + $(SdkPkgSourcesRootDirectory)/scripts + $(SdkPkgSourcesRootDirectory)/resources + + $(SdkPkgSourcesRootDirectory)/Distribution-Template + $(PkgIntermediateDirectory)/CLI-SDK-Formatted-Distribution-Template.xml + + $(PkgIntermediateDirectory)/$(SdkComponentId).pkg + $(PkgIntermediateDirectory)/$(SharedFrameworkComponentId).pkg + $(PkgIntermediateDirectory)/$(SharedHostComponentId).pkg + $(PkgIntermediateDirectory)/$(HostFxrComponentId).pkg + + + + + $(SharedFrameworkComponentId) + + + $(SharedHostComponentId) + + + $(HostFxrComponentId) + + + $(SdkComponentId) + + + $(SdkVersion) + + + $(SdkBrandName) + + + $(SharedFrameworkBrandName) + + + $(SharedHostBrandName) + + + $(HostFxrBrandName) + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets index 4e975fba0..4da8d42a2 100644 --- a/build/package/Microsoft.DotNet.Cli.Layout.targets +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -15,6 +15,27 @@ + + + + + + + + + + + + + $(LayoutDirectory)/$(ArtifactNameSdk) $(LayoutDirectory)/$(ArtifactNameSdkDebug) @@ -26,28 +47,28 @@ @(SdkLayoutInput) - @(SdkLayoutInput -> '$(SdkLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + @(SdkRelativeOutputFiles -> '$(SdkLayoutOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionSdk) $(ArtifactNameSdk) @(SdkDebugLayoutInput) - @(SdkDebugLayoutInput -> '$(SdkDebugLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(SymbolsOutputDirectory), '%(Identity)'))') + @(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionSdkDebug) $(ArtifactNameSdkDebug) @(CombinedHostHostFxrFrameworkSdkInput) - @(CombinedHostHostFxrFrameworkSdkInput -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + @(CombinedHostHostFxrFrameworkSdkRelativeOutputFiles -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk) $(ArtifactNameCombinedHostHostFxrFrameworkSdk) @(CombinedFrameworkSdkInput) - @(CombinedFrameworkSdkInput -> '$(CombinedFrameworkSdkOutputDirectory)/$([MSBuild]::MakeRelative($(OutputDirectory), '%(Identity)'))') + @(CombinedFrameworkSdkOutputFiles -> '$(CombinedFrameworkSdkOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionCombinedFrameworkSdk) $(ArtifactNameCombinedFrameworkSdk) @@ -56,7 +77,7 @@ diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index ad83caa56..deb65b3c7 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -13,39 +13,39 @@ Microsoft.DotNet.Cli.Utils - $(SdkProjectJsonVersion) + $(SdkNugetVersion) Microsoft.DotNet.Compiler.Common - $(SdkProjectJsonVersion) + $(SdkNugetVersion) Microsoft.DotNet.Files - $(SdkProjectJsonVersion) + $(SdkNugetVersion) Microsoft.DotNet.InternalAbstractions - $(DependencyModelAndInternalAbstractionsProjectJsonVersion) + $(DependencyModelAndInternalAbstractionsNugetVersion) Microsoft.DotNet.ProjectModel - $(ProjectModelProjectJsonVersion) + $(ProjectModelNugetVersion) Microsoft.DotNet.ProjectModel.Loader - $(SdkProjectJsonVersion) + $(SdkNugetVersion) Microsoft.DotNet.ProjectModel.Workspaces - $(SdkProjectJsonVersion) + $(SdkNugetVersion) Microsoft.Extensions.DependencyModel - $(DependencyModelAndInternalAbstractionsProjectJsonVersion) + $(DependencyModelAndInternalAbstractionsNugetVersion) Microsoft.Extensions.Testing.Abstractions - $(SdkProjectJsonVersion) + $(SdkNugetVersion) diff --git a/build_projects/dotnet-cli-build/ReplaceFileContents.cs b/build_projects/dotnet-cli-build/ReplaceFileContents.cs new file mode 100644 index 000000000..00401dcb5 --- /dev/null +++ b/build_projects/dotnet-cli-build/ReplaceFileContents.cs @@ -0,0 +1,79 @@ +using System; +using System.IO; +using Microsoft.Build.Utilities; +using Microsoft.Build.Framework; + +namespace Microsoft.DotNet.Cli.Build +{ + /// + /// Reads contents of an input file, and searches for each ReplacementPattern passed in. + /// When a ReplacementPattern is matched it will replace it with the string of the corresponding (by index) + /// item in ReplacementStrings. + /// + /// For example, if 2 ReplacementPatterns are passed in, 2 ReplacementStrings must also passed in and the first + /// pattern will be replaced with the first string, and the second pattern replaced with the second string. + /// + /// ReplacementPattern could easily be a regex, but it isn't needed for current use cases, so leaving this + /// as just a string that will be replaced. + /// + public class ReplaceFileContents : Task + { + [Required] + public string InputFile { get; set; } + + [Required] + public string DestinationFile { get; set; } + + [Required] + public ITaskItem[] ReplacementPatterns { get; set; } + + [Required] + public ITaskItem[] ReplacementStrings { get; set; } + + public override bool Execute() + { + if (ReplacementPatterns.Length != ReplacementStrings.Length) + { + throw new Exception($"Expected {nameof(ReplacementPatterns)} (length {ReplacementPatterns.Length}) and {nameof(ReplacementStrings)} (length {ReplacementStrings.Length}) to have the same length."); + } + + if (!File.Exists(InputFile)) + { + throw new FileNotFoundException($"Expected file {InputFile} was not found."); + } + + string inputFileText = File.ReadAllText(InputFile); + string outputFileText = ReplacePatterns(inputFileText); + + WriteOutputFile(outputFileText); + + return true; + } + + public string ReplacePatterns(string inputFileText) + { + var outText = inputFileText; + + for (int i=0; i Date: Fri, 1 Jul 2016 07:04:40 -0700 Subject: [PATCH 023/165] Everything working --- build/Microsoft.DotNet.Cli.Prepare.targets | 2 +- .../Microsoft.DotNet.Cli.Archive.targets | 15 ++++++--- ...Microsoft.DotNet.Cli.Installer.DEB.targets | 14 +++----- ...Microsoft.DotNet.Cli.Installer.PKG.targets | 33 +++++++++++-------- .../Microsoft.DotNet.Cli.Layout.targets | 12 ++++--- 5 files changed, 42 insertions(+), 34 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 163ded544..ed97b2f28 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -29,7 +29,7 @@ $(Stage0Path) $(RepoRoot)/artifacts/$(Rid) - $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/stage2/ $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages diff --git a/build/package/Microsoft.DotNet.Cli.Archive.targets b/build/package/Microsoft.DotNet.Cli.Archive.targets index 0caa18de8..f4f8b6383 100644 --- a/build/package/Microsoft.DotNet.Cli.Archive.targets +++ b/build/package/Microsoft.DotNet.Cli.Archive.targets @@ -10,18 +10,25 @@ + + + %(LayoutDefinition.OutputFiles) + $(ArchiveOutputDirectory)/%(LayoutDefinition.NameWithVersion)$(ArchiveExtension) + $(LayoutDirectory)/%(LayoutDefinition.Name) + %(LayoutDefinition.NameWithVersion) + + Inputs="%(GenerateArchivesInputsOutputs.Inputs)" + Outputs="%(GenerateArchivesInputsOutputs.Outputs)"> + InputDirectory="$(LayoutDirectory)/%(GenerateArchivesInputsOutputs.InputDirectory)" > diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 9dce2263c..13bf3b7df 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -1,16 +1,10 @@ - + - - - - - + + + diff --git a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets index 63cc98cc8..8823537d0 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets @@ -66,13 +66,25 @@ + + + + + + + + + + + + + Condition=" '$(OSName)' == 'osx' "> - + Condition=" '$(OSName)' == 'osx' "> + $(SharedHostPkgIntermediatePath);" /> @@ -128,6 +133,6 @@ SetupPkgInputsOutputs; GenerateSdkPkg; GenerateSdkProductArchive" - Condition=" '%(OSName)' == 'osx' " /> + Condition=" '$(OSName)' == 'osx' " /> diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets index 4da8d42a2..694da724c 100644 --- a/build/package/Microsoft.DotNet.Cli.Layout.targets +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -1,5 +1,7 @@ + + @@ -9,8 +11,8 @@ - - + + @@ -45,14 +47,14 @@ - + @(SdkLayoutInput) @(SdkRelativeOutputFiles -> '$(SdkLayoutOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionSdk) $(ArtifactNameSdk) - + @(SdkDebugLayoutInput) @(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionSdkDebug) @@ -77,7 +79,7 @@ From 76728be4cbd925d81f4bafd0cf148cd9083c802d Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 14:10:55 -0700 Subject: [PATCH 024/165] CompileTargets moved to MSBuild CompileTargets moved to MSBuild. Still need to work on input/outputs, refactoring of targets, specially around CompileStage and moving some of the tasks back to msbuild instead of C# code. --- build.proj | 14 +- build/Microsoft.DotNet.Cli.Compile.targets | 189 ++++++++ build/Microsoft.DotNet.Cli.Prepare.targets | 13 +- .../Microsoft.DotNet.Cli.Archive.targets | 43 ++ .../Microsoft.DotNet.Cli.Nupkg.targets | 11 + .../ChangeEntryPointLibraryName.cs | 30 ++ .../dotnet-cli-build/CleanPublishOutput.cs | 34 ++ .../dotnet-cli-build/CompileTargets.cs | 402 ------------------ .../dotnet-cli-build/CrossgenDirectory.cs | 32 ++ .../dotnet-cli-build/FixModeFlags.cs | 28 ++ .../RemoveAssetFromDepsPackages.cs | 68 +++ .../SharedFrameworkNameVersionPath.cs | 34 ++ 12 files changed, 489 insertions(+), 409 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Compile.targets create mode 100644 build/compile/Microsoft.DotNet.Cli.Archive.targets create mode 100644 build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs create mode 100644 build_projects/dotnet-cli-build/CleanPublishOutput.cs delete mode 100644 build_projects/dotnet-cli-build/CompileTargets.cs create mode 100644 build_projects/dotnet-cli-build/CrossgenDirectory.cs create mode 100644 build_projects/dotnet-cli-build/FixModeFlags.cs create mode 100644 build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs create mode 100644 build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs diff --git a/build.proj b/build.proj index 61ba87e7e..c1bd8e2af 100644 --- a/build.proj +++ b/build.proj @@ -10,10 +10,15 @@ .ps1 - .sh + .sh -NoRun --norun + + %0D + %0A + $(LF) + $(CR)$(LF) Prepare;Compile;Test;Package;Publish $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build @@ -49,12 +54,12 @@ - + - - + + @@ -66,5 +71,6 @@ + diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets new file mode 100644 index 000000000..299152f19 --- /dev/null +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + $(Stage1Directory) + $(Stage1SymbolsDirectory) + $(Stage0Path)/dotnet.exe + + + + + + + + + $(Stage2Directory) + $(Stage2SymbolsDirectory) + $(DotnetStage1) + + + + + + $(StageDirectory)/sdk/$(NugetVersion) + runtimes/any/native + $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) + $(SdkOutputDirectory)/runtimes/any/native + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(RepoRoot)/src + + .exe + + + + lib + + .dll + .dylib + .so + + dotnet$(ExeSuffix) + $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) + $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index ed97b2f28..8e5ddf2ff 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -27,9 +27,16 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) - $(BaseOutputDirectory)/stage2/ + $(BaseOutputDirectory)/tools + $(BaseOutputDirectory)/stage1 + $(BaseOutputDirectory)/stage1symbols + $(Stage1Directory)/dotnet.exe + $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/stage2symbols + $(Stage2Directory)/dotnet.exe + $(Stage2Directory) $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages @@ -197,4 +204,4 @@ ForceZipArchive="true" /> - + \ No newline at end of file diff --git a/build/compile/Microsoft.DotNet.Cli.Archive.targets b/build/compile/Microsoft.DotNet.Cli.Archive.targets new file mode 100644 index 000000000..f52d76cfc --- /dev/null +++ b/build/compile/Microsoft.DotNet.Cli.Archive.targets @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntermediateDirectory)/NuGetPackagesArchiveProject + $(IntermediateDirectory)/NuGetPackagesArchiveFolder + $(ToolsOutputDirectory)/Archiver + $(IntermediateDirectory)/nuGetPackagesArchive.lzma + $(Stage2Directory)/nuGetPackagesArchive.lzma + + + \ No newline at end of file diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index deb65b3c7..3cace9f53 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -66,4 +66,15 @@ --configuration $(Configuration) --version-suffix $(NupkgVersionSuffix)" /> + + + + + + diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs new file mode 100644 index 000000000..535427c8f --- /dev/null +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class ChangeEntryPointLibraryName : Task + { + public string DepsFile { get; set; } + + public string NewName { get; set; } + + public override bool Execute() + { + PublishMutationUtilties.ChangeEntryPointLibraryName(DepsFile, NewName); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs new file mode 100644 index 000000000..77ab0d008 --- /dev/null +++ b/build_projects/dotnet-cli-build/CleanPublishOutput.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CleanPublishOutput : Task + { + public string Path { get; set; } + + public string Name { get; set; } + + public bool DeleteRuntimeConfigJson { get; set; } + + public bool DeleteDepsJson { get; set; } + + public override bool Execute() + { + PublishMutationUtilties.CleanPublishOutput(Path, Name, DeleteRuntimeConfigJson, DeleteDepsJson); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs deleted file mode 100644 index 6ed367568..000000000 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ /dev/null @@ -1,402 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CompileTargets : Task - { - public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; - - public static readonly string[] BinariesForCoreHost = new[] - { - "csc" - }; - - public static readonly string[] ProjectsToPublish = new[] - { - "dotnet" - }; - - public static readonly string[] FilesToClean = new[] - { - "vbc.exe" - }; - - public static string HostPackagePlatformRid => HostPackageSupportedRids[ - (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) - ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" - : RuntimeEnvironment.GetRuntimeIdentifier()]; - - public static readonly Dictionary HostPackageSupportedRids = new Dictionary() - { - // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. - { "win7-x64", "win7-x64" }, - { "win7-x86", "win7-x86" }, - { "osx.10.10-x64", "osx.10.10-x64" }, - { "osx.10.11-x64", "osx.10.10-x64" }, - { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, - { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, - { "centos.7-x64", "rhel.7-x64" }, - { "rhel.7-x64", "rhel.7-x64" }, - { "rhel.7.2-x64", "rhel.7-x64" }, - { "debian.8-x64", "debian.8-x64" }, - { "fedora.23-x64", "fedora.23-x64" }, - { "opensuse.13.2-x64", "opensuse.13.2-x64" } - }; - - public const string SharedFrameworkName = "Microsoft.NETCore.App"; - - public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Compile(c).Success; - } - - [Target] - public static BuildTargetResult Compile(BuildTargetContext c) - { - PrepareTargets.Init(c); - CompileStage1(c); - CompileStage2(c); - - return c.Success(); - } - - public static BuildTargetResult CompileStage1(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage1)) - { - Utils.DeleteDirectory(Dirs.Stage1); - } - Directory.CreateDirectory(Dirs.Stage1); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage0, - rootOutputDirectory: Dirs.Stage1); - - CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); - FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); - - return result; - } - - public static BuildTargetResult CompileStage2(BuildTargetContext c) - { - var configuration = c.BuildContext.Get("Configuration"); - - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage2)) - { - Utils.DeleteDirectory(Dirs.Stage2); - } - Directory.CreateDirectory(Dirs.Stage2); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage1, - rootOutputDirectory: Dirs.Stage2, - generateNugetPackagesArchive: true); - - if (!result.Success) - { - return result; - } - - if (CurrentPlatform.IsWindows) - { - // build projects for nuget packages - var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); - Mkdirp(packagingOutputDir); - foreach (var project in PackageTargets.ProjectsToPack) - { - // Just build them, we'll pack later - var packBuildResult = DotNetCli.Stage1.Build( - "--build-base-path", - packagingOutputDir, - "--configuration", - configuration, - Path.Combine(c.BuildContext.BuildDirectory, "src", project)) - .Execute(); - - packBuildResult.EnsureSuccessful(); - } - } - - CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); - FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); - - return c.Success(); - } - - private static void CleanOutputDir(string directory) - { - foreach (var file in FilesToClean) - { - FS.RmFilesInDirRecursive(directory, file); - } - } - - private static void RemovePdbsFromDir(string directory) - { - FS.RmFilesInDirRecursive(directory, "*.pdb"); - } - - private static BuildTargetResult CompileCliSdk( - BuildTargetContext c, - DotNetCli dotnet, - string rootOutputDirectory, - bool generateNugetPackagesArchive = false) - { - var configuration = c.BuildContext.Get("Configuration"); - var buildVersion = c.BuildContext.Get("BuildVersion"); - var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); - var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); - - CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); - - FS.CleanBinObj(c, srcDir); - Rmdir(sdkOutputDirectory); - Mkdirp(sdkOutputDirectory); - - foreach (var project in ProjectsToPublish) - { - dotnet.Publish( - "--native-subdirectory", - "--output", sdkOutputDirectory, - "--configuration", configuration, - "--version-suffix", buildVersion.CommitCountString, - Path.Combine(srcDir, project)) - .Execute() - .EnsureSuccessful(); - } - - FixModeFlags(sdkOutputDirectory); - - string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); - dotnet.Publish(compilersProject, - "--output", - sdkOutputDirectory, - "--framework", - "netcoreapp1.0") - .Execute() - .EnsureSuccessful(); - - var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); - var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); - - var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); - var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); - // Corehostify binaries - foreach (var binaryToCorehostify in BinariesForCoreHost) - { - try - { - // Yes, it is .exe even on Linux. This is the managed exe we're working with - File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); - File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); - var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); - - File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); - File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); - PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); - foreach (var binaryToRemove in new string[] { "csc", "vbc" }) - { - var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); - RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); - RemoveAssetFromDepsPackages( - Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); - } - } - catch (Exception ex) - { - return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); - } - } - - // cleanup compilers project output we don't need - PublishMutationUtilties.CleanPublishOutput( - sdkOutputDirectory, - "compilers", - deleteRuntimeConfigJson: true, - deleteDepsJson: true); - - // Crossgen SDK directory - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - rootOutputDirectory, - sharedFrameworkNugetVersion); - - // Copy Host to SDK Directory - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), - overwrite: true); - - CrossgenUtil.CrossgenDirectory( - sharedFrameworkNameVersionPath, - sdkOutputDirectory); - - // Generate .version file - var version = buildVersion.NuGetVersion; - var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; - File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); - - if(generateNugetPackagesArchive) - { - GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); - } - - CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); - - return c.Success(); - } - - private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) - { - var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); - - var filesToCopy = new List(); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); - - foreach (var fileFullPath in filesToCopy) - { - var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); - var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); - - File.Copy(fileFullPath, destinationFilePath, true); - } - } - - private static void GenerateNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string sdkOutputDirectory) - { - var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); - var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); - - RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); - - CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); - } - - private static void RestoreNuGetPackagesArchive( - DotNetCli dotnet, - string nuGetPackagesArchiveProject, - string nuGetPackagesArchiveFolder) - { - Rmdir(nuGetPackagesArchiveProject); - Mkdirp(nuGetPackagesArchiveProject); - - Rmdir(nuGetPackagesArchiveFolder); - Mkdirp(nuGetPackagesArchiveFolder); - - dotnet.New() - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - - dotnet.Restore("--packages", nuGetPackagesArchiveFolder) - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - } - - private static void CompressNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string nuGetPackagesArchiveFolder, - string sdkOutputDirectory) - { - var configuration = c.BuildContext.Get("Configuration"); - var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); - var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); - var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); - - Rm(intermediateArchive); - Rm($"{intermediateArchive}.zip"); - - c.Info("Publishing Archiver"); - dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) - .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) - .Execute() - .EnsureSuccessful(); - - Cmd(archiverExe, - "-a", intermediateArchive, - nuGetPackagesArchiveFolder) - .Execute(); - - File.Copy(intermediateArchive, finalArchive); - } - - private static void RemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) - { - JToken deps; - using (var file = File.OpenText(depsFile)) - using (JsonTextReader reader = new JsonTextReader(file)) - { - deps = JObject.ReadFrom(reader); - } - - foreach (JProperty target in deps["targets"]) - { - foreach (JProperty pv in target.Value.Children()) - { - var section = pv.Value[sectionName]; - if (section != null) - { - foreach (JProperty relPath in section) - { - if (assetPath.Equals(relPath.Name)) - { - relPath.Remove(); - break; - } - } - } - } - } - using (var file = File.CreateText(depsFile)) - using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) - { - deps.WriteTo(writer); - } - } - - private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) - { - CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); - } - } -} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs new file mode 100644 index 000000000..5010295e3 --- /dev/null +++ b/build_projects/dotnet-cli-build/CrossgenDirectory.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CrossgenDirectory : Task + { + private static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + public string SharedFrameworkNameVersionPath { get; set; } + + public string SdkOutputDirectory { get; set; } + + public override bool Execute() + { + CrossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs new file mode 100644 index 000000000..225a82a6e --- /dev/null +++ b/build_projects/dotnet-cli-build/FixModeFlags.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class FixModeFlags : Task + { + public string Dir { get; set; } + + public override bool Execute() + { + FS.FixModeFlags(Dir); + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs new file mode 100644 index 000000000..9d37583fd --- /dev/null +++ b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class RemoveAssetFromDepsPackages : Task + { + public string DepsFile { get; set; } + + public string SectionName { get; set; } + + public string AssetPath { get; set; } + + public override bool Execute() + { + DoRemoveAssetFromDepsPackages(DepsFile, SectionName, AssetPath); + + return true; + } + + private static void DoRemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) + { + JToken deps; + using (var file = File.OpenText(depsFile)) + using (JsonTextReader reader = new JsonTextReader(file)) + { + deps = JObject.ReadFrom(reader); + } + + foreach (JProperty target in deps["targets"]) + { + foreach (JProperty pv in target.Value.Children()) + { + var section = pv.Value[sectionName]; + if (section != null) + { + foreach (JProperty relPath in section) + { + if (assetPath.Equals(relPath.Name)) + { + relPath.Remove(); + break; + } + } + } + } + } + using (var file = File.CreateText(depsFile)) + using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) + { + deps.WriteTo(writer); + } + } + } +} diff --git a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs new file mode 100644 index 000000000..59bb39e49 --- /dev/null +++ b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class SharedFrameworkNameVersionPath : Task + { + public string RootOutputDirectory { get; set; } + + [Output] + public string OutputSharedFrameworkNameVersionPath { get; set; } + + public override bool Execute() + { + var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + OutputSharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( + RootOutputDirectory, + sharedFrameworkNugetVersion); + + return true; + } + } +} From b91160ef0641782865fa2a25d502d20a2977de47 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 14:01:16 -0700 Subject: [PATCH 025/165] Fixing some paths, moving the compile.targets to the end of build.proj. --- build.proj | 1 - build/Microsoft.DotNet.Cli.Compile.targets | 24 +++++++++++++------ .../Microsoft.DotNet.Cli.Archive.targets | 6 +++++ .../Microsoft.DotNet.Cli.Nupkg.targets | 3 ++- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/build.proj b/build.proj index c1bd8e2af..7259a73cc 100644 --- a/build.proj +++ b/build.proj @@ -1,7 +1,6 @@ - - - @@ -138,46 +160,13 @@ - - - - - $(RepoRoot)/src - - .exe - - - - lib - - .dll - .dylib - .so - - dotnet$(ExeSuffix) - $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) - $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) - - - - - + + - - - + - - - - - - - - @@ -188,12 +177,4 @@ - - - - - - - - \ No newline at end of file diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 8e5ddf2ff..98abda5b3 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -27,7 +27,7 @@ $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux $(Stage0Path) - + $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/tools $(BaseOutputDirectory)/stage1 From 514a17894c86c3ac0af8606e1b04e5ad5a5bf762 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 29 Jun 2016 17:54:42 -0700 Subject: [PATCH 027/165] Cleanup after the rebase --- build.proj | 1 - 1 file changed, 1 deletion(-) diff --git a/build.proj b/build.proj index 3e374fae6..868aed26f 100644 --- a/build.proj +++ b/build.proj @@ -53,7 +53,6 @@ - From b8ccb0d1aeca0446119d624888c959a2b1b0b93e Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 30 Jun 2016 10:04:39 -0700 Subject: [PATCH 028/165] Adding CompileTargets.cs back. I got ahead of myself by removing it. We haven't switched our official builds to msbuild yet. --- .../dotnet-cli-build/CompileTargets.cs | 402 ++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 build_projects/dotnet-cli-build/CompileTargets.cs diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs new file mode 100644 index 000000000..bd635ed90 --- /dev/null +++ b/build_projects/dotnet-cli-build/CompileTargets.cs @@ -0,0 +1,402 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; +using static Microsoft.DotNet.Cli.Build.FS; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CompileTargets : Task + { + public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; + + public static readonly string[] BinariesForCoreHost = new[] + { + "csc" + }; + + public static readonly string[] ProjectsToPublish = new[] + { + "dotnet" + }; + + public static readonly string[] FilesToClean = new[] + { + "vbc.exe" + }; + + public static string HostPackagePlatformRid => HostPackageSupportedRids[ + (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) + ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" + : RuntimeEnvironment.GetRuntimeIdentifier()]; + + public static readonly Dictionary HostPackageSupportedRids = new Dictionary() + { + // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. + { "win7-x64", "win7-x64" }, + { "win7-x86", "win7-x86" }, + { "osx.10.10-x64", "osx.10.10-x64" }, + { "osx.10.11-x64", "osx.10.10-x64" }, + { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, + { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, + { "centos.7-x64", "rhel.7-x64" }, + { "rhel.7-x64", "rhel.7-x64" }, + { "rhel.7.2-x64", "rhel.7-x64" }, + { "debian.8-x64", "debian.8-x64" }, + { "fedora.23-x64", "fedora.23-x64" }, + { "opensuse.13.2-x64", "opensuse.13.2-x64" } + }; + + public const string SharedFrameworkName = "Microsoft.NETCore.App"; + + public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Compile(c).Success; + } + + [Target] + public static BuildTargetResult Compile(BuildTargetContext c) + { + PrepareTargets.Init(c); + CompileStage1(c); + CompileStage2(c); + + return c.Success(); + } + + public static BuildTargetResult CompileStage1(BuildTargetContext c) + { + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage1)) + { + Utils.DeleteDirectory(Dirs.Stage1); + } + Directory.CreateDirectory(Dirs.Stage1); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage0, + rootOutputDirectory: Dirs.Stage1); + + CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); + FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); + + return result; + } + + public static BuildTargetResult CompileStage2(BuildTargetContext c) + { + var configuration = c.BuildContext.Get("Configuration"); + + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage2)) + { + Utils.DeleteDirectory(Dirs.Stage2); + } + Directory.CreateDirectory(Dirs.Stage2); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage1, + rootOutputDirectory: Dirs.Stage2, + generateNugetPackagesArchive: true); + + if (!result.Success) + { + return result; + } + + if (CurrentPlatform.IsWindows) + { + // build projects for nuget packages + var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); + Mkdirp(packagingOutputDir); + foreach (var project in PackageTargets.ProjectsToPack) + { + // Just build them, we'll pack later + var packBuildResult = DotNetCli.Stage1.Build( + "--build-base-path", + packagingOutputDir, + "--configuration", + configuration, + Path.Combine(c.BuildContext.BuildDirectory, "src", project)) + .Execute(); + + packBuildResult.EnsureSuccessful(); + } + } + + CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); + FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); + + return c.Success(); + } + + private static void CleanOutputDir(string directory) + { + foreach (var file in FilesToClean) + { + FS.RmFilesInDirRecursive(directory, file); + } + } + + private static void RemovePdbsFromDir(string directory) + { + FS.RmFilesInDirRecursive(directory, "*.pdb"); + } + + private static BuildTargetResult CompileCliSdk( + BuildTargetContext c, + DotNetCli dotnet, + string rootOutputDirectory, + bool generateNugetPackagesArchive = false) + { + var configuration = c.BuildContext.Get("Configuration"); + var buildVersion = c.BuildContext.Get("BuildVersion"); + var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); + var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); + + CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); + + FS.CleanBinObj(c, srcDir); + Rmdir(sdkOutputDirectory); + Mkdirp(sdkOutputDirectory); + + foreach (var project in ProjectsToPublish) + { + dotnet.Publish( + "--native-subdirectory", + "--output", sdkOutputDirectory, + "--configuration", configuration, + "--version-suffix", buildVersion.CommitCountString, + Path.Combine(srcDir, project)) + .Execute() + .EnsureSuccessful(); + } + + FixModeFlags(sdkOutputDirectory); + + string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); + dotnet.Publish(compilersProject, + "--output", + sdkOutputDirectory, + "--framework", + "netcoreapp1.0") + .Execute() + .EnsureSuccessful(); + + var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); + var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); + + var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); + var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); + // Corehostify binaries + foreach (var binaryToCorehostify in BinariesForCoreHost) + { + try + { + // Yes, it is .exe even on Linux. This is the managed exe we're working with + File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); + File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); + var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); + + File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); + File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); + PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); + foreach (var binaryToRemove in new string[] { "csc", "vbc" }) + { + var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); + RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); + RemoveAssetFromDepsPackages( + Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); + } + } + catch (Exception ex) + { + return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); + } + } + + // cleanup compilers project output we don't need + PublishMutationUtilties.CleanPublishOutput( + sdkOutputDirectory, + "compilers", + deleteRuntimeConfigJson: true, + deleteDepsJson: true); + + // Crossgen SDK directory + var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( + rootOutputDirectory, + sharedFrameworkNugetVersion); + + // Copy Host to SDK Directory + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), + Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), + overwrite: true); + + CrossgenUtil.CrossgenDirectory( + sharedFrameworkNameVersionPath, + sdkOutputDirectory); + + // Generate .version file + var version = buildVersion.NuGetVersion; + var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; + File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); + + if(generateNugetPackagesArchive) + { + GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); + } + + CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); + + return c.Success(); + } + + private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) + { + var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); + + var filesToCopy = new List(); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); + + foreach (var fileFullPath in filesToCopy) + { + var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); + var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); + + File.Copy(fileFullPath, destinationFilePath, true); + } + } + + private static void GenerateNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string sdkOutputDirectory) + { + var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); + var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); + + RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); + + CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); + } + + private static void RestoreNuGetPackagesArchive( + DotNetCli dotnet, + string nuGetPackagesArchiveProject, + string nuGetPackagesArchiveFolder) + { + Rmdir(nuGetPackagesArchiveProject); + Mkdirp(nuGetPackagesArchiveProject); + + Rmdir(nuGetPackagesArchiveFolder); + Mkdirp(nuGetPackagesArchiveFolder); + + dotnet.New() + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + + dotnet.Restore("--packages", nuGetPackagesArchiveFolder) + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + } + + private static void CompressNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string nuGetPackagesArchiveFolder, + string sdkOutputDirectory) + { + var configuration = c.BuildContext.Get("Configuration"); + var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); + var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); + var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); + + Rm(intermediateArchive); + Rm($"{intermediateArchive}.zip"); + + c.Info("Publishing Archiver"); + dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) + .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) + .Execute() + .EnsureSuccessful(); + + Cmd(archiverExe, + "-a", intermediateArchive, + nuGetPackagesArchiveFolder) + .Execute(); + + File.Copy(intermediateArchive, finalArchive); + } + + private static void RemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) + { + JToken deps; + using (var file = File.OpenText(depsFile)) + using (JsonTextReader reader = new JsonTextReader(file)) + { + deps = JObject.ReadFrom(reader); + } + + foreach (JProperty target in deps["targets"]) + { + foreach (JProperty pv in target.Value.Children()) + { + var section = pv.Value[sectionName]; + if (section != null) + { + foreach (JProperty relPath in section) + { + if (assetPath.Equals(relPath.Name)) + { + relPath.Remove(); + break; + } + } + } + } + } + using (var file = File.CreateText(depsFile)) + using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) + { + deps.WriteTo(writer); + } + } + + private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) + { + CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); + } + } +} \ No newline at end of file From 52e9475be8e9dd9d6715a1f0787da3faa1137f8a Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 30 Jun 2016 10:39:39 -0700 Subject: [PATCH 029/165] Fixed tabs to 2 spaces instead of 4 for our targets files --- build/Microsoft.DotNet.Cli.Compile.targets | 282 +++++++++--------- .../Microsoft.DotNet.Cli.Archive.targets | 48 +-- 2 files changed, 165 insertions(+), 165 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index c85690d8b..c421443e5 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -1,180 +1,180 @@ - + - - - - - - + + + + + + - - - - - - - + + - - @(CompileStageInputs) - $(Stage1Directory) - $(Stage1SymbolsDirectory) - $(Stage0Path)/dotnet.exe - - - @(CompileStageInputs) - $(Stage2Directory) - $(Stage2SymbolsDirectory) - $(DotnetStage1) - - - + + + + - - - $(RepoRoot)/src + + @(CompileStageInputs) + $(Stage1Directory) + $(Stage1SymbolsDirectory) + $(Stage0Path)/dotnet.exe + + + @(CompileStageInputs) + $(Stage2Directory) + $(Stage2SymbolsDirectory) + $(DotnetStage1) + + + - .exe - + + + $(RepoRoot)/src - - lib + .exe + - .dll - .dylib - .so + + lib - dotnet$(ExeSuffix) - $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) - $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) + .dll + .dylib + .so - %(Stage.StageDirectory) - %(Stage.StageSymbolsDirectory) - $(StageDirectory)/sdk/$(NugetVersion) - runtimes/any/native - $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) - $(SdkOutputDirectory)/runtimes/any/native - + dotnet$(ExeSuffix) + $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) + $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) - - - - + %(Stage.StageDirectory) + %(Stage.StageSymbolsDirectory) + $(StageDirectory)/sdk/$(NugetVersion) + runtimes/any/native + $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) + $(SdkOutputDirectory)/runtimes/any/native + - + + + + - - + - - - - - - + + - - - + + + + + + - + + + - - - + - - - - - + + + - - + + + + + - + + - + - + - + - + - + - - + - - + + - - + + - + + - + - + - - + - + + - - - + - + + + - - - - + - + + + + - - + + + + \ No newline at end of file diff --git a/build/compile/Microsoft.DotNet.Cli.Archive.targets b/build/compile/Microsoft.DotNet.Cli.Archive.targets index ce8bb9240..08039528b 100644 --- a/build/compile/Microsoft.DotNet.Cli.Archive.targets +++ b/build/compile/Microsoft.DotNet.Cli.Archive.targets @@ -4,46 +4,46 @@ CompressNuGetPackagesArchive" Inputs="$(Stage2Directory)/sdk/**/dotnet.dll" Outputs="$(FinalArchive)"> - + - - - - + + + + - - - + + + - - + + - + - - + + - + - + - - $(IntermediateDirectory)/NuGetPackagesArchiveProject - $(IntermediateDirectory)/NuGetPackagesArchiveFolder - $(ToolsOutputDirectory)/Archiver - $(IntermediateDirectory)/nuGetPackagesArchive.lzma - $(Stage2Directory)/nuGetPackagesArchive.lzma - + + $(IntermediateDirectory)/NuGetPackagesArchiveProject + $(IntermediateDirectory)/NuGetPackagesArchiveFolder + $(ToolsOutputDirectory)/Archiver + $(IntermediateDirectory)/nuGetPackagesArchive.lzma + $(Stage2Directory)/nuGetPackagesArchive.lzma + \ No newline at end of file From 9135be75f4cb471777f79f0c57ecd3ecc3161547 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 30 Jun 2016 14:17:47 -0700 Subject: [PATCH 030/165] Addressing code review comments and making incremental build work. --- build.proj | 5 - build/Microsoft.DotNet.Cli.Compile.targets | 46 +- build/Microsoft.DotNet.Cli.Prepare.targets | 6 +- ... Microsoft.DotNet.Cli.LzmaArchive.targets} | 17 +- .../Microsoft.DotNet.Cli.Layout.targets | 6 +- .../ChangeEntryPointLibraryName.cs | 2 + .../dotnet-cli-build/CleanPublishOutput.cs | 4 + .../dotnet-cli-build/CompileTargets.cs | 775 +++++++++--------- .../dotnet-cli-build/CrossgenDirectory.cs | 12 +- .../dotnet-cli-build/FixModeFlags.cs | 1 + .../RemoveAssetFromDepsPackages.cs | 5 +- .../SharedFrameworkNameVersionPath.cs | 34 - tools/Archiver/project.json | 13 + tools/MultiProjectValidator/project.json | 13 + 14 files changed, 458 insertions(+), 481 deletions(-) rename build/compile/{Microsoft.DotNet.Cli.Archive.targets => Microsoft.DotNet.Cli.LzmaArchive.targets} (74%) delete mode 100644 build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs diff --git a/build.proj b/build.proj index 868aed26f..fcfaa460e 100644 --- a/build.proj +++ b/build.proj @@ -14,11 +14,6 @@ -NoRun --norun - %0D - %0A - $(LF) - $(CR)$(LF) - Prepare;Compile;Test;Package;Publish $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index c421443e5..cfd97e5be 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -1,15 +1,13 @@ - + - - + + $(RepoRoot)/src + + - - + + @(CompileStageInputs) @@ -33,15 +35,13 @@ $(Stage2SymbolsDirectory) $(DotnetStage1) - + - - $(RepoRoot)/src - + Inputs="%(Stage.Inputs)" + Outputs="%(StageDirectory)/sdk/$(SdkVersion)/dotnet.dll"> + .exe @@ -58,10 +58,16 @@ %(Stage.StageDirectory) %(Stage.StageSymbolsDirectory) - $(StageDirectory)/sdk/$(NugetVersion) + $(StageDirectory)/sdk/$(SdkVersion) runtimes/any/native $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) $(SdkOutputDirectory)/runtimes/any/native + + Microsoft.NETCore.App + 1.0.0 + + $(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkNuGetVersion) + @@ -69,7 +75,7 @@ - + @@ -81,10 +87,6 @@ - - - - @@ -150,12 +152,14 @@ - - + diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 98abda5b3..bb8441ae6 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -39,8 +39,7 @@ $(Stage2Directory) $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate - $(BaseOutputDirectory)/packages - $(BaseOutputDirectory)/stage2symbols + $(BaseOutputDirectory)/packages $(IntermediateDirectory)/sharedFrameworkPublish @@ -68,6 +67,9 @@ $(VersionMajor).$(VersionMinor).$(VersionPatch)-rc4-$(CommitCount) $(VersionMajor).$(VersionMinor).1-beta-$(CommitCount) + 1.0.2 + 1.0.2 + .zip .tar.gz diff --git a/build/compile/Microsoft.DotNet.Cli.Archive.targets b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets similarity index 74% rename from build/compile/Microsoft.DotNet.Cli.Archive.targets rename to build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets index 08039528b..531cb000b 100644 --- a/build/compile/Microsoft.DotNet.Cli.Archive.targets +++ b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets @@ -1,14 +1,8 @@ - + - - - - @@ -21,10 +15,7 @@ - - @@ -43,7 +34,7 @@ $(IntermediateDirectory)/NuGetPackagesArchiveFolder $(ToolsOutputDirectory)/Archiver $(IntermediateDirectory)/nuGetPackagesArchive.lzma - $(Stage2Directory)/nuGetPackagesArchive.lzma + $(Stage2Directory)/sdk/$(SdkVersion)/nuGetPackagesArchive.lzma \ No newline at end of file diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets index 694da724c..4c6036a4d 100644 --- a/build/package/Microsoft.DotNet.Cli.Layout.targets +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -11,7 +11,7 @@ - + @@ -56,7 +56,11 @@ @(SdkDebugLayoutInput) +<<<<<<< 52e9475be8e9dd9d6715a1f0787da3faa1137f8a @(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)') +======= + @(SdkDebugLayoutInput -> '$(SdkDebugLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(Stage2SymbolsDirectory), '%(Identity)'))') +>>>>>>> Addressing code review comments and making incremental build work. $(ArtifactNameWithVersionSdkDebug) $(ArtifactNameSdkDebug) diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs index 535427c8f..d309f8856 100644 --- a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -16,8 +16,10 @@ namespace Microsoft.DotNet.Cli.Build { public class ChangeEntryPointLibraryName : Task { + [Required] public string DepsFile { get; set; } + [Required] public string NewName { get; set; } public override bool Execute() diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs index 77ab0d008..02528b749 100644 --- a/build_projects/dotnet-cli-build/CleanPublishOutput.cs +++ b/build_projects/dotnet-cli-build/CleanPublishOutput.cs @@ -16,12 +16,16 @@ namespace Microsoft.DotNet.Cli.Build { public class CleanPublishOutput : Task { + [Required] public string Path { get; set; } + [Required] public string Name { get; set; } + [Required] public bool DeleteRuntimeConfigJson { get; set; } + [Required] public bool DeleteDepsJson { get; set; } public override bool Execute() diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs index bd635ed90..3d0c84c87 100644 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ b/build_projects/dotnet-cli-build/CompileTargets.cs @@ -1,402 +1,373 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CompileTargets : Task - { - public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; - - public static readonly string[] BinariesForCoreHost = new[] - { - "csc" - }; - - public static readonly string[] ProjectsToPublish = new[] - { - "dotnet" - }; - - public static readonly string[] FilesToClean = new[] - { - "vbc.exe" - }; - - public static string HostPackagePlatformRid => HostPackageSupportedRids[ - (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) - ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" - : RuntimeEnvironment.GetRuntimeIdentifier()]; - - public static readonly Dictionary HostPackageSupportedRids = new Dictionary() - { - // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. - { "win7-x64", "win7-x64" }, - { "win7-x86", "win7-x86" }, - { "osx.10.10-x64", "osx.10.10-x64" }, - { "osx.10.11-x64", "osx.10.10-x64" }, - { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, - { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, - { "centos.7-x64", "rhel.7-x64" }, - { "rhel.7-x64", "rhel.7-x64" }, - { "rhel.7.2-x64", "rhel.7-x64" }, - { "debian.8-x64", "debian.8-x64" }, - { "fedora.23-x64", "fedora.23-x64" }, - { "opensuse.13.2-x64", "opensuse.13.2-x64" } - }; - - public const string SharedFrameworkName = "Microsoft.NETCore.App"; - - public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Compile(c).Success; - } - - [Target] - public static BuildTargetResult Compile(BuildTargetContext c) - { - PrepareTargets.Init(c); - CompileStage1(c); - CompileStage2(c); - - return c.Success(); - } - - public static BuildTargetResult CompileStage1(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage1)) - { - Utils.DeleteDirectory(Dirs.Stage1); - } - Directory.CreateDirectory(Dirs.Stage1); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage0, - rootOutputDirectory: Dirs.Stage1); - - CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); - FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); - - return result; - } - - public static BuildTargetResult CompileStage2(BuildTargetContext c) - { - var configuration = c.BuildContext.Get("Configuration"); - - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage2)) - { - Utils.DeleteDirectory(Dirs.Stage2); - } - Directory.CreateDirectory(Dirs.Stage2); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage1, - rootOutputDirectory: Dirs.Stage2, - generateNugetPackagesArchive: true); - - if (!result.Success) - { - return result; - } - - if (CurrentPlatform.IsWindows) - { - // build projects for nuget packages - var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); - Mkdirp(packagingOutputDir); - foreach (var project in PackageTargets.ProjectsToPack) - { - // Just build them, we'll pack later - var packBuildResult = DotNetCli.Stage1.Build( - "--build-base-path", - packagingOutputDir, - "--configuration", - configuration, - Path.Combine(c.BuildContext.BuildDirectory, "src", project)) - .Execute(); - - packBuildResult.EnsureSuccessful(); - } - } - - CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); - FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); - - return c.Success(); - } - - private static void CleanOutputDir(string directory) - { - foreach (var file in FilesToClean) - { - FS.RmFilesInDirRecursive(directory, file); - } - } - - private static void RemovePdbsFromDir(string directory) - { - FS.RmFilesInDirRecursive(directory, "*.pdb"); - } - - private static BuildTargetResult CompileCliSdk( - BuildTargetContext c, - DotNetCli dotnet, - string rootOutputDirectory, - bool generateNugetPackagesArchive = false) - { - var configuration = c.BuildContext.Get("Configuration"); - var buildVersion = c.BuildContext.Get("BuildVersion"); - var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); - var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); - - CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); - - FS.CleanBinObj(c, srcDir); - Rmdir(sdkOutputDirectory); - Mkdirp(sdkOutputDirectory); - - foreach (var project in ProjectsToPublish) - { - dotnet.Publish( - "--native-subdirectory", - "--output", sdkOutputDirectory, - "--configuration", configuration, - "--version-suffix", buildVersion.CommitCountString, - Path.Combine(srcDir, project)) - .Execute() - .EnsureSuccessful(); - } - - FixModeFlags(sdkOutputDirectory); - - string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); - dotnet.Publish(compilersProject, - "--output", - sdkOutputDirectory, - "--framework", - "netcoreapp1.0") - .Execute() - .EnsureSuccessful(); - - var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); - var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); - - var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); - var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); - // Corehostify binaries - foreach (var binaryToCorehostify in BinariesForCoreHost) - { - try - { - // Yes, it is .exe even on Linux. This is the managed exe we're working with - File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); - File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); - var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); - - File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); - File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); - PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); - foreach (var binaryToRemove in new string[] { "csc", "vbc" }) - { - var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); - RemoveAssetFromDepsPackages(binaryToCoreHostifyDeps, "runtimeTargets", assetPath); - RemoveAssetFromDepsPackages( - Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), "runtimeTargets", assetPath); - } - } - catch (Exception ex) - { - return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); - } - } - - // cleanup compilers project output we don't need - PublishMutationUtilties.CleanPublishOutput( - sdkOutputDirectory, - "compilers", - deleteRuntimeConfigJson: true, - deleteDepsJson: true); - - // Crossgen SDK directory - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - rootOutputDirectory, - sharedFrameworkNugetVersion); - - // Copy Host to SDK Directory - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), - overwrite: true); - - CrossgenUtil.CrossgenDirectory( - sharedFrameworkNameVersionPath, - sdkOutputDirectory); - - // Generate .version file - var version = buildVersion.NuGetVersion; - var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; - File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); - - if(generateNugetPackagesArchive) - { - GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); - } - - CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); - - return c.Success(); - } - - private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) - { - var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); - - var filesToCopy = new List(); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); - - foreach (var fileFullPath in filesToCopy) - { - var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); - var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); - - File.Copy(fileFullPath, destinationFilePath, true); - } - } - - private static void GenerateNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string sdkOutputDirectory) - { - var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); - var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); - - RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); - - CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); - } - - private static void RestoreNuGetPackagesArchive( - DotNetCli dotnet, - string nuGetPackagesArchiveProject, - string nuGetPackagesArchiveFolder) - { - Rmdir(nuGetPackagesArchiveProject); - Mkdirp(nuGetPackagesArchiveProject); - - Rmdir(nuGetPackagesArchiveFolder); - Mkdirp(nuGetPackagesArchiveFolder); - - dotnet.New() - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - - dotnet.Restore("--packages", nuGetPackagesArchiveFolder) - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - } - - private static void CompressNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string nuGetPackagesArchiveFolder, - string sdkOutputDirectory) - { - var configuration = c.BuildContext.Get("Configuration"); - var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); - var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); - var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); - - Rm(intermediateArchive); - Rm($"{intermediateArchive}.zip"); - - c.Info("Publishing Archiver"); - dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) - .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) - .Execute() - .EnsureSuccessful(); - - Cmd(archiverExe, - "-a", intermediateArchive, - nuGetPackagesArchiveFolder) - .Execute(); - - File.Copy(intermediateArchive, finalArchive); - } - - private static void RemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) - { - JToken deps; - using (var file = File.OpenText(depsFile)) - using (JsonTextReader reader = new JsonTextReader(file)) - { - deps = JObject.ReadFrom(reader); - } - - foreach (JProperty target in deps["targets"]) - { - foreach (JProperty pv in target.Value.Children()) - { - var section = pv.Value[sectionName]; - if (section != null) - { - foreach (JProperty relPath in section) - { - if (assetPath.Equals(relPath.Name)) - { - relPath.Remove(); - break; - } - } - } - } - } - using (var file = File.CreateText(depsFile)) - using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented }) - { - deps.WriteTo(writer); - } - } - - private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) - { - CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); - } - } -} \ No newline at end of file +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; +using static Microsoft.DotNet.Cli.Build.FS; + +namespace Microsoft.DotNet.Cli.Build +{ + public class CompileTargets : Task + { + public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; + + public static readonly string[] BinariesForCoreHost = new[] + { + "csc" + }; + + public static readonly string[] ProjectsToPublish = new[] + { + "dotnet" + }; + + public static readonly string[] FilesToClean = new[] + { + "vbc.exe" + }; + + public static string HostPackagePlatformRid => HostPackageSupportedRids[ + (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) + ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" + : RuntimeEnvironment.GetRuntimeIdentifier()]; + + public static readonly Dictionary HostPackageSupportedRids = new Dictionary() + { + // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. + { "win7-x64", "win7-x64" }, + { "win7-x86", "win7-x86" }, + { "osx.10.10-x64", "osx.10.10-x64" }, + { "osx.10.11-x64", "osx.10.10-x64" }, + { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, + { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, + { "centos.7-x64", "rhel.7-x64" }, + { "rhel.7-x64", "rhel.7-x64" }, + { "rhel.7.2-x64", "rhel.7-x64" }, + { "debian.8-x64", "debian.8-x64" }, + { "fedora.23-x64", "fedora.23-x64" }, + { "opensuse.13.2-x64", "opensuse.13.2-x64" } + }; + + public const string SharedFrameworkName = "Microsoft.NETCore.App"; + + public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + public override bool Execute() + { + BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); + BuildTargetContext c = new BuildTargetContext(context, null, null); + + return Compile(c).Success; + } + + [Target] + public static BuildTargetResult Compile(BuildTargetContext c) + { + PrepareTargets.Init(c); + CompileStage1(c); + CompileStage2(c); + + return c.Success(); + } + + public static BuildTargetResult CompileStage1(BuildTargetContext c) + { + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage1)) + { + Utils.DeleteDirectory(Dirs.Stage1); + } + Directory.CreateDirectory(Dirs.Stage1); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage0, + rootOutputDirectory: Dirs.Stage1); + + CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); + FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); + + return result; + } + + public static BuildTargetResult CompileStage2(BuildTargetContext c) + { + var configuration = c.BuildContext.Get("Configuration"); + + CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); + + if (Directory.Exists(Dirs.Stage2)) + { + Utils.DeleteDirectory(Dirs.Stage2); + } + Directory.CreateDirectory(Dirs.Stage2); + + var result = CompileCliSdk(c, + dotnet: DotNetCli.Stage1, + rootOutputDirectory: Dirs.Stage2, + generateNugetPackagesArchive: true); + + if (!result.Success) + { + return result; + } + + if (CurrentPlatform.IsWindows) + { + // build projects for nuget packages + var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); + Mkdirp(packagingOutputDir); + foreach (var project in PackageTargets.ProjectsToPack) + { + // Just build them, we'll pack later + var packBuildResult = DotNetCli.Stage1.Build( + "--build-base-path", + packagingOutputDir, + "--configuration", + configuration, + Path.Combine(c.BuildContext.BuildDirectory, "src", project)) + .Execute(); + + packBuildResult.EnsureSuccessful(); + } + } + + CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); + FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); + + RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); + + return c.Success(); + } + + private static void CleanOutputDir(string directory) + { + foreach (var file in FilesToClean) + { + FS.RmFilesInDirRecursive(directory, file); + } + } + + private static void RemovePdbsFromDir(string directory) + { + FS.RmFilesInDirRecursive(directory, "*.pdb"); + } + + private static BuildTargetResult CompileCliSdk( + BuildTargetContext c, + DotNetCli dotnet, + string rootOutputDirectory, + bool generateNugetPackagesArchive = false) + { + var configuration = c.BuildContext.Get("Configuration"); + var buildVersion = c.BuildContext.Get("BuildVersion"); + var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); + var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); + + CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); + + FS.CleanBinObj(c, srcDir); + Rmdir(sdkOutputDirectory); + Mkdirp(sdkOutputDirectory); + + foreach (var project in ProjectsToPublish) + { + dotnet.Publish( + "--native-subdirectory", + "--output", sdkOutputDirectory, + "--configuration", configuration, + "--version-suffix", buildVersion.CommitCountString, + Path.Combine(srcDir, project)) + .Execute() + .EnsureSuccessful(); + } + + FixModeFlags(sdkOutputDirectory); + + string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); + dotnet.Publish(compilersProject, + "--output", + sdkOutputDirectory, + "--framework", + "netcoreapp1.0") + .Execute() + .EnsureSuccessful(); + + var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); + var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); + + var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); + var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); + // Corehostify binaries + foreach (var binaryToCorehostify in BinariesForCoreHost) + { + try + { + // Yes, it is .exe even on Linux. This is the managed exe we're working with + File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); + File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); + var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); + + File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); + File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); + PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); + foreach (var binaryToRemove in new string[] { "csc", "vbc" }) + { + var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); + RemoveAssetFromDepsPackages.DoRemoveAssetFromDepsPackages( + binaryToCoreHostifyDeps, + "runtimeTargets", + assetPath); + RemoveAssetFromDepsPackages.DoRemoveAssetFromDepsPackages( + Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), + "runtimeTargets", + assetPath); + } + } + catch (Exception ex) + { + return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); + } + } + + // cleanup compilers project output we don't need + PublishMutationUtilties.CleanPublishOutput( + sdkOutputDirectory, + "compilers", + deleteRuntimeConfigJson: true, + deleteDepsJson: true); + + // Crossgen SDK directory + var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; + var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( + rootOutputDirectory, + sharedFrameworkNugetVersion); + + // Copy Host to SDK Directory + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), + Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), + overwrite: true); + File.Copy( + Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), + Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), + overwrite: true); + + CrossgenUtil.CrossgenDirectory( + sharedFrameworkNameVersionPath, + sdkOutputDirectory); + + // Generate .version file + var version = buildVersion.NuGetVersion; + var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; + File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); + + if(generateNugetPackagesArchive) + { + GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); + } + + CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); + + return c.Success(); + } + + private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) + { + var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); + + var filesToCopy = new List(); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); + filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); + + foreach (var fileFullPath in filesToCopy) + { + var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); + var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); + + File.Copy(fileFullPath, destinationFilePath, true); + } + } + + private static void GenerateNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string sdkOutputDirectory) + { + var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); + var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); + + RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); + + CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); + } + + private static void RestoreNuGetPackagesArchive( + DotNetCli dotnet, + string nuGetPackagesArchiveProject, + string nuGetPackagesArchiveFolder) + { + Rmdir(nuGetPackagesArchiveProject); + Mkdirp(nuGetPackagesArchiveProject); + + Rmdir(nuGetPackagesArchiveFolder); + Mkdirp(nuGetPackagesArchiveFolder); + + dotnet.New() + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + + dotnet.Restore("--packages", nuGetPackagesArchiveFolder) + .WorkingDirectory(nuGetPackagesArchiveProject) + .Execute() + .EnsureSuccessful(); + } + + private static void CompressNuGetPackagesArchive( + BuildTargetContext c, + DotNetCli dotnet, + string nuGetPackagesArchiveFolder, + string sdkOutputDirectory) + { + var configuration = c.BuildContext.Get("Configuration"); + var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); + var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); + var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); + + Rm(intermediateArchive); + Rm($"{intermediateArchive}.zip"); + + c.Info("Publishing Archiver"); + dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) + .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) + .Execute() + .EnsureSuccessful(); + + Cmd(archiverExe, + "-a", intermediateArchive, + nuGetPackagesArchiveFolder) + .Execute(); + + File.Copy(intermediateArchive, finalArchive); + } + + private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) + { + CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); + } + } +} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs index 5010295e3..f38baeb8d 100644 --- a/build_projects/dotnet-cli-build/CrossgenDirectory.cs +++ b/build_projects/dotnet-cli-build/CrossgenDirectory.cs @@ -16,15 +16,23 @@ namespace Microsoft.DotNet.Cli.Build { public class CrossgenDirectory : Task { - private static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + [Required] + public string CoreCLRVersion { get; set; } + [Required] + public string JitVersion { get; set; } + + [Required] public string SharedFrameworkNameVersionPath { get; set; } + [Required] public string SdkOutputDirectory { get; set; } public override bool Execute() { - CrossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); + var crossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); + + crossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); return true; } diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs index 225a82a6e..ab2961942 100644 --- a/build_projects/dotnet-cli-build/FixModeFlags.cs +++ b/build_projects/dotnet-cli-build/FixModeFlags.cs @@ -16,6 +16,7 @@ namespace Microsoft.DotNet.Cli.Build { public class FixModeFlags : Task { + [Required] public string Dir { get; set; } public override bool Execute() diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs index 9d37583fd..e3ea94620 100644 --- a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs +++ b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs @@ -18,10 +18,13 @@ namespace Microsoft.DotNet.Cli.Build { public class RemoveAssetFromDepsPackages : Task { + [Required] public string DepsFile { get; set; } + [Required] public string SectionName { get; set; } + [Required] public string AssetPath { get; set; } public override bool Execute() @@ -31,7 +34,7 @@ namespace Microsoft.DotNet.Cli.Build return true; } - private static void DoRemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) + public static void DoRemoveAssetFromDepsPackages(string depsFile, string sectionName, string assetPath) { JToken deps; using (var file = File.OpenText(depsFile)) diff --git a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs b/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs deleted file mode 100644 index 59bb39e49..000000000 --- a/build_projects/dotnet-cli-build/SharedFrameworkNameVersionPath.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class SharedFrameworkNameVersionPath : Task - { - public string RootOutputDirectory { get; set; } - - [Output] - public string OutputSharedFrameworkNameVersionPath { get; set; } - - public override bool Execute() - { - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - OutputSharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - RootOutputDirectory, - sharedFrameworkNugetVersion); - - return true; - } - } -} diff --git a/tools/Archiver/project.json b/tools/Archiver/project.json index 899fd6995..d389e713e 100644 --- a/tools/Archiver/project.json +++ b/tools/Archiver/project.json @@ -16,5 +16,18 @@ }, "frameworks": { "netcoreapp1.0": {} + }, + "runtimes": { + "win7-x64": {}, + "win7-x86": {}, + "osx.10.10-x64": {}, + "osx.10.11-x64": {}, + "ubuntu.14.04-x64": {}, + "ubuntu.16.04-x64": {}, + "centos.7-x64": {}, + "rhel.7.2-x64": {}, + "debian.8-x64": {}, + "fedora.23-x64": {}, + "opensuse.13.2-x64": {} } } diff --git a/tools/MultiProjectValidator/project.json b/tools/MultiProjectValidator/project.json index 0edf465ca..7409d24c8 100644 --- a/tools/MultiProjectValidator/project.json +++ b/tools/MultiProjectValidator/project.json @@ -19,5 +19,18 @@ "dnxcore50" ] } + }, + "runtimes": { + "win7-x64": {}, + "win7-x86": {}, + "osx.10.10-x64": {}, + "osx.10.11-x64": {}, + "ubuntu.14.04-x64": {}, + "ubuntu.16.04-x64": {}, + "centos.7-x64": {}, + "rhel.7.2-x64": {}, + "debian.8-x64": {}, + "fedora.23-x64": {}, + "opensuse.13.2-x64": {} } } From 2846a9b2e727d96abb542728f14a81dca2233310 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 30 Jun 2016 16:13:55 -0700 Subject: [PATCH 031/165] Fixing an issue where there was a new line in the path to dotnet.exe in the sharedframework and added incrementality to BuildProjectsForNuGetPackages. --- build/Microsoft.DotNet.Cli.Compile.targets | 4 +- .../Microsoft.DotNet.Cli.Nupkg.targets | 75 ++++++++++++++++++- 2 files changed, 72 insertions(+), 7 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index cfd97e5be..d831479ae 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -65,9 +65,7 @@ Microsoft.NETCore.App 1.0.0 - - $(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkNuGetVersion) - + $(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkNuGetVersion) diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index ddb61ba9c..f100595e9 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -11,46 +11,111 @@ - + + + + + + + + + + + + + + + + + + + + + + + @(MicrosoftDotNetCliUtilsInputs) + @(MicrosoftDotNetCliUtilsOutputs) Microsoft.DotNet.Cli.Utils $(SdkNugetVersion) + @(MicrosoftDotNetCompilerCommonInputs) + @(MicrosoftDotNetCompilerCommonOutputs) Microsoft.DotNet.Compiler.Common $(SdkNugetVersion) + @(MicrosoftDotNetFilesInputs) + @(MicrosoftDotNetFilesOutputs) Microsoft.DotNet.Files $(SdkNugetVersion) + @(MicrosoftDotNetInternalAbstractionsInputs) + @(MicrosoftDotNetInternalAbstractionsOutputs) Microsoft.DotNet.InternalAbstractions $(DependencyModelAndInternalAbstractionsNugetVersion) + @(MicrosoftDotNetProjectModelInputs) + @(MicrosoftDotNetProjectModelOutputs) Microsoft.DotNet.ProjectModel $(ProjectModelNugetVersion) + @(MicrosoftDotNetProjectModelLoaderInputs) + @(MicrosoftDotNetProjectModelLoaderOutputs) Microsoft.DotNet.ProjectModel.Loader $(SdkNugetVersion) + @(MicrosoftDotNetProjectModelWorkspacesInputs) + @(MicrosoftDotNetProjectModelWorkspacesOutputs) Microsoft.DotNet.ProjectModel.Workspaces $(SdkNugetVersion) + @(MicrosoftExtensionsDependencyModelInputs) + @(MicrosoftExtensionsDependencyModelOutputs) Microsoft.Extensions.DependencyModel $(DependencyModelAndInternalAbstractionsNugetVersion) + @(MicrosoftExtensionsTestingAbstractionsInputs) + @(MicrosoftExtensionsTestingAbstractionsOutputs) Microsoft.Extensions.Testing.Abstractions $(SdkNugetVersion) - + - @@ -70,7 +135,9 @@ + Condition=" '$(OS)' == 'Windows_NT' " + Inputs="%(ProjectsToPack.Inputs)" + Outputs="%(ProjectsToPack.Outputs)"> -NoRun --norun - + Prepare;Compile;Test;Package;Publish $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll Debug $(MSBuildThisFileDirectory) - + preview + Microsoft.NETCore.App 1.0.0 1.0.1 1.0.1 + + 1.0.2 + 1.0.2 diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index d831479ae..7397926cf 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -7,12 +7,11 @@ - - + GenerateNuGetPackagesArchive" /> @@ -62,10 +61,8 @@ runtimes/any/native $(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir) $(SdkOutputDirectory)/runtimes/any/native - - Microsoft.NETCore.App - 1.0.0 - $(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkNuGetVersion) + + $(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkVersion) diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index f100595e9..ddb61ba9c 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -11,111 +11,46 @@ - - - - - - - - - - - - - - - - - - - - - - - @(MicrosoftDotNetCliUtilsInputs) - @(MicrosoftDotNetCliUtilsOutputs) + Microsoft.DotNet.Cli.Utils $(SdkNugetVersion) - @(MicrosoftDotNetCompilerCommonInputs) - @(MicrosoftDotNetCompilerCommonOutputs) Microsoft.DotNet.Compiler.Common $(SdkNugetVersion) - @(MicrosoftDotNetFilesInputs) - @(MicrosoftDotNetFilesOutputs) Microsoft.DotNet.Files $(SdkNugetVersion) - @(MicrosoftDotNetInternalAbstractionsInputs) - @(MicrosoftDotNetInternalAbstractionsOutputs) Microsoft.DotNet.InternalAbstractions $(DependencyModelAndInternalAbstractionsNugetVersion) - @(MicrosoftDotNetProjectModelInputs) - @(MicrosoftDotNetProjectModelOutputs) Microsoft.DotNet.ProjectModel $(ProjectModelNugetVersion) - @(MicrosoftDotNetProjectModelLoaderInputs) - @(MicrosoftDotNetProjectModelLoaderOutputs) Microsoft.DotNet.ProjectModel.Loader $(SdkNugetVersion) - @(MicrosoftDotNetProjectModelWorkspacesInputs) - @(MicrosoftDotNetProjectModelWorkspacesOutputs) Microsoft.DotNet.ProjectModel.Workspaces $(SdkNugetVersion) - @(MicrosoftExtensionsDependencyModelInputs) - @(MicrosoftExtensionsDependencyModelOutputs) Microsoft.Extensions.DependencyModel $(DependencyModelAndInternalAbstractionsNugetVersion) - @(MicrosoftExtensionsTestingAbstractionsInputs) - @(MicrosoftExtensionsTestingAbstractionsOutputs) Microsoft.Extensions.Testing.Abstractions $(SdkNugetVersion) - + + @@ -135,9 +70,7 @@ + Condition=" '$(OS)' == 'Windows_NT' "> Date: Fri, 1 Jul 2016 11:02:26 -0700 Subject: [PATCH 033/165] Addressing more code review comments --- build.proj | 7 ++++--- build/Microsoft.DotNet.Cli.Compile.targets | 5 +++-- build/Microsoft.DotNet.Cli.Prepare.targets | 3 --- build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets | 7 ++++--- build/package/Microsoft.DotNet.Cli.Layout.targets | 6 +----- .../dotnet-cli-build/ChangeEntryPointLibraryName.cs | 3 +-- build_projects/dotnet-cli-build/CleanPublishOutput.cs | 3 +-- build_projects/dotnet-cli-build/CrossgenDirectory.cs | 3 +-- build_projects/dotnet-cli-build/FixModeFlags.cs | 3 +-- .../dotnet-cli-build/RemoveAssetFromDepsPackages.cs | 7 +++---- 10 files changed, 19 insertions(+), 28 deletions(-) diff --git a/build.proj b/build.proj index 44bc94833..3935e56a4 100644 --- a/build.proj +++ b/build.proj @@ -1,6 +1,7 @@ + diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 7397926cf..46d2ca3ee 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -1,4 +1,5 @@ - + + @@ -70,7 +71,7 @@ - + diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index bb8441ae6..46aae457b 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -67,9 +67,6 @@ $(VersionMajor).$(VersionMinor).$(VersionPatch)-rc4-$(CommitCount) $(VersionMajor).$(VersionMinor).1-beta-$(CommitCount) - 1.0.2 - 1.0.2 - .zip .tar.gz diff --git a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets index 531cb000b..670ad4478 100644 --- a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets +++ b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets @@ -1,7 +1,8 @@ - + + @@ -28,7 +29,7 @@ + DependsOnTargets="Prepare;SetupStage"> $(IntermediateDirectory)/NuGetPackagesArchiveProject $(IntermediateDirectory)/NuGetPackagesArchiveFolder diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets index 4c6036a4d..37809a7fd 100644 --- a/build/package/Microsoft.DotNet.Cli.Layout.targets +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -56,11 +56,7 @@ @(SdkDebugLayoutInput) -<<<<<<< 52e9475be8e9dd9d6715a1f0787da3faa1137f8a - @(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)') -======= - @(SdkDebugLayoutInput -> '$(SdkDebugLayoutOutputDirectory)/$([MSBuild]::MakeRelative($(Stage2SymbolsDirectory), '%(Identity)'))') ->>>>>>> Addressing code review comments and making incremental build work. + @(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionSdkDebug) $(ArtifactNameSdkDebug) diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs index d309f8856..4eea67021 100644 --- a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -4,11 +4,10 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Net.Http; +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs index 02528b749..8ed3ba21c 100644 --- a/build_projects/dotnet-cli-build/CleanPublishOutput.cs +++ b/build_projects/dotnet-cli-build/CleanPublishOutput.cs @@ -4,11 +4,10 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Net.Http; +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs index ac5fb5067..2b03c012f 100644 --- a/build_projects/dotnet-cli-build/CrossgenDirectory.cs +++ b/build_projects/dotnet-cli-build/CrossgenDirectory.cs @@ -4,11 +4,10 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Net.Http; +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs index ab2961942..7caf97333 100644 --- a/build_projects/dotnet-cli-build/FixModeFlags.cs +++ b/build_projects/dotnet-cli-build/FixModeFlags.cs @@ -4,11 +4,10 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Net.Http; +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs index e3ea94620..f2395df23 100644 --- a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs +++ b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs @@ -4,13 +4,12 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Net.Http; +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; From f66ec9a789d992cde040930d7433ee47c81de9f2 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 1 Jul 2016 20:46:54 -0700 Subject: [PATCH 034/165] Adding trailing slash back to OutputDirectory that I accidently removed when merging and improving the inputs for GenerateNuGetPackagesArchiveInputs to take into account the c# template and the dotnet-archive and Microsoft.Dotnet.Archive codes. --- build/Microsoft.DotNet.Cli.Prepare.targets | 2 +- .../compile/Microsoft.DotNet.Cli.LzmaArchive.targets | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 46aae457b..b5d76503d 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -36,7 +36,7 @@ $(BaseOutputDirectory)/stage2 $(BaseOutputDirectory)/stage2symbols $(Stage2Directory)/dotnet.exe - $(Stage2Directory) + $(Stage2Directory)/ $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate $(BaseOutputDirectory)/packages diff --git a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets index 670ad4478..47873c488 100644 --- a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets +++ b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets @@ -2,7 +2,7 @@ @@ -37,5 +37,15 @@ $(IntermediateDirectory)/nuGetPackagesArchive.lzma $(Stage2Directory)/sdk/$(SdkVersion)/nuGetPackagesArchive.lzma + + + + + + \ No newline at end of file From a19f9021a565455cce517ec67bdbbad9443ff510 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Mon, 4 Jul 2016 20:36:30 -0700 Subject: [PATCH 035/165] Fix ExeExtension on non-Windows (#3777) --- build/Microsoft.DotNet.Cli.Compile.targets | 11 ++++------- build/Microsoft.DotNet.Cli.Prepare.targets | 6 ++++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 46d2ca3ee..919c0a057 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -27,7 +27,7 @@ @(CompileStageInputs) $(Stage1Directory) $(Stage1SymbolsDirectory) - $(Stage0Path)/dotnet.exe + $(Stage0Path)/dotnet$(ExeExtension) @(CompileStageInputs) @@ -41,10 +41,7 @@ - - .exe - - + lib @@ -52,7 +49,7 @@ .dylib .so - dotnet$(ExeSuffix) + dotnet$(ExeExtension) $(DynamicLibPrefix)hostfxr$(DynamicLibSuffix) $(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix) @@ -140,7 +137,7 @@ + DestinationFiles="$(SdkOutputDirectory)/corehost$(ExeExtension)" /> diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index b5d76503d..e4da334aa 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -26,16 +26,18 @@ $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) $(RepoRoot)/.dotnet_stage0/Darwin $(RepoRoot)/.dotnet_stage0/Linux + .exe + $(Stage0Path) $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/tools $(BaseOutputDirectory)/stage1 $(BaseOutputDirectory)/stage1symbols - $(Stage1Directory)/dotnet.exe + $(Stage1Directory)/dotnet$(ExeExtension) $(BaseOutputDirectory)/stage2 $(BaseOutputDirectory)/stage2symbols - $(Stage2Directory)/dotnet.exe + $(Stage2Directory)/dotnet$(ExeExtension) $(Stage2Directory)/ $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate From cc1bb54f1a4d14ab98b55835e4dcba7760dda0b7 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 5 Jul 2016 15:09:39 -0700 Subject: [PATCH 036/165] Removing build scripts from dotnet-cli-build. Moving the stage0 to a run_build scripts and invoking dotnet build3 build.proj for the build. --- build.cmd | 2 +- build.proj | 15 +++++++++- build.sh | 4 +-- build/Microsoft.DotNet.Cli.Compile.targets | 2 +- build/Microsoft.DotNet.Cli.Prepare.targets | 7 +---- .../build.ps1 => run_build.ps1 | 30 +++---------------- .../dotnet-cli-build/build.sh => run_build.sh | 30 +------------------ 7 files changed, 24 insertions(+), 66 deletions(-) rename build_projects/dotnet-cli-build/build.ps1 => run_build.ps1 (66%) rename build_projects/dotnet-cli-build/build.sh => run_build.sh (80%) mode change 100755 => 100644 diff --git a/build.cmd b/build.cmd index bd617d268..e72f25765 100644 --- a/build.cmd +++ b/build.cmd @@ -3,5 +3,5 @@ REM Copyright (c) .NET Foundation and contributors. All rights reserved. REM Licensed under the MIT license. See LICENSE file in the project root for full license information. -powershell -NoProfile -NoLogo -Command "%~dp0build_projects\dotnet-cli-build\build.ps1 %*; exit $LastExitCode;" +powershell -NoProfile -NoLogo -Command "%~dp0build.ps1 %*; exit $LastExitCode;" if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/build.proj b/build.proj index 3935e56a4..3308804e3 100644 --- a/build.proj +++ b/build.proj @@ -30,6 +30,13 @@ 1.0.2 1.0.2 + + $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) + $(RepoRoot)/.dotnet_stage0/Darwin + $(RepoRoot)/.dotnet_stage0/Linux + .exe + + $(Stage0Path)/dotnet$(ExeExtension) @@ -48,7 +55,13 @@ Inputs="@(DotnetCliBuildFrameworkInputs)" Outputs="$(CLIBuildDll)" DependsOnTargets="MSBuildWorkaroundTarget"> - + + $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build + + + + + diff --git a/build.sh b/build.sh index ae1cde343..563e5176b 100755 --- a/build.sh +++ b/build.sh @@ -49,12 +49,12 @@ args=($temp) dockerbuild() { - BUILD_COMMAND=/opt/code/build_projects/dotnet-cli-build/build.sh $DIR/scripts/dockerrun.sh --non-interactive "$@" + BUILD_COMMAND=/opt/code/run_build.sh $DIR/scripts/dockerrun.sh --non-interactive "$@" } # Check if we need to build in docker if [ ! -z "$BUILD_IN_DOCKER" ]; then dockerbuild "${args[@]}" else - $DIR/build_projects/dotnet-cli-build/build.sh "${args[@]}" + $DIR/run_build.sh "${args[@]}" fi diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 919c0a057..cad96f8b5 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -27,7 +27,7 @@ @(CompileStageInputs) $(Stage1Directory) $(Stage1SymbolsDirectory) - $(Stage0Path)/dotnet$(ExeExtension) + $(DotnetStage0) @(CompileStageInputs) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index e4da334aa..6faaa3216 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -22,12 +22,7 @@ - - $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) - $(RepoRoot)/.dotnet_stage0/Darwin - $(RepoRoot)/.dotnet_stage0/Linux - .exe - + $(Stage0Path) $(RepoRoot)/artifacts/$(Rid) diff --git a/build_projects/dotnet-cli-build/build.ps1 b/run_build.ps1 similarity index 66% rename from build_projects/dotnet-cli-build/build.ps1 rename to run_build.ps1 index bbc5dde50..1a6ba2a33 100644 --- a/build_projects/dotnet-cli-build/build.ps1 +++ b/run_build.ps1 @@ -5,28 +5,24 @@ param( [string]$Configuration="Debug", - [string[]]$Targets=@("Default"), [string]$Architecture="x64", [switch]$NoPackage, - [switch]$NoRun, [switch]$Help) if($Help) { - Write-Host "Usage: .\build.ps1 [-Configuration ] [-Targets ] [-Architecture ] [-NoPackage] [-Help]" + Write-Host "Usage: .\build.ps1 [-Configuration ] [-Architecture ] [-NoPackage] [-Help]" Write-Host "" Write-Host "Options:" Write-Host " -Configuration Build the specified Configuration (Debug or Release, default: Debug)" - Write-Host " -Targets Comma separated build targets to run (Init, Compile, Publish, etc.; Default is a full build and publish)" Write-Host " -Architecture Build the specified architecture (x64 or x86 (supported only on Windows), default: x64)" Write-Host " -NoPackage Skip packaging targets" - Write-Host " -NoRun Skip running the build" Write-Host " -Help Display this help message" exit 0 } $env:CONFIGURATION = $Configuration; -$RepoRoot = "$PSScriptRoot\..\.." +$RepoRoot = "$PSScriptRoot" $env:NUGET_PACKAGES = "$RepoRoot\.nuget\packages" if($NoPackage) @@ -69,23 +65,5 @@ $env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" # Disable first run since we want to control all package sources $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -# Restore the build scripts -Write-Host "Restoring Build Script projects..." -pushd "$PSScriptRoot" -dotnet restore -if($LASTEXITCODE -ne 0) { throw "Failed to restore" } -popd - -# Publish the builder -Write-Host "Compiling Build Scripts..." -dotnet publish "$PSScriptRoot" -o "$PSScriptRoot\bin" --framework netcoreapp1.0 -if($LASTEXITCODE -ne 0) { throw "Failed to compile build scripts" } - -if(!$NoRun) -{ - # Run the builder - Write-Host "Invoking Build Scripts..." - Write-Host " Configuration: $env:CONFIGURATION" - & "$PSScriptRoot\bin\dotnet-cli-build.exe" @Targets - if($LASTEXITCODE -ne 0) { throw "Build failed" } -} +dotnet build3 build.proj /p:Architecture=x64 +if($LASTEXITCODE -ne 0) { throw "Failed to restore" } diff --git a/build_projects/dotnet-cli-build/build.sh b/run_build.sh old mode 100755 new mode 100644 similarity index 80% rename from build_projects/dotnet-cli-build/build.sh rename to run_build.sh index 11fee896c..5f8c1e984 --- a/build_projects/dotnet-cli-build/build.sh +++ b/run_build.sh @@ -25,16 +25,9 @@ while [[ $# > 0 ]]; do export CONFIGURATION=$2 shift ;; - --targets) - IFS=',' read -r -a targets <<< $2 - shift - ;; --nopackage) export DOTNET_BUILD_SKIP_PACKAGING=1 ;; - --norun) - export DOTNET_BUILD_SKIP_RUN=1 - ;; --skip-prereqs) # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 @@ -44,10 +37,8 @@ while [[ $# > 0 ]]; do echo "" echo "Options:" echo " --configuration Build the specified Configuration (Debug or Release, default: Debug)" - echo " --targets Comma separated build targets to run (Init, Compile, Publish, etc.; Default is a full build and publish)" echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install" echo " --nopackage Skip packaging targets" - echo " --norun Skip running the build" echo " --docker Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME" echo " --help Display this help message" exit 0 @@ -107,23 +98,4 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -# Restore the build scripts -echo "Restoring Build Script projects..." -( - cd "$DIR" - dotnet restore -) - -# Build the builder -echo "Compiling Build Scripts..." -dotnet publish "$DIR" -o "$DIR/bin" --framework netcoreapp1.0 - -if [ -z "$DOTNET_BUILD_SKIP_RUN" ]; then - export PATH="$OLDPATH" - # Run the builder - echo "Invoking Build Scripts..." - echo "Configuration: $CONFIGURATION" - - $DIR/bin/dotnet-cli-build ${targets[@]} -fi -exit $? +dotnet build3 build.proj /p:Architecture=x64 \ No newline at end of file From aebb42335c44c82e8700735542f4bca048f33a79 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 5 Jul 2016 16:28:00 -0700 Subject: [PATCH 037/165] Changed dotnet stage0 to no longer pivot on OS. We just place it under dotnet_stage0/ --- build.proj | 4 +--- .../shared-build-targets-utils/Utils/DotNetCli.cs | 14 +++----------- run_build.ps1 | 2 +- run_build.sh | 7 ++++--- 4 files changed, 9 insertions(+), 18 deletions(-) mode change 100644 => 100755 run_build.sh diff --git a/build.proj b/build.proj index 3308804e3..3e673d4f4 100644 --- a/build.proj +++ b/build.proj @@ -31,9 +31,7 @@ 1.0.2 1.0.2 - $(RepoRoot)/.dotnet_stage0/Windows/$(Architecture) - $(RepoRoot)/.dotnet_stage0/Darwin - $(RepoRoot)/.dotnet_stage0/Linux + $(RepoRoot)/.dotnet_stage0/$(Architecture) .exe $(Stage0Path)/dotnet$(ExeExtension) diff --git a/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs b/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs index 82762ce56..7e6451e98 100644 --- a/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs +++ b/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs @@ -55,17 +55,9 @@ namespace Microsoft.DotNet.Cli.Build private static string GetStage0Path() { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return Path.Combine(Directory.GetCurrentDirectory(), ".dotnet_stage0", - RuntimeEnvironment.OperatingSystemPlatform.ToString(), - RuntimeEnvironment.RuntimeArchitecture); - } - else - { - return Path.Combine(Directory.GetCurrentDirectory(), ".dotnet_stage0", RuntimeEnvironment.OperatingSystemPlatform.ToString()); - } - + return Path.Combine(Directory.GetCurrentDirectory(), + ".dotnet_stage0", + RuntimeEnvironment.RuntimeArchitecture); } } } diff --git a/run_build.ps1 b/run_build.ps1 index 1a6ba2a33..d11d2517b 100644 --- a/run_build.ps1 +++ b/run_build.ps1 @@ -45,7 +45,7 @@ cat "$RepoRoot\branchinfo.txt" | ForEach-Object { # Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot if (!$env:DOTNET_INSTALL_DIR) { - $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\Windows\$Architecture" + $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" } if (!(Test-Path $env:DOTNET_INSTALL_DIR)) diff --git a/run_build.sh b/run_build.sh old mode 100644 new mode 100755 index 5f8c1e984..bf806048b --- a/run_build.sh +++ b/run_build.sh @@ -15,7 +15,8 @@ done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" OLDPATH="$PATH" -REPOROOT="$DIR/../.." +ARCHITECTURE="x64" +REPOROOT="$DIR" source "$REPOROOT/scripts/common/_prettyprint.sh" while [[ $# > 0 ]]; do @@ -79,7 +80,7 @@ while read line; do done < "$REPOROOT/branchinfo.txt" # Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot -[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$(uname) +[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE [ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR $REPOROOT/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose @@ -98,4 +99,4 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=x64 \ No newline at end of file +dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file From c87652f8a0279fdb620ddcc1ba0c201ba53d2a7b Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 5 Jul 2016 16:56:05 -0700 Subject: [PATCH 038/165] Fixing build.cmd to invoke run_build.ps1. I forgot to update it before. --- build.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cmd b/build.cmd index e72f25765..9ec40245a 100644 --- a/build.cmd +++ b/build.cmd @@ -3,5 +3,5 @@ REM Copyright (c) .NET Foundation and contributors. All rights reserved. REM Licensed under the MIT license. See LICENSE file in the project root for full license information. -powershell -NoProfile -NoLogo -Command "%~dp0build.ps1 %*; exit $LastExitCode;" +powershell -NoProfile -NoLogo -Command "%~dp0run_build.ps1 %*; exit $LastExitCode;" if %errorlevel% neq 0 exit /b %errorlevel% From cdddc2e432e6150228379cae00a49693c58faebb Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 12:03:16 -0700 Subject: [PATCH 039/165] Addressing code review comments. Fixing issue with compile where we were not copying the msbuild files to the right place. Fixed an issue where we were trying to download installers for OSes that don't have installers. Added init-tools scripts. --- build.cmd | 2 +- build.proj | 3 - build.sh | 4 +- build/Microsoft.DotNet.Cli.Compile.targets | 16 +++--- build/Microsoft.DotNet.Cli.Prepare.targets | 6 +- .../update-dependencies.ps1 | 2 +- init-tools.ps1 | 35 ++++++++++++ run_build.sh => init-tools.sh | 42 +------------- run_build.ps1 => run-build.ps1 | 36 ++---------- run-build.sh | 57 +++++++++++++++++++ 10 files changed, 113 insertions(+), 90 deletions(-) create mode 100644 init-tools.ps1 rename run_build.sh => init-tools.sh (58%) mode change 100755 => 100644 rename run_build.ps1 => run-build.ps1 (50%) create mode 100644 run-build.sh diff --git a/build.cmd b/build.cmd index 9ec40245a..cbf5108a7 100644 --- a/build.cmd +++ b/build.cmd @@ -3,5 +3,5 @@ REM Copyright (c) .NET Foundation and contributors. All rights reserved. REM Licensed under the MIT license. See LICENSE file in the project root for full license information. -powershell -NoProfile -NoLogo -Command "%~dp0run_build.ps1 %*; exit $LastExitCode;" +powershell -NoProfile -NoLogo -Command "%~dp0run-build.ps1 %*; exit $LastExitCode;" if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/build.proj b/build.proj index 3e673d4f4..314ba3bdd 100644 --- a/build.proj +++ b/build.proj @@ -12,9 +12,6 @@ .ps1 .sh - -NoRun - --norun - Prepare;Compile;Test;Package;Publish $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll diff --git a/build.sh b/build.sh index 563e5176b..2c9737f7f 100755 --- a/build.sh +++ b/build.sh @@ -49,12 +49,12 @@ args=($temp) dockerbuild() { - BUILD_COMMAND=/opt/code/run_build.sh $DIR/scripts/dockerrun.sh --non-interactive "$@" + BUILD_COMMAND=/opt/code/run-build.sh $DIR/scripts/dockerrun.sh --non-interactive "$@" } # Check if we need to build in docker if [ ! -z "$BUILD_IN_DOCKER" ]; then dockerbuild "${args[@]}" else - $DIR/run_build.sh "${args[@]}" + $DIR/run-build.sh "${args[@]}" fi diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index cad96f8b5..15cdbfbca 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -72,12 +72,6 @@ - - - - - - @@ -155,8 +149,16 @@ Lines="$(CommitHash);$(SdkVersion)" Overwrite="true" /> + + + + + + + + + DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)\%(Filename)%(Extension)')" /> diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 6faaa3216..482997252 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -126,21 +126,21 @@ <_DownloadAndExtractItem Include="DownloadedSharedFrameworkInstallerFile" - Condition="!Exists('$(DownloadedSharedFrameworkInstallerFile)')"> + Condition="!Exists('$(DownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''"> $(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(DownloadedSharedFrameworkInstallerFileName) $(DownloadedSharedFrameworkInstallerFile) <_DownloadAndExtractItem Include="DownloadedSharedHostInstallerFile" - Condition="!Exists('$(DownloadedSharedHostInstallerFile)')"> + Condition="!Exists('$(DownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''"> $(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(DownloadedSharedHostInstallerFileName) $(DownloadedSharedHostInstallerFile) <_DownloadAndExtractItem Include="DownloadedHostFxrInstallerFile" - Condition="!Exists('$(DownloadedHostFxrInstallerFile)')"> + Condition="!Exists('$(DownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''"> $(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(DownloadedHostFxrInstallerFileName) $(DownloadedHostFxrInstallerFile) diff --git a/build_projects/update-dependencies/update-dependencies.ps1 b/build_projects/update-dependencies/update-dependencies.ps1 index 4ecef6840..319f10f62 100644 --- a/build_projects/update-dependencies/update-dependencies.ps1 +++ b/build_projects/update-dependencies/update-dependencies.ps1 @@ -25,7 +25,7 @@ $AppPath = "$PSScriptRoot" # Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot if (!$env:DOTNET_INSTALL_DIR) { - $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\Windows\$Architecture" + $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" } # Install a stage 0 diff --git a/init-tools.ps1 b/init-tools.ps1 new file mode 100644 index 000000000..248e458d7 --- /dev/null +++ b/init-tools.ps1 @@ -0,0 +1,35 @@ +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +# Load Branch Info +cat "$RepoRoot\branchinfo.txt" | ForEach-Object { + if(!$_.StartsWith("#") -and ![String]::IsNullOrWhiteSpace($_)) { + $splat = $_.Split([char[]]@("="), 2) + Set-Content "env:\$($splat[0])" -Value $splat[1] + } +} + +# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot +if (!$env:DOTNET_INSTALL_DIR) +{ + $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" +} + +if (!(Test-Path $env:DOTNET_INSTALL_DIR)) +{ + mkdir $env:DOTNET_INSTALL_DIR | Out-Null +} + +# Install a stage 0 +Write-Host "Installing .NET Core CLI Stage 0 from branchinfo channel" + +& "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel $env:CHANNEL -Architecture $Architecture -Verbose +if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } + +# Put the stage0 on the path +$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" + +# Disable first run since we want to control all package sources +$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ No newline at end of file diff --git a/run_build.sh b/init-tools.sh old mode 100755 new mode 100644 similarity index 58% rename from run_build.sh rename to init-tools.sh index bf806048b..eaea093c7 --- a/run_build.sh +++ b/init-tools.sh @@ -13,44 +13,6 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" -OLDPATH="$PATH" - -ARCHITECTURE="x64" -REPOROOT="$DIR" -source "$REPOROOT/scripts/common/_prettyprint.sh" - -while [[ $# > 0 ]]; do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - -c|--configuration) - export CONFIGURATION=$2 - shift - ;; - --nopackage) - export DOTNET_BUILD_SKIP_PACKAGING=1 - ;; - --skip-prereqs) - # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems - export DOTNET_INSTALL_SKIP_PREREQS=1 - ;; - --help) - echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" - echo "" - echo "Options:" - echo " --configuration Build the specified Configuration (Debug or Release, default: Debug)" - echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install" - echo " --nopackage Skip packaging targets" - echo " --docker Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME" - echo " --help Display this help message" - exit 0 - ;; - *) - break - ;; - esac - - shift -done # Set nuget package cache under the repo export NUGET_PACKAGES="$REPOROOT/.nuget/packages" @@ -97,6 +59,4 @@ then fi # Disable first run since we want to control all package sources -export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 - -dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file +export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ No newline at end of file diff --git a/run_build.ps1 b/run-build.ps1 similarity index 50% rename from run_build.ps1 rename to run-build.ps1 index d11d2517b..37071fde4 100644 --- a/run_build.ps1 +++ b/run-build.ps1 @@ -34,36 +34,8 @@ else $env:DOTNET_BUILD_SKIP_PACKAGING=0 } -# Load Branch Info -cat "$RepoRoot\branchinfo.txt" | ForEach-Object { - if(!$_.StartsWith("#") -and ![String]::IsNullOrWhiteSpace($_)) { - $splat = $_.Split([char[]]@("="), 2) - Set-Content "env:\$($splat[0])" -Value $splat[1] - } -} +& "$RepoRoot\init-tools.ps1" +if($LASTEXITCODE -ne 0) { throw "Failed to install Init Tools" } -# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot -if (!$env:DOTNET_INSTALL_DIR) -{ - $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" -} - -if (!(Test-Path $env:DOTNET_INSTALL_DIR)) -{ - mkdir $env:DOTNET_INSTALL_DIR | Out-Null -} - -# Install a stage 0 -Write-Host "Installing .NET Core CLI Stage 0 from branchinfo channel" - -& "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel $env:CHANNEL -Architecture $Architecture -Verbose -if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } - -# Put the stage0 on the path -$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" - -# Disable first run since we want to control all package sources -$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 - -dotnet build3 build.proj /p:Architecture=x64 -if($LASTEXITCODE -ne 0) { throw "Failed to restore" } +dotnet build3 build.proj /p:Architecture=$Architecture +if($LASTEXITCODE -ne 0) { throw "Failed to build" } diff --git a/run-build.sh b/run-build.sh new file mode 100644 index 000000000..29d33df23 --- /dev/null +++ b/run-build.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +set -e + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located +done +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +OLDPATH="$PATH" + +ARCHITECTURE="x64" +REPOROOT="$DIR" +source "$REPOROOT/scripts/common/_prettyprint.sh" + +while [[ $# > 0 ]]; do + lowerI="$(echo $1 | awk '{print tolower($0)}')" + case $lowerI in + -c|--configuration) + export CONFIGURATION=$2 + shift + ;; + --nopackage) + export DOTNET_BUILD_SKIP_PACKAGING=1 + ;; + --skip-prereqs) + # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems + export DOTNET_INSTALL_SKIP_PREREQS=1 + ;; + --help) + echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" + echo "" + echo "Options:" + echo " --configuration Build the specified Configuration (Debug or Release, default: Debug)" + echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install" + echo " --nopackage Skip packaging targets" + echo " --docker Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME" + echo " --help Display this help message" + exit 0 + ;; + *) + break + ;; + esac + + shift +done + +$REPOROOT/init-tools.sh + +dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file From 889f4c3ec8b2bafa1837e0040a312b54804fae91 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 12:04:59 -0700 Subject: [PATCH 040/165] Fixing permissions for init-tools.sh and run-build.sh. --- init-tools.sh | 0 run-build.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 init-tools.sh mode change 100644 => 100755 run-build.sh diff --git a/init-tools.sh b/init-tools.sh old mode 100644 new mode 100755 diff --git a/run-build.sh b/run-build.sh old mode 100644 new mode 100755 From 7e71a0217acf23fefcd8c84800d9673bfe4872a2 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 12:32:38 -0700 Subject: [PATCH 041/165] Moving a bunch of code from init-tools to run-build.sh because of how exporting works in chained bash scripts. Something down in the tree does not flow back up. --- init-tools.sh | 41 ++--------------------------------------- run-build.sh | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/init-tools.sh b/init-tools.sh index eaea093c7..9d86b3cf6 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -14,49 +14,12 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" -# Set nuget package cache under the repo -export NUGET_PACKAGES="$REPOROOT/.nuget/packages" - -# Set up the environment to be used for building with clang. -if which "clang-3.5" > /dev/null 2>&1; then - export CC="$(which clang-3.5)" - export CXX="$(which clang++-3.5)" -elif which "clang-3.6" > /dev/null 2>&1; then - export CC="$(which clang-3.6)" - export CXX="$(which clang++-3.6)" -elif which clang > /dev/null 2>&1; then - export CC="$(which clang)" - export CXX="$(which clang++)" -else - error "Unable to find Clang Compiler" - error "Install clang-3.5 or clang3.6" - exit 1 -fi - # Load Branch Info while read line; do if [[ $line != \#* ]]; then IFS='=' read -ra splat <<< "$line" export ${splat[0]}="${splat[1]}" fi -done < "$REPOROOT/branchinfo.txt" +done < "$DIR/branchinfo.txt" -# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot -[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE -[ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR - -$REPOROOT/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose - -# Put stage 0 on the PATH (for this shell only) -PATH="$DOTNET_INSTALL_DIR:$PATH" - -# Increases the file descriptors limit for this bash. It prevents an issue we were hitting during restore -FILE_DESCRIPTOR_LIMIT=$( ulimit -n ) -if [ $FILE_DESCRIPTOR_LIMIT -lt 1024 ] -then - echo "Increasing file description limit to 1024" - ulimit -n 1024 -fi - -# Disable first run since we want to control all package sources -export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ No newline at end of file +$DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose \ No newline at end of file diff --git a/run-build.sh b/run-build.sh index 29d33df23..d956bc685 100755 --- a/run-build.sh +++ b/run-build.sh @@ -13,12 +13,15 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +REPOROOT="$DIR" OLDPATH="$PATH" ARCHITECTURE="x64" -REPOROOT="$DIR" source "$REPOROOT/scripts/common/_prettyprint.sh" +# Set nuget package cache under the repo +export NUGET_PACKAGES="$REPOROOT/.nuget/packages" + while [[ $# > 0 ]]; do lowerI="$(echo $1 | awk '{print tolower($0)}')" case $lowerI in @@ -52,6 +55,40 @@ while [[ $# > 0 ]]; do shift done +# Set up the environment to be used for building with clang. +if which "clang-3.5" > /dev/null 2>&1; then + export CC="$(which clang-3.5)" + export CXX="$(which clang++-3.5)" +elif which "clang-3.6" > /dev/null 2>&1; then + export CC="$(which clang-3.6)" + export CXX="$(which clang++-3.6)" +elif which clang > /dev/null 2>&1; then + export CC="$(which clang)" + export CXX="$(which clang++)" +else + error "Unable to find Clang Compiler" + error "Install clang-3.5 or clang3.6" + exit 1 +fi + +# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot +[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE +[ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR + $REPOROOT/init-tools.sh +# Put stage 0 on the PATH (for this shell only) +PATH="$DOTNET_INSTALL_DIR:$PATH" + +# Increases the file descriptors limit for this bash. It prevents an issue we were hitting during restore +FILE_DESCRIPTOR_LIMIT=$( ulimit -n ) +if [ $FILE_DESCRIPTOR_LIMIT -lt 1024 ] +then + echo "Increasing file description limit to 1024" + ulimit -n 1024 +fi + +# Disable first run since we want to control all package sources +export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file From f400160a097bf940ddf9e5c345818f0c656f45d2 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 13:35:34 -0700 Subject: [PATCH 042/165] Trying to fix the ubuntu package generation break. I believe it happened because we were loading branchinfo in the init-tools, which means that the env variables defined there were not applied to commands ran from run-build.sh. --- init-tools.sh | 8 -------- run-build.sh | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/init-tools.sh b/init-tools.sh index 9d86b3cf6..446c4eb85 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -14,12 +14,4 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" -# Load Branch Info -while read line; do - if [[ $line != \#* ]]; then - IFS='=' read -ra splat <<< "$line" - export ${splat[0]}="${splat[1]}" - fi -done < "$DIR/branchinfo.txt" - $DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose \ No newline at end of file diff --git a/run-build.sh b/run-build.sh index d956bc685..8a4de9e58 100755 --- a/run-build.sh +++ b/run-build.sh @@ -71,6 +71,14 @@ else exit 1 fi +# Load Branch Info +while read line; do + if [[ $line != \#* ]]; then + IFS='=' read -ra splat <<< "$line" + export ${splat[0]}="${splat[1]}" + fi +done < "$REPOROOT/branchinfo.txt" + # Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot [ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE [ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR From 4510d9803cf375dd66109d6e49db2615fd75c407 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 13:46:54 -0700 Subject: [PATCH 043/165] Fixing the path for msbuild targets. --- build/Microsoft.DotNet.Cli.Compile.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 15cdbfbca..62ccbfe11 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -158,7 +158,7 @@ + DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" /> From 8eb05a4deb0f735fd570dc2e12f27432b5cbba13 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 14:45:07 -0700 Subject: [PATCH 044/165] Addressing code review comments and fixing another issue with deb installer generation. --- .../Microsoft.DotNet.Cli.Installer.DEB.targets | 4 ++++ init-tools.ps1 | 5 +++++ run-build.ps1 | 2 +- run-build.sh | 16 ---------------- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 13bf3b7df..78e1536a2 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -3,6 +3,10 @@ + + $(LayoutDirectory)/$(ArtifactNameSdk)/sdk + + diff --git a/init-tools.ps1 b/init-tools.ps1 index 248e458d7..250505650 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -3,6 +3,11 @@ # Licensed under the MIT license. See LICENSE file in the project root for full license information. # +param( + [string]$Architecture="x64") + +$RepoRoot = "$PSScriptRoot" + # Load Branch Info cat "$RepoRoot\branchinfo.txt" | ForEach-Object { if(!$_.StartsWith("#") -and ![String]::IsNullOrWhiteSpace($_)) { diff --git a/run-build.ps1 b/run-build.ps1 index 37071fde4..07a620c3c 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -34,7 +34,7 @@ else $env:DOTNET_BUILD_SKIP_PACKAGING=0 } -& "$RepoRoot\init-tools.ps1" +& "$RepoRoot\init-tools.ps1" -Architecture $Architecture if($LASTEXITCODE -ne 0) { throw "Failed to install Init Tools" } dotnet build3 build.proj /p:Architecture=$Architecture diff --git a/run-build.sh b/run-build.sh index 8a4de9e58..d7e5cd3bf 100755 --- a/run-build.sh +++ b/run-build.sh @@ -55,22 +55,6 @@ while [[ $# > 0 ]]; do shift done -# Set up the environment to be used for building with clang. -if which "clang-3.5" > /dev/null 2>&1; then - export CC="$(which clang-3.5)" - export CXX="$(which clang++-3.5)" -elif which "clang-3.6" > /dev/null 2>&1; then - export CC="$(which clang-3.6)" - export CXX="$(which clang++-3.6)" -elif which clang > /dev/null 2>&1; then - export CC="$(which clang)" - export CXX="$(which clang++)" -else - error "Unable to find Clang Compiler" - error "Install clang-3.5 or clang3.6" - exit 1 -fi - # Load Branch Info while read line; do if [[ $line != \#* ]]; then From 5d40e8b734e8726eff19456c76c1f37c88b78e10 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 16:45:41 -0700 Subject: [PATCH 045/165] Fixing Ubuntu packaging issue, part 99 of hopefully 99. --- .../Microsoft.DotNet.Cli.Installer.DEB.targets | 7 +------ build_projects/dotnet-cli-build/DebTargets.cs | 11 +++++++---- build_projects/dotnet-cli-build/InstallerTargets.cs | 7 ++++++- run-build.sh | 12 +++++++++++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 78e1536a2..0bcba8086 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -3,12 +3,7 @@ - - $(LayoutDirectory)/$(ArtifactNameSdk)/sdk - - - + - diff --git a/build_projects/dotnet-cli-build/DebTargets.cs b/build_projects/dotnet-cli-build/DebTargets.cs index cf5435cf8..b55a1a260 100644 --- a/build_projects/dotnet-cli-build/DebTargets.cs +++ b/build_projects/dotnet-cli-build/DebTargets.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; +using Microsoft.Build.Framework; using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.DotNet.InternalAbstractions; @@ -13,6 +14,9 @@ namespace Microsoft.DotNet.Cli.Build { public class DebTargets : Task { + [Required] + public string CLISDKRoot { get; set; } + public override bool Execute() { BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); @@ -21,7 +25,7 @@ namespace Microsoft.DotNet.Cli.Build return GenerateDebs(c).Success; } - public static BuildTargetResult GenerateDebs(BuildTargetContext c) + public BuildTargetResult GenerateDebs(BuildTargetContext c) { if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { @@ -32,7 +36,7 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - public static BuildTargetResult GenerateSdkDeb(BuildTargetContext c) + public BuildTargetResult GenerateSdkDeb(BuildTargetContext c) { if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) { @@ -53,7 +57,6 @@ namespace Microsoft.DotNet.Cli.Build var debFile = c.BuildContext.Get("SdkInstallerFile"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; - var sdkPublishRoot = c.BuildContext.Get("CLISDKRoot"); var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); @@ -67,7 +70,7 @@ namespace Microsoft.DotNet.Cli.Build Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), "-v", version, - "-i", sdkPublishRoot, + "-i", CLISDKRoot, "-o", debFile, "-p", packageName, "-b", Monikers.CLISdkBrandName, diff --git a/build_projects/dotnet-cli-build/InstallerTargets.cs b/build_projects/dotnet-cli-build/InstallerTargets.cs index fd1acdc80..42f928ea9 100644 --- a/build_projects/dotnet-cli-build/InstallerTargets.cs +++ b/build_projects/dotnet-cli-build/InstallerTargets.cs @@ -6,9 +6,14 @@ namespace Microsoft.DotNet.Cli.Build { public static BuildTargetResult GenerateInstaller(BuildTargetContext c) { + var debTargets = new DebTargets + { + CLISDKRoot = c.BuildContext.Get("CLISDKRoot") + }; + MsiTargets.GenerateMsisAndBundles(c); PkgTargets.GeneratePkgs(c); - DebTargets.GenerateDebs(c); + debTargets.GenerateDebs(c); return c.Success(); } diff --git a/run-build.sh b/run-build.sh index d7e5cd3bf..17a6a8089 100755 --- a/run-build.sh +++ b/run-build.sh @@ -22,19 +22,24 @@ source "$REPOROOT/scripts/common/_prettyprint.sh" # Set nuget package cache under the repo export NUGET_PACKAGES="$REPOROOT/.nuget/packages" +args=( "$0" ) while [[ $# > 0 ]]; do lowerI="$(echo $1 | awk '{print tolower($0)}')" case $lowerI in -c|--configuration) export CONFIGURATION=$2 + args=( "${args[@]/$1}" ) + args=( "${args[@]/$2}" ) shift ;; --nopackage) export DOTNET_BUILD_SKIP_PACKAGING=1 + args=( "${args[@]/$1}" ) ;; --skip-prereqs) # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 + args=( "${args[@]/$1}" ) ;; --help) echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" @@ -55,6 +60,11 @@ while [[ $# > 0 ]]; do shift done +# $args array may have empty elements in it. +# The easiest way to remove them is to cast to string and back to array. +temp="${args[@]}" +args=($temp) + # Load Branch Info while read line; do if [[ $line != \#* ]]; then @@ -83,4 +93,4 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file +dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" \ No newline at end of file From ffe995fbab0b462b532de2ffc39a4f2e1edf59db Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 6 Jul 2016 16:52:58 -0700 Subject: [PATCH 046/165] Reverting the change to run-build.sh to handle additional parameters. I don't want to hold this PR for that work. having CI running is more important. --- run-build.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/run-build.sh b/run-build.sh index 17a6a8089..d7e5cd3bf 100755 --- a/run-build.sh +++ b/run-build.sh @@ -22,24 +22,19 @@ source "$REPOROOT/scripts/common/_prettyprint.sh" # Set nuget package cache under the repo export NUGET_PACKAGES="$REPOROOT/.nuget/packages" -args=( "$0" ) while [[ $# > 0 ]]; do lowerI="$(echo $1 | awk '{print tolower($0)}')" case $lowerI in -c|--configuration) export CONFIGURATION=$2 - args=( "${args[@]/$1}" ) - args=( "${args[@]/$2}" ) shift ;; --nopackage) export DOTNET_BUILD_SKIP_PACKAGING=1 - args=( "${args[@]/$1}" ) ;; --skip-prereqs) # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 - args=( "${args[@]/$1}" ) ;; --help) echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" @@ -60,11 +55,6 @@ while [[ $# > 0 ]]; do shift done -# $args array may have empty elements in it. -# The easiest way to remove them is to cast to string and back to array. -temp="${args[@]}" -args=($temp) - # Load Branch Info while read line; do if [[ $line != \#* ]]; then @@ -93,4 +83,4 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" \ No newline at end of file +dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file From c2fdd41764316f959deb0615c529394ae97763e5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 7 Jul 2016 16:16:53 -0700 Subject: [PATCH 047/165] Aligning the two versions of run-build we have in what each do and the parameters they get. --- init-tools.ps1 | 27 +-------------------------- run-build.ps1 | 25 +++++++++++++++++++++++++ run-build.sh | 4 ++++ 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/init-tools.ps1 b/init-tools.ps1 index 250505650..b68837bdb 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -8,33 +8,8 @@ param( $RepoRoot = "$PSScriptRoot" -# Load Branch Info -cat "$RepoRoot\branchinfo.txt" | ForEach-Object { - if(!$_.StartsWith("#") -and ![String]::IsNullOrWhiteSpace($_)) { - $splat = $_.Split([char[]]@("="), 2) - Set-Content "env:\$($splat[0])" -Value $splat[1] - } -} - -# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot -if (!$env:DOTNET_INSTALL_DIR) -{ - $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" -} - -if (!(Test-Path $env:DOTNET_INSTALL_DIR)) -{ - mkdir $env:DOTNET_INSTALL_DIR | Out-Null -} - # Install a stage 0 Write-Host "Installing .NET Core CLI Stage 0 from branchinfo channel" & "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel $env:CHANNEL -Architecture $Architecture -Verbose -if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } - -# Put the stage0 on the path -$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" - -# Disable first run since we want to control all package sources -$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ No newline at end of file +if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } \ No newline at end of file diff --git a/run-build.ps1 b/run-build.ps1 index 07a620c3c..c64bf991d 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -34,8 +34,33 @@ else $env:DOTNET_BUILD_SKIP_PACKAGING=0 } +# Load Branch Info +cat "$RepoRoot\branchinfo.txt" | ForEach-Object { + if(!$_.StartsWith("#") -and ![String]::IsNullOrWhiteSpace($_)) { + $splat = $_.Split([char[]]@("="), 2) + Set-Content "env:\$($splat[0])" -Value $splat[1] + } +} + +# Use a repo-local install directory (but not the artifacts directory because that gets cleaned a lot +if (!$env:DOTNET_INSTALL_DIR) +{ + $env:DOTNET_INSTALL_DIR="$RepoRoot\.dotnet_stage0\$Architecture" +} + +if (!(Test-Path $env:DOTNET_INSTALL_DIR)) +{ + mkdir $env:DOTNET_INSTALL_DIR | Out-Null +} + & "$RepoRoot\init-tools.ps1" -Architecture $Architecture if($LASTEXITCODE -ne 0) { throw "Failed to install Init Tools" } +# Put the stage0 on the path +$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" + +# Disable first run since we want to control all package sources +$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + dotnet build3 build.proj /p:Architecture=$Architecture if($LASTEXITCODE -ne 0) { throw "Failed to build" } diff --git a/run-build.sh b/run-build.sh index d7e5cd3bf..2aff94d99 100755 --- a/run-build.sh +++ b/run-build.sh @@ -36,6 +36,10 @@ while [[ $# > 0 ]]; do # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 ;; + --architecture) + ARCHITECTURE=$2 + shift + ;; --help) echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" echo "" From ea9a41b81cd32964a2941ffe339a420267cf2bfa Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Thu, 7 Jul 2016 17:48:25 -0700 Subject: [PATCH 048/165] Pulling in BuildTools into CLI via the build --- .gitignore | 3 +++ BuildToolsVersion.txt | 1 + init-tools.ps1 | 50 ++++++++++++++++++++++++++++++++++++++++++- init-tools.sh | 33 +++++++++++++++++++++++++++- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 BuildToolsVersion.txt diff --git a/.gitignore b/.gitignore index ef7be5f3a..f052a4b89 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,9 @@ cmake/ # stage0 install directory .dotnet_stage0 +# build tools directory +build_tools + # `dotnet new` template zip files are generated by a pre-build step. /src/dotnet/commands/dotnet-new/*.zip diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt new file mode 100644 index 000000000..045389f0b --- /dev/null +++ b/BuildToolsVersion.txt @@ -0,0 +1 @@ +1.0.26-prerelease-00607-01 diff --git a/init-tools.ps1 b/init-tools.ps1 index b68837bdb..909bab6e7 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -12,4 +12,52 @@ $RepoRoot = "$PSScriptRoot" Write-Host "Installing .NET Core CLI Stage 0 from branchinfo channel" & "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel $env:CHANNEL -Architecture $Architecture -Verbose -if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } \ No newline at end of file +if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" } + +# Put the stage0 on the path +$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" + +# Disable first run since we want to control all package sources +$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + +# Setup BuildTools vars +$BUILD_TOOLS_VERSION = Get-Content "$RepoRoot\BuildToolsVersion.txt" +$BUILD_TOOLS_PATH=$RepoRoot + "\build_tools" +$BUILD_TOOLS_SOURCE='https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json' +$BUILD_TOOLS_SEMAPHORE=$BUILD_TOOLS_PATH + "\init-tools.completed" +$INIT_TOOLS_LOG=$RepoRoot + "\init-tools.log" +$PROJECT_JSON_FILE=$BUILD_TOOLS_PATH + "\project.json" +$PROJECT_JSON_CONTENTS="{ `"dependencies`": { `"Microsoft.DotNet.BuildTools`": `"" + $BUILD_TOOLS_VERSION + "`" }, `"frameworks`": { `"netcoreapp1.0`": { } } }" +$PACKAGES_DIR=$RepoRoot + "\.nuget\packages" +$BUILD_TOOLS_PACKAGE_PATH=$PACKAGES_DIR + "\Microsoft.DotNet.BuildTools\" + $BUILD_TOOLS_VERSION + "\lib" +$DOTNET_EXE_CMD=$env:DOTNET_INSTALL_DIR + "\dotnet.exe" + +# If build tools are already installed, escape +if (Test-Path "$BUILD_TOOLS_SEMAPHORE") +{ + Write-Host "Tools are already initialized" + exit 0 +} + +# Check for build tools +if (!(Test-Path "$BUILD_TOOLS_PATH")) +{ + mkdir "$BUILD_TOOLS_PATH" | Out-Null +} + +# Write the build tools project.json file +"$PROJECT_JSON_CONTENTS" | Set-Content "$PROJECT_JSON_FILE" + +# Restore build tools +$args="restore $PROJECT_JSON_FILE --packages $PACKAGES_DIR --source $BUILD_TOOLS_SOURCE" +Start-Process -FilePath $DOTNET_EXE_CMD -ArgumentList $args -Wait -RedirectStandardOutput $INIT_TOOLS_LOG -NoNewWindow +if (!(Test-Path "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd")) +{ + Write-Host "ERROR: Could not restore build tools correctly. See '$INIT_TOOLS_LOG' for more details" + exit 1 +} + +# Initialize build tools +cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $env:DOTNET_INSTALL_DIR\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" +Write-Host "Done initializing tools." +Write-Host "Init-Tools completed for BuildTools Version: $BUILD_TOOLS_VERSION" > $BUILD_TOOLS_SEMAPHORE diff --git a/init-tools.sh b/init-tools.sh index 446c4eb85..661dd7b7f 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -14,4 +14,35 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" -$DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose \ No newline at end of file +$DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose + +__init_tools_log=$DIR/init-tools.log +__DOTNET_CMD=$DOTNET_INSTALL_DIR/dotnet +__BUILD_TOOLS_DIR=$DIR/build_tools +__BUILD_TOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json +__BUILD_TOOLS_PACKAGE_VERSION=$(cat $DIR/BuildToolsVersion.txt) +__BUILD_TOOLS_PATH=$NUGET_PACKAGES/Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION/lib +__BUILD_TOOLS_SEMAPHORE=$__BUILD_TOOLS_DIR/init-tools.completed +__PROJECT_JSON_PATH=$__BUILD_TOOLS_DIR/$__BUILD_TOOLS_PACKAGE_VERSION +__PROJECT_JSON_FILE=$__PROJECT_JSON_PATH/project.json +__PROJECT_JSON_CONTENTS="{ \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \"$__BUILD_TOOLS_PACKAGE_VERSION\" }, \"frameworks\": { \"netcoreapp1.0\": { } } }" + +if [ ! -e "$__PROJECT_JSON_FILE" ]; then + mkdir -p "$__PROJECT_JSON_PATH" + echo "$__PROJECT_JSON_CONTENTS" > "$__PROJECT_JSON_FILE" + + if [ ! -d "$__BUILD_TOOLS_PATH" ]; then + echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." + "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 + + if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi + + fi + + echo "Initializing build tools..." + "$__BUILD_TOOLS_PATH/init-tools.sh" "$DIR" "$__DOTNET_CMD" "$__BUILD_TOOLS_DIR" >> "$__init_tools_log" 2>&1 + echo "Init-Tools completed for BuildTools Version: $__BUILD_TOOLS_PACKAGE_VERSION" > "$__BUILD_TOOLS_SEMAPHORE" + echo "Done initializing tools" +else + echo "Tools are already initialized" +fi From 3d44a2b189bfbd22b57eaa63845f5a0dfbddc696 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 7 Jul 2016 18:04:54 -0700 Subject: [PATCH 049/165] Adding support to pass parameters to msbuild through build.sh. Now we need to do it for powershell. --- run-build.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/run-build.sh b/run-build.sh index 2aff94d99..d92099b94 100755 --- a/run-build.sh +++ b/run-build.sh @@ -22,11 +22,14 @@ source "$REPOROOT/scripts/common/_prettyprint.sh" # Set nuget package cache under the repo export NUGET_PACKAGES="$REPOROOT/.nuget/packages" +args=( "$@" ) + while [[ $# > 0 ]]; do lowerI="$(echo $1 | awk '{print tolower($0)}')" case $lowerI in -c|--configuration) export CONFIGURATION=$2 + args=( "${args[@]/$2}" ) shift ;; --nopackage) @@ -56,9 +59,16 @@ while [[ $# > 0 ]]; do ;; esac + # removes the just processed argument from args + args=( "${args[@]/$1}" ) shift done +# $args array may have empty elements in it. +# The easiest way to remove them is to cast to string and back to array. +temp="${args[@]}" +args=($temp) + # Load Branch Info while read line; do if [[ $line != \#* ]]; then @@ -87,4 +97,4 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=$ARCHITECTURE \ No newline at end of file +dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" \ No newline at end of file From 0a12e1e82b29403db838962c6b45c11c593af1c7 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 8 Jul 2016 11:54:30 -0700 Subject: [PATCH 050/165] Passing through extra arguments to msbuild for our powershell script. --- run-build.ps1 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/run-build.ps1 b/run-build.ps1 index c64bf991d..74f48ccbd 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -7,7 +7,9 @@ param( [string]$Configuration="Debug", [string]$Architecture="x64", [switch]$NoPackage, - [switch]$Help) + [switch]$Help, + [Parameter(Position=0, ValueFromRemainingArguments=$true)] + $ExtraParameters) if($Help) { @@ -62,5 +64,5 @@ $env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" # Disable first run since we want to control all package sources $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=$Architecture +dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters if($LASTEXITCODE -ne 0) { throw "Failed to build" } From b1ca63c7de2fa0f144214e438125bb9c7a30ed9c Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 8 Jul 2016 16:10:08 -0700 Subject: [PATCH 051/165] Because we are using a CI that is still built for our old custom build, we are passing arguments there that we no longer need and that MSBuild does not understand. We can't pass them along to MSBuild, so we need to filter them out. This is what we are doing here. --- run-build.ps1 | 2 ++ run-build.sh | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/run-build.ps1 b/run-build.ps1 index 74f48ccbd..0ff6efd1b 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -6,6 +6,8 @@ param( [string]$Configuration="Debug", [string]$Architecture="x64", + # This is here just to eat away this parameter because CI still passes this in. + [string]$Targets="Default" [switch]$NoPackage, [switch]$Help, [Parameter(Position=0, ValueFromRemainingArguments=$true)] diff --git a/run-build.sh b/run-build.sh index d92099b94..35494371e 100755 --- a/run-build.sh +++ b/run-build.sh @@ -43,6 +43,10 @@ while [[ $# > 0 ]]; do ARCHITECTURE=$2 shift ;; + --targets) + # This is here just to eat away this parameter because CI still passes this in. + shift + ;; --help) echo "Usage: $0 [--configuration ] [--targets ] [--skip-prereqs] [--nopackage] [--docker ] [--help]" echo "" From eaf9d9603d3a83e8c95163e912c04b4b532d0f5b Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 8 Jul 2016 16:40:44 -0700 Subject: [PATCH 052/165] Fixing logic to remove already processed arguments in the case of bash scripts and adding a missing come in the case of the powershell script. --- run-build.ps1 | 2 +- run-build.sh | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/run-build.ps1 b/run-build.ps1 index 0ff6efd1b..22b61f32a 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -7,7 +7,7 @@ param( [string]$Configuration="Debug", [string]$Architecture="x64", # This is here just to eat away this parameter because CI still passes this in. - [string]$Targets="Default" + [string]$Targets="Default", [switch]$NoPackage, [switch]$Help, [Parameter(Position=0, ValueFromRemainingArguments=$true)] diff --git a/run-build.sh b/run-build.sh index 35494371e..7d004e534 100755 --- a/run-build.sh +++ b/run-build.sh @@ -29,22 +29,29 @@ while [[ $# > 0 ]]; do case $lowerI in -c|--configuration) export CONFIGURATION=$2 + args=( "${args[@]/$1}" ) args=( "${args[@]/$2}" ) shift ;; --nopackage) export DOTNET_BUILD_SKIP_PACKAGING=1 + args=( "${args[@]/$1}" ) ;; --skip-prereqs) # Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems export DOTNET_INSTALL_SKIP_PREREQS=1 + args=( "${args[@]/$1}" ) ;; --architecture) ARCHITECTURE=$2 + args=( "${args[@]/$1}" ) + args=( "${args[@]/$2}" ) shift ;; - --targets) - # This is here just to eat away this parameter because CI still passes this in. + # This is here just to eat away this parameter because CI still passes this in. + --targets) + args=( "${args[@]/$1}" ) + args=( "${args[@]/$2}" ) shift ;; --help) @@ -63,8 +70,6 @@ while [[ $# > 0 ]]; do ;; esac - # removes the just processed argument from args - args=( "${args[@]/$1}" ) shift done @@ -101,4 +106,6 @@ fi # Disable first run since we want to control all package sources export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 +echo "${args[@]}" + dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" \ No newline at end of file From 08e9bc903e49da130b77abed8ed3dd62c9cce8d1 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Mon, 11 Jul 2016 12:46:27 -0700 Subject: [PATCH 053/165] CLI Testing via msbuild (#3779) * Rebase * Remove Multi-Project Validator * Remove projectmodelserver tests * Enable test package creation * Incremental test restore * WiP * Enable Test Asset Project restore * Build Test Assets & Restore Test Projects * Build Test projects * Enable Test Execution also moves Test Targets to a well-known CLI Version [Stage 2] * Pass throuh existing telemetry profile * 2-space tabs * Revert TestTargets.cs * WiP PR feedback * Refactoring * Fix naming of RestoreTestAssetPackages * DotNetTest task * Fix merge issue * ExecuteWithCapturedOutput MSBuild considers StdErr output to be failures. This causes output of any test command which is expected to produce an error to be swallowed in the test. * Workaround for always-on tracing functionality in dotnet-test * Fix Path Separator Windows/Unix * Seperate package build from pack * Windows Pathing issues * PR Feedback * Workaround for msbuild #773 https://github.com/Microsoft/msbuild/issues/773 --- build.proj | 6 +- build/Microsoft.DotNet.Cli.Prepare.targets | 6 +- build/Microsoft.DotNet.Cli.Test.targets | 192 ++++++++++++++++++ build/test/ProjectsToTest.props | 31 +++ build/test/TestPackageProjects.props | 166 +++++++++++++++ build_projects/dotnet-cli-build/DotNetTool.cs | 49 +++++ .../dotnet-cli-build/TestTargets.cs | 20 -- .../commands/dotnet-test/TestHostTracing.cs | 5 + test/dotnet-build.Tests/BuildOutputTests.cs | 9 +- test/dotnet-publish.Tests/PublishTests.cs | 12 +- test/dotnet-run.Tests/RunTests.cs | 2 +- .../GivenThatWeWantToRunTestsInTheConsole.cs | 2 +- .../GivenAUnknownMessageHandler.cs | 4 +- .../GivenThatDotNetRunsCommands.cs | 2 +- tools/MultiProjectValidator/AnalysisResult.cs | 33 --- .../DependencyMismatch/DependencyGroup.cs | 53 ----- .../DependencyMismatch/DependencyInfo.cs | 22 -- .../AnalysisRules/DependencyMismatchRule.cs | 141 ------------- tools/MultiProjectValidator/IAnalysisRule.cs | 10 - .../MultiProjectValidator.xproj | 18 -- tools/MultiProjectValidator/Program.cs | 126 ------------ .../MultiProjectValidator/ProjectAnalyzer.cs | 43 ---- .../ProjectContextExtensions.cs | 17 -- tools/MultiProjectValidator/ProjectLoader.cs | 38 ---- tools/MultiProjectValidator/project.json | 35 ---- 25 files changed, 466 insertions(+), 576 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Test.targets create mode 100644 build/test/ProjectsToTest.props create mode 100644 build/test/TestPackageProjects.props delete mode 100644 tools/MultiProjectValidator/AnalysisResult.cs delete mode 100644 tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs delete mode 100644 tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs delete mode 100644 tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs delete mode 100644 tools/MultiProjectValidator/IAnalysisRule.cs delete mode 100644 tools/MultiProjectValidator/MultiProjectValidator.xproj delete mode 100644 tools/MultiProjectValidator/Program.cs delete mode 100644 tools/MultiProjectValidator/ProjectAnalyzer.cs delete mode 100644 tools/MultiProjectValidator/ProjectContextExtensions.cs delete mode 100644 tools/MultiProjectValidator/ProjectLoader.cs delete mode 100644 tools/MultiProjectValidator/project.json diff --git a/build.proj b/build.proj index 314ba3bdd..afac9ee44 100644 --- a/build.proj +++ b/build.proj @@ -61,13 +61,8 @@ - - - - - @@ -75,4 +70,5 @@ + diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 482997252..9e12176d9 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -22,7 +22,9 @@ - + + False + True $(Stage0Path) $(RepoRoot)/artifacts/$(Rid) @@ -104,7 +106,7 @@ - + diff --git a/build/Microsoft.DotNet.Cli.Test.targets b/build/Microsoft.DotNet.Cli.Test.targets new file mode 100644 index 000000000..e21ea029f --- /dev/null +++ b/build/Microsoft.DotNet.Cli.Test.targets @@ -0,0 +1,192 @@ + + + + + + + + + + : + %3b + $(Stage2Directory)$(PathListSeparator)$(PATH) + $(Stage2Directory) + $(TestArtifactsDir) + + + + + + + + + + + + + + + + / + \ + $(CommitCount) + $(BaseOutputDirectory)/tests + $(TestOutputDir)/packagesBuild + $(TestOutputDir)/packages + $(TestOutputDir)/artifacts + $(TestOutputDir)/results + $(RepoRoot)/test + $(DotnetStage2) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + --version-suffix %(TestPackageProject.VersionSuffix) + + + + + + + + %(TestPackageProjectFrameworks.Identity) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/test/ProjectsToTest.props b/build/test/ProjectsToTest.props new file mode 100644 index 000000000..940db34e6 --- /dev/null +++ b/build/test/ProjectsToTest.props @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/test/TestPackageProjects.props b/build/test/TestPackageProjects.props new file mode 100644 index 000000000..37fe9d676 --- /dev/null +++ b/build/test/TestPackageProjects.props @@ -0,0 +1,166 @@ + + + + + + PackageWithFakeNativeDep + False + True + $(TestPackageBuildVersionSuffix) + True + net45 + + + dotnet-dependency-context-test + True + True + $(TestPackageBuildVersionSuffix) + True + netcoreapp1.0 + + + dotnet-dependency-tool-invoker + True + True + $(TestPackageBuildVersionSuffix) + True + netcoreapp1.0 + + + dotnet-desktop-and-portable + True + True + $(TestPackageBuildVersionSuffix) + True + net451;netcoreapp1.0 + + + dotnet-desktop-binding-redirects + True + $(DesktopAvailable) + $(TestPackageBuildVersionSuffix) + True + net451 + + + dotnet-hello + True + True + + True + netcoreapp1.0 + + + dotnet-hello + True + True + + True + netcoreapp1.0 + + + dotnet-portable + True + True + + True + netcoreapp1.0 + + + ToolWithOutputName + True + True + + True + netcoreapp1.0 + + + Microsoft.DotNet.Cli.Utils + True + True + $(TestPackageBuildVersionSuffix) + False + net451;netstandard1.6 + + + Microsoft.DotNet.ProjectModel + True + True + $(TestPackageBuildVersionSuffix) + False + net451;netstandard1.6 + + + Microsoft.DotNet.ProjectModel.Loader + True + True + $(TestPackageBuildVersionSuffix) + False + netstandard1.6 + + + Microsoft.DotNet.ProjectModel.Workspaces + True + True + $(TestPackageBuildVersionSuffix) + False + netstandard1.6 + + + Microsoft.DotNet.InternalAbstractions + True + True + $(TestPackageBuildVersionSuffix) + False + net451;netstandard1.3 + + + Microsoft.Extensions.DependencyModel + True + True + $(TestPackageBuildVersionSuffix) + False + net451;netstandard1.6 + + + Microsoft.Extensions.Testing.Abstractions + True + True + $(TestPackageBuildVersionSuffix) + False + net451;netstandard1.6 + + + Microsoft.DotNet.Compiler.Common + True + True + $(TestPackageBuildVersionSuffix) + False + netstandard1.6 + + + Microsoft.DotNet.Files + True + True + $(TestPackageBuildVersionSuffix) + False + netstandard1.6 + + + dotnet-compile-fsc + True + True + $(TestPackageBuildVersionSuffix) + True + netcoreapp1.0 + + + + + + + + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs index 388cacade..4a27b8bfa 100644 --- a/build_projects/dotnet-cli-build/DotNetTool.cs +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -80,4 +80,53 @@ namespace Microsoft.DotNet.Cli.Build return null; } } + + public class DotNetTest : DotNetTool + { + protected override string Command + { + get { return "test"; } + } + + protected override string Args + { + get { return $"{GetConfiguration()} {GetXml()} {GetNoTrait()}"; } + } + + public string Configuration { get; set; } + + public string Xml { get; set; } + + public string NoTrait { get; set; } + + private string GetConfiguration() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"--configuration {Configuration}"; + } + + return null; + } + + private string GetNoTrait() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"-notrait {NoTrait}"; + } + + return null; + } + + private string GetXml() + { + if (!string.IsNullOrEmpty(Xml)) + { + return $"-xml {Xml}"; + } + + return null; + } + } } diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs index b18bee36f..e616c00dc 100644 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ b/build_projects/dotnet-cli-build/TestTargets.cs @@ -73,7 +73,6 @@ namespace Microsoft.DotNet.Cli.Build RestoreTests(c); BuildTests(c); RunTests(c); - ValidateDependencies(c); return c.Success(); } @@ -350,25 +349,6 @@ namespace Microsoft.DotNet.Cli.Build return c.Success(); } - public static BuildTargetResult ValidateDependencies(BuildTargetContext c) - { - var configuration = c.BuildContext.Get("Configuration"); - var dotnet = DotNetCli.Stage2; - - c.Info("Publishing MultiProjectValidator"); - dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "tools", "MultiProjectValidator")) - .Execute() - .EnsureSuccessful(); - - var validator = Path.Combine(Dirs.Output, "tools", $"pjvalidate{Constants.ExeSuffix}"); - - Cmd(validator, Path.Combine(c.BuildContext.BuildDirectory, "src")) - .Execute(); - - return c.Success(); - } - private static IEnumerable GetTestProjects() { List testProjects = new List(); diff --git a/src/dotnet/commands/dotnet-test/TestHostTracing.cs b/src/dotnet/commands/dotnet-test/TestHostTracing.cs index 809c3f70b..65d9a440c 100644 --- a/src/dotnet/commands/dotnet-test/TestHostTracing.cs +++ b/src/dotnet/commands/dotnet-test/TestHostTracing.cs @@ -20,5 +20,10 @@ namespace Microsoft.DotNet.Tools.Test Source.Listeners.Add(new TextWriterTraceListener(Console.Error)); } + + public static void ClearListeners() + { + Source.Listeners.Clear(); + } } } diff --git a/test/dotnet-build.Tests/BuildOutputTests.cs b/test/dotnet-build.Tests/BuildOutputTests.cs index ebf5bc522..e0d508001 100644 --- a/test/dotnet-build.Tests/BuildOutputTests.cs +++ b/test/dotnet-build.Tests/BuildOutputTests.cs @@ -240,9 +240,12 @@ namespace Microsoft.DotNet.Tools.Builder.Tests var testInstance = testAssetsManager.CreateTestInstance("TestProjectWithUnresolvedDependency") .WithLockFiles(); - var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot }.Execute(); - restoreResult.Should().Fail(); - new DirectoryInfo(testInstance.TestRoot).Should().HaveFile("project.lock.json"); + var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot } + .ExecuteWithCapturedOutput() + .Should().Fail(); + + new DirectoryInfo(testInstance.TestRoot) + .Should().HaveFile("project.lock.json"); var buildCmd = new BuildCommand(testInstance.TestRoot); var buildResult = buildCmd.ExecuteWithCapturedOutput(); diff --git a/test/dotnet-publish.Tests/PublishTests.cs b/test/dotnet-publish.Tests/PublishTests.cs index 924bad75b..2246a42c9 100644 --- a/test/dotnet-publish.Tests/PublishTests.cs +++ b/test/dotnet-publish.Tests/PublishTests.cs @@ -137,7 +137,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests string testProject = _getProjectJson(instance.TestRoot, "TestApp"); var publishCommand = new PublishCommand(testProject); - publishCommand.Execute().Should().Fail(); + publishCommand.ExecuteWithCapturedOutput().Should().Fail(); } [Fact] @@ -202,7 +202,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests var testProject = _getProjectJson(instance.TestRoot, "TestLibrary"); var publishCommand = new PublishCommand(testProject); - publishCommand.Execute().Should().Fail(); + publishCommand.ExecuteWithCapturedOutput().Should().Fail(); } [WindowsOnlyFact()] @@ -268,7 +268,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests var testProject = _getProjectJson(instance.TestRoot, "CompileFail"); var publishCommand = new PublishCommand(testProject); - publishCommand.Execute().Should().Fail(); + publishCommand.ExecuteWithCapturedOutput().Should().Fail(); } [Fact] @@ -280,7 +280,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests var testProject = _getProjectJson(instance.TestRoot, "TestApp"); var publishCommand = new PublishCommand(testProject, noBuild: true); - publishCommand.Execute().Should().Fail(); + publishCommand.ExecuteWithCapturedOutput().Should().Fail(); } [Fact] @@ -341,7 +341,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests using (var dir = new DisposableDirectory(Temp)) { var command = new TestCommand("dotnet"); - command.Execute($"publish {dir.Path}").Should().Fail(); + command.ExecuteWithCapturedOutput($"publish {dir.Path}").Should().Fail(); } } @@ -352,7 +352,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests { var command = new TestCommand("dotnet"); string temp = Path.Combine(dir.Path, "project.json"); - command.Execute($"publish {temp}").Should().Fail(); + command.ExecuteWithCapturedOutput($"publish {temp}").Should().Fail(); } } diff --git a/test/dotnet-run.Tests/RunTests.cs b/test/dotnet-run.Tests/RunTests.cs index 129387f4c..8cdf12de6 100644 --- a/test/dotnet-run.Tests/RunTests.cs +++ b/test/dotnet-run.Tests/RunTests.cs @@ -38,7 +38,7 @@ namespace Microsoft.DotNet.Tools.Run.Tests TestInstance instance = TestAssetsManager.CreateTestInstance(Path.Combine(RunTestsBase, "TestAppMultiTargetNoCoreClr")) .WithLockFiles() .WithBuildArtifacts(); - new RunCommand(instance.TestRoot).Execute().Should().Fail(); + new RunCommand(instance.TestRoot).ExecuteWithCapturedOutput().Should().Fail(); } [Fact] diff --git a/test/dotnet-test.Tests/GivenThatWeWantToRunTestsInTheConsole.cs b/test/dotnet-test.Tests/GivenThatWeWantToRunTestsInTheConsole.cs index f7ec67029..93db4eff0 100644 --- a/test/dotnet-test.Tests/GivenThatWeWantToRunTestsInTheConsole.cs +++ b/test/dotnet-test.Tests/GivenThatWeWantToRunTestsInTheConsole.cs @@ -42,7 +42,7 @@ namespace Microsoft.Dotnet.Tools.Test.Tests public void It_returns_a_failure_when_it_fails_to_run_the_tests() { var testCommand = new DotnetTestCommand(); - var result = testCommand.Execute( + var result = testCommand.ExecuteWithCapturedOutput( $"{_projectFilePath} -o {Path.Combine(AppContext.BaseDirectory, "nonExistingFolder")} --no-build"); result.Should().Fail(); } diff --git a/test/dotnet-test.UnitTests/GivenAUnknownMessageHandler.cs b/test/dotnet-test.UnitTests/GivenAUnknownMessageHandler.cs index ff9200f37..263dd22e6 100644 --- a/test/dotnet-test.UnitTests/GivenAUnknownMessageHandler.cs +++ b/test/dotnet-test.UnitTests/GivenAUnknownMessageHandler.cs @@ -10,11 +10,13 @@ using FluentAssertions; namespace Microsoft.Dotnet.Tools.Test.Tests { - public class GivenAUnknownMessageHandler + public class GivenAnUnknownMessageHandler { [Fact] public void It_throws_InvalidOperationException_and_sends_an_error_when_the_message_is_not_handled() { + TestHostTracing.ClearListeners(); + const string expectedError = "No handler for message 'Test Message' when at state 'InitialState'"; var dotnetTestMock = new Mock(); diff --git a/test/dotnet.Tests/GivenThatDotNetRunsCommands.cs b/test/dotnet.Tests/GivenThatDotNetRunsCommands.cs index 376a0b851..b944c302e 100644 --- a/test/dotnet.Tests/GivenThatDotNetRunsCommands.cs +++ b/test/dotnet.Tests/GivenThatDotNetRunsCommands.cs @@ -18,7 +18,7 @@ namespace Microsoft.DotNet.Tests new RestoreCommand() .WithWorkingDirectory(testInstance.TestRoot) - .Execute() + .ExecuteWithCapturedOutput() .Should() .Fail(); new DirectoryInfo(testInstance.TestRoot) diff --git a/tools/MultiProjectValidator/AnalysisResult.cs b/tools/MultiProjectValidator/AnalysisResult.cs deleted file mode 100644 index 30f8c2f33..000000000 --- a/tools/MultiProjectValidator/AnalysisResult.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections.Generic; - -namespace MultiProjectValidator -{ - public class AnalysisResult - { - - private IEnumerable _messages; - private bool _passed; - - public AnalysisResult(IEnumerable messages, bool passed) - { - _messages = messages; - _passed = passed; - } - - public IEnumerable Messages - { - get - { - return _messages; - } - } - - public bool Passed - { - get - { - return _passed; - } - } - } -} diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs deleted file mode 100644 index e1b889f0f..000000000 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace MultiProjectValidator.AnalysisRules.DependencyMismatch -{ - internal class DependencyGroup - { - public static DependencyGroup CreateWithEntry(DependencyInfo dependencyInfo) - { - var dependencyGroup = new DependencyGroup - { - DependencyName = dependencyInfo.Name, - VersionDependencyInfoMap = new Dictionary>() - }; - - dependencyGroup.AddEntry(dependencyInfo); - - return dependencyGroup; - } - - public string DependencyName { get; private set; } - public Dictionary> VersionDependencyInfoMap { get; private set; } - - public bool HasConflict - { - get - { - return VersionDependencyInfoMap.Count > 1; - } - } - - public void AddEntry(DependencyInfo dependencyInfo) - { - if (!dependencyInfo.Name.Equals(DependencyName, StringComparison.OrdinalIgnoreCase)) - { - throw new Exception("Added dependency does not match group"); - } - - if (VersionDependencyInfoMap.ContainsKey(dependencyInfo.Version)) - { - VersionDependencyInfoMap[dependencyInfo.Version].Add(dependencyInfo); - } - else - { - VersionDependencyInfoMap[dependencyInfo.Version] = new List() - { - dependencyInfo - }; - } - } - - } -} diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs deleted file mode 100644 index df6570093..000000000 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using Microsoft.DotNet.ProjectModel; - -namespace MultiProjectValidator.AnalysisRules.DependencyMismatch -{ - internal class DependencyInfo - { - public static DependencyInfo Create(ProjectContext context, LibraryDescription library) - { - return new DependencyInfo - { - ProjectPath = context.ProjectFile.ProjectFilePath, - Version = library.Identity.Version?.ToString() ?? String.Empty, - Name = library.Identity.Name - }; - } - - public string ProjectPath { get; private set; } - public string Version { get; private set; } - public string Name { get; private set; } - } -} diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs deleted file mode 100644 index 3900639d1..000000000 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.DotNet.ProjectModel; -using System.Text; -using MultiProjectValidator.AnalysisRules.DependencyMismatch; - -namespace MultiProjectValidator.AnalysisRules -{ - public class DependencyMismatchRule : IAnalysisRule - { - public AnalysisResult Evaluate(IEnumerable projectContexts) - { - var filteredContexts = FilterContextList(projectContexts); - var targetGroupedContexts = GroupContextsByTarget(filteredContexts); - - var failureMessages = EvaluateProjectContextTargetGroups(targetGroupedContexts); - var pass = failureMessages.Count() == 0; - - var result = new AnalysisResult(failureMessages, pass); - return result; - } - - private IEnumerable FilterContextList(IEnumerable projectContexts) - { - return projectContexts.Where(context=> !context.TargetIsDesktop()); - } - - private IEnumerable EvaluateProjectContextTargetGroups(Dictionary> targetGroupedProjectContexts) - { - var failureMessages = new List(); - - foreach (var target in targetGroupedProjectContexts.Keys) - { - var targetProjectContextGroup = targetGroupedProjectContexts[target]; - - var groupFailureMessages = EvaluateProjectContextTargetGroup(targetProjectContextGroup); - - if (groupFailureMessages.Count > 0) - { - string aggregateFailureMessage = $"Failures for Target {target} {Environment.NewLine}{Environment.NewLine}" - + string.Join("", groupFailureMessages); - - failureMessages.Add(aggregateFailureMessage); - } - } - - return failureMessages; - } - - private List EvaluateProjectContextTargetGroup(IEnumerable targetProjectContextGroup) - { - var failedMessages = new List(); - - var dependencyGroups = CreateDependencyGroups(targetProjectContextGroup); - - foreach (var dependencyGroup in dependencyGroups) - { - if(dependencyGroup.HasConflict) - { - failedMessages.Add(GetDependencyGroupConflictMessage(dependencyGroup)); - } - } - - return failedMessages; - } - - private string GetDependencyGroupConflictMessage(DependencyGroup dependencyGroup) - { - StringBuilder sb = new StringBuilder(); - - sb.Append($"Conflict for {dependencyGroup.DependencyName} in projects:{Environment.NewLine}"); - - foreach (var version in dependencyGroup.VersionDependencyInfoMap.Keys) - { - var dependencyInfoList = dependencyGroup.VersionDependencyInfoMap[version]; - - foreach (var dependencyInfo in dependencyInfoList) - { - sb.Append($"Version: {dependencyInfo.Version} Path: {dependencyInfo.ProjectPath} {Environment.NewLine}"); - } - } - sb.Append(Environment.NewLine); - - return sb.ToString(); - } - - private Dictionary> GroupContextsByTarget(IEnumerable projectContexts) - { - var targetContextMap = new Dictionary>(); - foreach (var context in projectContexts) - { - var target = context.TargetFramework + context.RuntimeIdentifier; - - if (targetContextMap.ContainsKey(target)) - { - targetContextMap[target].Add(context); - } - else - { - targetContextMap[target] = new List() - { - context - }; - } - } - - return targetContextMap; - } - - private List CreateDependencyGroups(IEnumerable projectContexts) - { - var libraryNameDependencyGroupMap = new Dictionary(); - - foreach (var projectContext in projectContexts) - { - var libraries = projectContext.LibraryManager.GetLibraries(); - - foreach (var library in libraries) - { - var dependencyInfo = DependencyInfo.Create(projectContext, library); - - if (libraryNameDependencyGroupMap.ContainsKey(dependencyInfo.Name)) - { - var dependencyGroup = libraryNameDependencyGroupMap[dependencyInfo.Name]; - - dependencyGroup.AddEntry(dependencyInfo); - } - else - { - var dependencyGroup = DependencyGroup.CreateWithEntry(dependencyInfo); - - libraryNameDependencyGroupMap[dependencyInfo.Name] = dependencyGroup; - } - } - } - - return libraryNameDependencyGroupMap.Values.ToList(); - } - } -} diff --git a/tools/MultiProjectValidator/IAnalysisRule.cs b/tools/MultiProjectValidator/IAnalysisRule.cs deleted file mode 100644 index 7a7adbc68..000000000 --- a/tools/MultiProjectValidator/IAnalysisRule.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; -using Microsoft.DotNet.ProjectModel; - -namespace MultiProjectValidator -{ - public interface IAnalysisRule - { - AnalysisResult Evaluate(IEnumerable projectContexts); - } -} diff --git a/tools/MultiProjectValidator/MultiProjectValidator.xproj b/tools/MultiProjectValidator/MultiProjectValidator.xproj deleted file mode 100644 index 27627c2bb..000000000 --- a/tools/MultiProjectValidator/MultiProjectValidator.xproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 08a68c6a-86f6-4ed2-89a7-b166d33e9f85 - ProjectSanity - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - \ No newline at end of file diff --git a/tools/MultiProjectValidator/Program.cs b/tools/MultiProjectValidator/Program.cs deleted file mode 100644 index d82d5da0f..000000000 --- a/tools/MultiProjectValidator/Program.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using Microsoft.DotNet.ProjectModel; -using System.Linq; - -namespace MultiProjectValidator -{ - public class Program - { - public static int Main(string[] args) - { - - string rootPath = null; - - try - { - rootPath = ParseAndValidateArgs(args); - } - catch - { - return 1; - } - - List projects = null; - try - { - projects = ProjectLoader.Load(rootPath); - } - catch(Exception) - { - Console.WriteLine("Failed to load projects from path: " + rootPath); - return 1; - } - - var analyzer = ProjectAnalyzer.Create(projects); - var analysisResults = analyzer.DoAnalysis(); - var failed = analysisResults.Where((a) => !a.Passed).Any(); - - PrintAnalysisResults(analysisResults); - - return failed ? 1 : 0; - } - - private static void PrintAnalysisResults(List analysisResults) - { - Console.WriteLine("Project Validation Results"); - - var failedCount = analysisResults.Where((a) => !a.Passed).Count(); - var passedCount = analysisResults.Where((a) => a.Passed).Count(); - - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine($"{passedCount} Successful Analysis Rules"); - - Console.ForegroundColor = ConsoleColor.Yellow; - Console.WriteLine($"{failedCount} Failed Analysis Rules"); - - if (failedCount != 0) - { - Console.WriteLine("Failure Messages"); - - foreach(var result in analysisResults) - { - if (!result.Passed) - { - foreach(var message in result.Messages) - { - Console.WriteLine(message); - } - } - } - } - Console.ForegroundColor = ConsoleColor.White; - } - - private static bool AnyAnalysisFailed(List analysisResults) - { - foreach (var result in analysisResults) - { - if (!result.Passed) - { - return true; - } - } - return false; - } - - private static string ParseAndValidateArgs(string[] args) - { - if (args.Length != 1) - { - PrintHelp(); - throw new Exception(); - } - - string rootPath = args[0]; - - if (!Directory.Exists(rootPath)) - { - Console.WriteLine("Root Directory does not exist: " + rootPath); - throw new Exception(); - } - - return rootPath; - } - - private static void PrintHelp() - { - var help = @" -Multi-Project Validator - -Description: -This tool recursively searches for project.json's from the given root path. -It then applies a set of analysis rules, determines whether they pass/fail -and then sets exit code to reflect. - -Note: -Ensure all analyzed project.json have been restored prior to running this tool. - -Usage: -pjvalidate [root path of recursive search]"; - - Console.WriteLine(help); - } - } -} diff --git a/tools/MultiProjectValidator/ProjectAnalyzer.cs b/tools/MultiProjectValidator/ProjectAnalyzer.cs deleted file mode 100644 index 8a4de240b..000000000 --- a/tools/MultiProjectValidator/ProjectAnalyzer.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Collections.Generic; -using Microsoft.DotNet.ProjectModel; -using MultiProjectValidator.AnalysisRules; - -namespace MultiProjectValidator -{ - public class ProjectAnalyzer - { - - public static ProjectAnalyzer Create(List projectContexts) - { - // Any Additional rules would be added here - var rules = new List - { - new DependencyMismatchRule() - }; - - return new ProjectAnalyzer(rules, projectContexts); - } - - private List _projectContexts; - private List _rules; - - private ProjectAnalyzer(List rules, List projectContexts) - { - _rules = rules; - _projectContexts = projectContexts; - } - - public List DoAnalysis() - { - var results = new List(); - - foreach(var rule in _rules) - { - results.Add(rule.Evaluate(_projectContexts)); - } - - return results; - } - - } -} diff --git a/tools/MultiProjectValidator/ProjectContextExtensions.cs b/tools/MultiProjectValidator/ProjectContextExtensions.cs deleted file mode 100644 index 64f8de36c..000000000 --- a/tools/MultiProjectValidator/ProjectContextExtensions.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.IO; -using System.Collections.Generic; -using Microsoft.DotNet.ProjectModel; - -namespace MultiProjectValidator -{ - public static class ProjectContextExtensions - { - private static readonly string s_desktopTfmPrefix = ".NETFramework"; - public static bool TargetIsDesktop(this ProjectContext context) - { - var targetFramework = context.TargetFramework.ToString(); - - return targetFramework.StartsWith(s_desktopTfmPrefix); - } - } -} diff --git a/tools/MultiProjectValidator/ProjectLoader.cs b/tools/MultiProjectValidator/ProjectLoader.cs deleted file mode 100644 index 097697881..000000000 --- a/tools/MultiProjectValidator/ProjectLoader.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.IO; -using System.Collections.Generic; -using Microsoft.DotNet.ProjectModel; - -namespace MultiProjectValidator -{ - public class ProjectLoader - { - private static readonly string s_projectFileName = "project.json"; - - public static List Load(string rootPath, bool recursive=true) - { - var projectFiles = DiscoverProjectFiles(rootPath); - var projectContextList = LoadProjectContexts(projectFiles); - - return projectContextList; - } - - private static string[] DiscoverProjectFiles(string rootPath) - { - return Directory.GetFiles(rootPath, s_projectFileName, SearchOption.AllDirectories); - } - - private static List LoadProjectContexts(string[] projectFiles) - { - var projectContexts = new List(); - - foreach (var file in projectFiles) - { - var fileTargetContexts = ProjectContext.CreateContextForEachTarget(file); - - projectContexts.AddRange(fileTargetContexts); - } - - return projectContexts; - } - } -} diff --git a/tools/MultiProjectValidator/project.json b/tools/MultiProjectValidator/project.json deleted file mode 100644 index a005cb00e..000000000 --- a/tools/MultiProjectValidator/project.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": "1.0.0-*", - "name": "pjvalidate", - "buildOptions": { - "emitEntryPoint": true - }, - "dependencies": { - "Microsoft.NETCore.App": "1.0.0", - "Microsoft.DotNet.ProjectModel": { - "target": "project" - }, - "Microsoft.DotNet.Cli.Utils": { - "target": "project" - } - }, - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "dnxcore50" - ] - } - }, - "runtimes": { - "win7-x64": {}, - "win7-x86": {}, - "osx.10.11-x64": {}, - "ubuntu.14.04-x64": {}, - "ubuntu.16.04-x64": {}, - "centos.7-x64": {}, - "rhel.7.2-x64": {}, - "debian.8-x64": {}, - "fedora.23-x64": {}, - "opensuse.13.2-x64": {} - } -} From fd077bbf28dee75bcbd1344f75205147ac06ea93 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 12 Jul 2016 11:23:34 -0700 Subject: [PATCH 054/165] Adding a comment about the code that removes empty spaces from the arguments array but also breaks quoted arguments. We are picking the devil we know in this case. --- build.sh | 2 ++ run-build.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build.sh b/build.sh index 2c9737f7f..2177e91b7 100755 --- a/build.sh +++ b/build.sh @@ -44,6 +44,8 @@ done # $args array may have empty elements in it. # The easiest way to remove them is to cast to string and back to array. +# This will actually break quoted arguments, arguments like +# -test "hello world" will be broken into three arguments instead of two, as it should. temp="${args[@]}" args=($temp) diff --git a/run-build.sh b/run-build.sh index 7d004e534..623e339af 100755 --- a/run-build.sh +++ b/run-build.sh @@ -75,6 +75,8 @@ done # $args array may have empty elements in it. # The easiest way to remove them is to cast to string and back to array. +# This will actually break quoted arguments, arguments like +# -test "hello world" will be broken into three arguments instead of two, as it should. temp="${args[@]}" args=($temp) From 703da0da3e140ee970aa271ac9a716ca5bb41795 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 12 Jul 2016 18:44:16 -0500 Subject: [PATCH 055/165] Microsoft.NuGet.ImportBefore and ImportAfter Add Microsoft.NuGet.ImportBefore and ImportAfter files so .nuget.props and .nuget.targets files get picked up invoking 'dotnet build3'. I also fixed some .xproj and .sln file issues to get our code to work in VS. --- Microsoft.DotNet.Cli.sln | 57 ++++++------------- .../Microsoft.DotNet.Configurer.xproj | 2 +- .../Microsoft.NuGet.ImportBefore.props | 17 ++++++ .../Microsoft.NuGet.ImportAfter.targets | 17 ++++++ src/dotnet/project.json | 3 + 5 files changed, 54 insertions(+), 42 deletions(-) create mode 100644 src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props create mode 100644 src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 4cdf71157..f40f116b7 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.25123.0 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED2FE3E2-F7E7-4389-8231-B65123F2076F}" EndProject @@ -24,10 +24,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.Testin EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{0722D325-24C8-4E83-B5AF-0A083E7F0749}" -EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MultiProjectValidator", "tools\MultiProjectValidator\MultiProjectValidator.xproj", "{08A68C6A-86F6-4ED2-89A7-B166D33E9F85}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.DependencyModel", "src\Microsoft.Extensions.DependencyModel\Microsoft.Extensions.DependencyModel.xproj", "{688870C8-9843-4F9E-8576-D39290AD0F25}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EndToEnd", "test\EndToEnd\EndToEnd.xproj", "{65741CB1-8AEE-4C66-8198-10A7EA0E4258}" @@ -44,8 +40,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-compile.Tests", "tes EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-publish.Tests", "test\dotnet-publish.Tests\dotnet-publish.Tests.xproj", "{386D412C-003C-47B1-8258-0E35865CB7C4}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-projectmodel-server.Tests", "test\dotnet-projectmodel-server.Tests\dotnet-projectmodel-server.Tests.xproj", "{11C77123-E4DA-499F-8900-80C88C2C69F2}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Files", "src\Microsoft.DotNet.Files\Microsoft.DotNet.Files.xproj", "{D521DD9F-0614-4929-93B4-D8FA5682C174}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet.Tests", "test\dotnet.Tests\dotnet.Tests.xproj", "{CB710268-4A82-48E4-9531-FAF1C8F78F4B}" @@ -126,9 +120,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build3.Tests", "test EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}" ProjectSection(SolutionItems) = preProject + build\Microsoft.DotNet.Cli.Compile.targets = build\Microsoft.DotNet.Cli.Compile.targets build\Microsoft.DotNet.Cli.Monikers.props = build\Microsoft.DotNet.Cli.Monikers.props build\Microsoft.DotNet.Cli.Package.targets = build\Microsoft.DotNet.Cli.Package.targets build\Microsoft.DotNet.Cli.Prepare.targets = build\Microsoft.DotNet.Cli.Prepare.targets + build\Microsoft.DotNet.Cli.Test.targets = build\Microsoft.DotNet.Cli.Test.targets EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{FD7D515A-D10F-4F49-B8AE-21CF7ED071AE}" @@ -141,6 +137,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{FD7D build\package\Microsoft.DotNet.Cli.Nupkg.targets = build\package\Microsoft.DotNet.Cli.Nupkg.targets EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "compile", "compile", "{8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9}" + ProjectSection(SolutionItems) = preProject + build\compile\Microsoft.DotNet.Cli.LzmaArchive.targets = build\compile\Microsoft.DotNet.Cli.LzmaArchive.targets + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2DE2-47F6-8C35-3CF0589CF2B8}" + ProjectSection(SolutionItems) = preProject + build\test\ProjectsToTest.props = build\test\ProjectsToTest.props + build\test\TestPackageProjects.props = build\test\TestPackageProjects.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -233,22 +240,6 @@ Global {DCDFE282-03DE-4DBC-B90C-CC3CE3EC8162}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {DCDFE282-03DE-4DBC-B90C-CC3CE3EC8162}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {DCDFE282-03DE-4DBC-B90C-CC3CE3EC8162}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Debug|Any CPU.Build.0 = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Debug|x64.ActiveCfg = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Debug|x64.Build.0 = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Release|Any CPU.ActiveCfg = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Release|Any CPU.Build.0 = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Release|x64.ActiveCfg = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.Release|x64.Build.0 = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {688870C8-9843-4F9E-8576-D39290AD0F25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {688870C8-9843-4F9E-8576-D39290AD0F25}.Debug|Any CPU.Build.0 = Debug|Any CPU {688870C8-9843-4F9E-8576-D39290AD0F25}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -361,22 +352,6 @@ Global {386D412C-003C-47B1-8258-0E35865CB7C4}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {386D412C-003C-47B1-8258-0E35865CB7C4}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {386D412C-003C-47B1-8258-0E35865CB7C4}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Debug|x64.ActiveCfg = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Debug|x64.Build.0 = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Release|Any CPU.Build.0 = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Release|x64.ActiveCfg = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.Release|x64.Build.0 = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {11C77123-E4DA-499F-8900-80C88C2C69F2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {D521DD9F-0614-4929-93B4-D8FA5682C174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D521DD9F-0614-4929-93B4-D8FA5682C174}.Debug|Any CPU.Build.0 = Debug|Any CPU {D521DD9F-0614-4929-93B4-D8FA5682C174}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -931,7 +906,6 @@ Global {A16958E1-24C7-4F1E-B317-204AD91625DD} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {BD7833F8-3209-4682-BF75-B4BCA883E279} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {DCDFE282-03DE-4DBC-B90C-CC3CE3EC8162} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} - {08A68C6A-86F6-4ED2-89A7-B166D33E9F85} = {0722D325-24C8-4E83-B5AF-0A083E7F0749} {688870C8-9843-4F9E-8576-D39290AD0F25} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {65741CB1-8AEE-4C66-8198-10A7EA0E4258} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} @@ -940,7 +914,6 @@ Global {833FFEE1-7EED-4F51-8DFD-946D48833333} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {833FFEE1-7EED-4F51-8DFD-946D48893D6E} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {386D412C-003C-47B1-8258-0E35865CB7C4} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} - {11C77123-E4DA-499F-8900-80C88C2C69F2} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {D521DD9F-0614-4929-93B4-D8FA5682C174} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {CB710268-4A82-48E4-9531-FAF1C8F78F4B} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {920B71D8-62DA-4F5E-8A26-926C113F1D97} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} @@ -980,5 +953,7 @@ Global {35B19F22-B8C0-4849-9C35-3F809B7588B8} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {49D7318E-D198-4E2B-BBEA-3A24D805F88D} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108} + {8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108} + {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} EndGlobalSection EndGlobal diff --git a/src/Microsoft.DotNet.Configurer/Microsoft.DotNet.Configurer.xproj b/src/Microsoft.DotNet.Configurer/Microsoft.DotNet.Configurer.xproj index f533d0dad..733d0d508 100644 --- a/src/Microsoft.DotNet.Configurer/Microsoft.DotNet.Configurer.xproj +++ b/src/Microsoft.DotNet.Configurer/Microsoft.DotNet.Configurer.xproj @@ -9,7 +9,7 @@ e5ed47ef-bf25-4da9-a7fe-290c642cbf0f Microsoft.DotNet.Configurer .\obj - .\bin\ + ..\..\artifacts\bin diff --git a/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props new file mode 100644 index 000000000..b535067fb --- /dev/null +++ b/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.NuGet.props + + + diff --git a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets new file mode 100644 index 000000000..b1da40f46 --- /dev/null +++ b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.NuGet.targets + + + diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 35116b1ef..47041df68 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -21,6 +21,9 @@ ] } }, + "publishOptions": { + "include": "14.1/**" + }, "dependencies": { "NuGet.Commands": { "version": "3.5.0-beta2-1484", From 610626dce3be2c3a75d51d0cba0f88f495779ca5 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 16:52:58 -0700 Subject: [PATCH 056/165] version badge target --- .../publish/Microsoft.DotNet.Cli.Badge.targets | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 build/publish/Microsoft.DotNet.Cli.Badge.targets diff --git a/build/publish/Microsoft.DotNet.Cli.Badge.targets b/build/publish/Microsoft.DotNet.Cli.Badge.targets new file mode 100644 index 000000000..4d1dc7ef6 --- /dev/null +++ b/build/publish/Microsoft.DotNet.Cli.Badge.targets @@ -0,0 +1,17 @@ + + + + + $(RepoRoot)/resources/images/version_badge.svg + + + + + + + \ No newline at end of file From 9229db2503f3d893da5c0ddab0ee70bbddeab9eb Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 17:04:24 -0700 Subject: [PATCH 057/165] Wire version badge in publish targets --- build.proj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.proj b/build.proj index afac9ee44..bce9d2b0e 100644 --- a/build.proj +++ b/build.proj @@ -63,7 +63,7 @@ - + @@ -71,4 +71,7 @@ + + + From 16bedef2c5a522c9190d32d815f26f20bfc459dc Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 12 Jul 2016 17:10:48 -0700 Subject: [PATCH 058/165] Piotrp msft/msbuild/incremental test (#3842) * Incremental Testing - Part 1 * Fix 'clean' bug * Remove --fallbacksource from TestAssetPackage restore. --- build/Microsoft.DotNet.Cli.Test.targets | 92 ++++++--- build/test/TestPackageProjects.props | 188 ++++++++++++++---- .../dotnet-cli-build/DotNetBuild.cs | 66 ++++++ build_projects/dotnet-cli-build/DotNetPack.cs | 90 +++++++++ .../dotnet-cli-build/DotNetRestore.cs | 42 ++++ build_projects/dotnet-cli-build/DotNetTest.cs | 54 +++++ build_projects/dotnet-cli-build/DotNetTool.cs | 74 ------- 7 files changed, 457 insertions(+), 149 deletions(-) create mode 100644 build_projects/dotnet-cli-build/DotNetBuild.cs create mode 100644 build_projects/dotnet-cli-build/DotNetPack.cs create mode 100644 build_projects/dotnet-cli-build/DotNetRestore.cs create mode 100644 build_projects/dotnet-cli-build/DotNetTest.cs diff --git a/build/Microsoft.DotNet.Cli.Test.targets b/build/Microsoft.DotNet.Cli.Test.targets index e21ea029f..3ac5f31b7 100644 --- a/build/Microsoft.DotNet.Cli.Test.targets +++ b/build/Microsoft.DotNet.Cli.Test.targets @@ -3,6 +3,9 @@ + + + - - - / \ $(CommitCount) - $(BaseOutputDirectory)/tests - $(TestOutputDir)/packagesBuild - $(TestOutputDir)/packages - $(TestOutputDir)/artifacts - $(TestOutputDir)/results - $(RepoRoot)/test - $(DotnetStage2) + $(BaseOutputDirectory)/tests/ + $(TestOutputDir)/packagesBuild/ + $(TestOutputDir)/packages/ + $(TestOutputDir)/artifacts/ + $(TestOutputDir)/results/ + $(RepoRoot)/test/ + $(Stage2Directory) - + - + - - + + + + + + + + + + - + - + + @@ -133,7 +149,11 @@ - + - + + @@ -154,25 +177,28 @@ - - - --version-suffix %(TestPackageProject.VersionSuffix) - + Inputs="%(TestPackageProject.PackInputs)" + Outputs="%(TestPackageProject.PackOutputs)"> - + - - %(TestPackageProjectFrameworks.Identity) - + Inputs="%(TestPackageProject.BuildInputs)" + Outputs="%(TestPackageProject.BuildOutputs)"> - + - + + - + - + + %(Name) + + + + %(BuildOutputs) + $(TestPackagesDir)%(NuPkgName).%(VersionPrefix)%(VersionSuffix).nupkg + + + + + + + + %(TestPackageProject.OutputPath)%(TestPackageProject.Name).dll + + + + + + + %(TestPackageProjectFrameworks.Identity) + + + + + $(CurrentBuildFramework) + %(OutputPath)$(CurrentBuildFramework)/ + + + + + + + %(BaseTestPackageProject.ProjectPath) + + + + + @(__TestPackageProjectInputs) + + + + + + + <__TestPackageProjectInputs Include="%(BaseTestPackageProject.BuildInputIncludeFilter)" + Exclude="%(BaseTestPackageProject.BuildInputExcludeFilter)"> + %(BaseTestPackageProject.ProjectPath) + + + + + + + PackageWithFakeNativeDep False True + 1.0.0 $(TestPackageBuildVersionSuffix) True net45 - - + + dotnet-dependency-context-test True True + 1.0.0-rc- $(TestPackageBuildVersionSuffix) True netcoreapp1.0 - - + + dotnet-dependency-tool-invoker True True + 1.0.0-rc- $(TestPackageBuildVersionSuffix) True netcoreapp1.0 - - + + dotnet-desktop-and-portable True True + 1.0.0-rc- $(TestPackageBuildVersionSuffix) True net451;netcoreapp1.0 - - + dotnet-desktop-binding-redirects True $(DesktopAvailable) + 1.0.0-rc- $(TestPackageBuildVersionSuffix) True net451 - - + + dotnet-hello True True + 1.0.0 True netcoreapp1.0 - - + + dotnet-hello True True + 2.0.0 True netcoreapp1.0 - - + + dotnet-portable True True + 1.0.0 True netcoreapp1.0 - - - ToolWithOutputName + + + dotnet-tool-with-output-name + ToolWithOutputName True True + 1.0.0 True netcoreapp1.0 - - + + Microsoft.DotNet.Cli.Utils True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False net451;netstandard1.6 - - + + Microsoft.DotNet.ProjectModel True True + 1.0.0-rc4- $(TestPackageBuildVersionSuffix) False net451;netstandard1.6 - - + + Microsoft.DotNet.ProjectModel.Loader True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False netstandard1.6 - - + + Microsoft.DotNet.ProjectModel.Workspaces True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False netstandard1.6 - - + + Microsoft.DotNet.InternalAbstractions True True + 1.0.1-beta- $(TestPackageBuildVersionSuffix) False net451;netstandard1.3 - - + + Microsoft.Extensions.DependencyModel True True + 1.0.1-beta- $(TestPackageBuildVersionSuffix) False net451;netstandard1.6 - - + + Microsoft.Extensions.Testing.Abstractions True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False net451;netstandard1.6 - - + + Microsoft.DotNet.Compiler.Common True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False netstandard1.6 - - + + Microsoft.DotNet.Files True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) False netstandard1.6 - - + + dotnet-compile-fsc True True + 1.0.0-preview3- $(TestPackageBuildVersionSuffix) True netcoreapp1.0 - - + - - + + + + $(RepoRoot)%(Identity)/ + $(TestPackagesBuildDir)%(Identity)/bin/$(Configuration)/ + + + + %(ProjectDir)project.json + %(ProjectDir)**/*.* + %(ProjectDir)bin/**/*.*;%(ProjectDir)obj/**/*.* + + + + + %(Name) + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/DotNetBuild.cs b/build_projects/dotnet-cli-build/DotNetBuild.cs new file mode 100644 index 000000000..291186f7e --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetBuild.cs @@ -0,0 +1,66 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetBuild : DotNetTool + { + protected override string Command + { + get { return "build"; } + } + + protected override string Args + { + get { return $"{GetProjectPath()} {GetConfiguration()} {GetFramework()} {GetBuildBasePath()}"; } + } + + public string BuildBasePath { get; set; } + + public string Configuration { get; set; } + + public string Framework { get; set; } + + public string ProjectPath { get; set; } + + private string GetBuildBasePath() + { + if (!string.IsNullOrEmpty(BuildBasePath)) + { + return $"--build-base-path {BuildBasePath}"; + } + + return null; + } + + private string GetConfiguration() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"--configuration {Configuration}"; + } + + return null; + } + + private string GetFramework() + { + if (!string.IsNullOrEmpty(Framework)) + { + return $"--framework {Framework}"; + } + + return null; + } + + private string GetProjectPath() + { + if (!string.IsNullOrEmpty(ProjectPath)) + { + return $"{ProjectPath}"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetPack.cs b/build_projects/dotnet-cli-build/DotNetPack.cs new file mode 100644 index 000000000..ddc9c6676 --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetPack.cs @@ -0,0 +1,90 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetPack : DotNetTool + { + protected override string Command + { + get { return "pack"; } + } + + protected override string Args + { + get { return $"{GetProjectPath()} {GetConfiguration()} {GetNoBuild()} {GetBuildBasePath()} {GetOutput()} {GetVersionSuffix()}"; } + } + + public string Configuration { get; set; } + + public bool NoBuild { get; set; } + + public string BuildBasePath { get; set; } + + public string Output { get; set; } + + public string ProjectPath { get; set; } + + public string VersionSuffix { get; set; } + + private string GetConfiguration() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"--configuration {Configuration}"; + } + + return null; + } + + private string GetNoBuild() + { + if (NoBuild) + { + return $"--no-build"; + } + + return null; + } + + private string GetBuildBasePath() + { + if (!string.IsNullOrEmpty(BuildBasePath)) + { + return $"--build-base-path {BuildBasePath}"; + } + + return null; + } + + private string GetOutput() + { + if (!string.IsNullOrEmpty(Output)) + { + return $"--output {Output}"; + } + + return null; + } + + private string GetProjectPath() + { + if (!string.IsNullOrEmpty(ProjectPath)) + { + return $"{ProjectPath}"; + } + + return null; + } + + private string GetVersionSuffix() + { + if (!string.IsNullOrEmpty(VersionSuffix)) + { + return $"--version-suffix {VersionSuffix}"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetRestore.cs b/build_projects/dotnet-cli-build/DotNetRestore.cs new file mode 100644 index 000000000..59e1ffabd --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetRestore.cs @@ -0,0 +1,42 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetRestore : DotNetTool + { + protected override string Command + { + get { return "restore"; } + } + + protected override string Args + { + get { return $"{GetVerbosity()} {GetFallbackSource()}"; } + } + + public string FallbackSource { get; set; } + + public string Verbosity { get; set; } + + private string GetFallbackSource() + { + if (!string.IsNullOrEmpty(FallbackSource)) + { + return $"--fallbacksource {FallbackSource}"; + } + + return null; + } + + private string GetVerbosity() + { + if (!string.IsNullOrEmpty(Verbosity)) + { + return $"--verbosity {Verbosity}"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetTest.cs b/build_projects/dotnet-cli-build/DotNetTest.cs new file mode 100644 index 000000000..48c6d8030 --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetTest.cs @@ -0,0 +1,54 @@ +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetTest : DotNetTool + { + protected override string Command + { + get { return "test"; } + } + + protected override string Args + { + get { return $"{GetConfiguration()} {GetXml()} {GetNoTrait()}"; } + } + + public string Configuration { get; set; } + + public string Xml { get; set; } + + public string NoTrait { get; set; } + + private string GetConfiguration() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"--configuration {Configuration}"; + } + + return null; + } + + private string GetNoTrait() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"-notrait {NoTrait}"; + } + + return null; + } + + private string GetXml() + { + if (!string.IsNullOrEmpty(Xml)) + { + return $"-xml {Xml}"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs index 4a27b8bfa..a3dda0a63 100644 --- a/build_projects/dotnet-cli-build/DotNetTool.cs +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -55,78 +55,4 @@ namespace Microsoft.DotNet.Cli.Build base.LogToolCommand($"{GetWorkingDirectory()}> {message}"); } } - - public class DotNetRestore : DotNetTool - { - protected override string Command - { - get { return "restore"; } - } - - protected override string Args - { - get { return $"{GetVerbosity()}"; } - } - - public string Verbosity { get; set; } - - private string GetVerbosity() - { - if (!string.IsNullOrEmpty(Verbosity)) - { - return $"--verbosity {Verbosity}"; - } - - return null; - } - } - - public class DotNetTest : DotNetTool - { - protected override string Command - { - get { return "test"; } - } - - protected override string Args - { - get { return $"{GetConfiguration()} {GetXml()} {GetNoTrait()}"; } - } - - public string Configuration { get; set; } - - public string Xml { get; set; } - - public string NoTrait { get; set; } - - private string GetConfiguration() - { - if (!string.IsNullOrEmpty(Configuration)) - { - return $"--configuration {Configuration}"; - } - - return null; - } - - private string GetNoTrait() - { - if (!string.IsNullOrEmpty(Configuration)) - { - return $"-notrait {NoTrait}"; - } - - return null; - } - - private string GetXml() - { - if (!string.IsNullOrEmpty(Xml)) - { - return $"-xml {Xml}"; - } - - return null; - } - } } From 003e6ba28242556026c397bbee313d3e40ec4830 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Mon, 11 Jul 2016 15:01:15 -0700 Subject: [PATCH 059/165] Deb Package Targets --- ...Microsoft.DotNet.Cli.Installer.DEB.targets | 114 +++++++++++++++++- .../Microsoft.DotNet.Cli.Nupkg.targets | 2 +- build_projects/dotnet-cli-build/PkgTargets.cs | 1 - scripts/package/package-debian.sh | 4 - 4 files changed, 112 insertions(+), 9 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 0bcba8086..67cf1ec5d 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -1,9 +1,117 @@ - + + + + + + + false + true + + $(RepoRoot)/scripts/package/package-debian.sh + $(RepoRoot)/Documentation/manpages + + $(PackagesDirectory) + $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) + + dotnet-dev-$(SdkVersion) + dotnet-sharedframework-$(SharedFrameworkName)-$(SharedFrameworkVersion) + $(SharedFrameworkDebianPackageName.ToLower()) + dotnet-hostfxr-$(HostFxrVersion) + $(HostFxrDebianPackageName.ToLower()) + dotnet-host + + $(IntermediateDirectory)/debian/sdk + + $(SdkDebianIntermediateDirectory)/debian-testResults.xml + /usr/share/dotnet/dotnet + $(RepoRoot)/test/EndToEnd + + $(SdkDebianIntermediateDirectory)/$(SdkVersion).sentinel + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index ddb61ba9c..f6f487221 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -59,7 +59,7 @@ Inputs="@(ProjectPackTargetInputs -> '%(Identity)')" Outputs="@(ProjectPackTargetOutputs -> '%(Identity)')"> - ("SharedFrameworkInstallerFile"), sharedFrameworkPkgIntermediatePath, true); File.Copy(c.BuildContext.Get("SharedHostInstallerFile"), sharedHostPkgIntermediatePath, true); File.Copy(c.BuildContext.Get("HostFxrInstallerFile"), hostFxrPkgIntermediatePath, true); diff --git a/scripts/package/package-debian.sh b/scripts/package/package-debian.sh index 190cae05c..05306516d 100755 --- a/scripts/package/package-debian.sh +++ b/scripts/package/package-debian.sh @@ -115,10 +115,6 @@ parseargs(){ echo "Provide the NuGet name of the targetted Shared Framework. Missing option '--framework-nuget-name'" && help fi - if [ -z "$PREVIOUS_VERSION_URL" ]; then - echo "Provide a URL to the previous debian pacakge (Required for running upgrade tests). Missing option '--previous-version-url'" && help - fi - if [ -z "$SHARED_FRAMEWORK_NUGET_VERSION" ]; then echo "Provide the NuGet version of the targetted Shared Framework. Missing option '--framework-nuget-version'" && help fi From 38ba3066eaa4fb34338b210afb12cccc9af68f93 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 15:54:15 -0700 Subject: [PATCH 060/165] fix archive targets bug --- build/package/Microsoft.DotNet.Cli.Archive.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package/Microsoft.DotNet.Cli.Archive.targets b/build/package/Microsoft.DotNet.Cli.Archive.targets index f4f8b6383..bd8a78d59 100644 --- a/build/package/Microsoft.DotNet.Cli.Archive.targets +++ b/build/package/Microsoft.DotNet.Cli.Archive.targets @@ -28,7 +28,7 @@ + InputDirectory="%(GenerateArchivesInputsOutputs.InputDirectory)" > From 7d10620c6d1c9e653bf300d5f4a8c6cce8063c99 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 16:01:50 -0700 Subject: [PATCH 061/165] fix restore issue in deb targets --- build/package/Microsoft.DotNet.Cli.Installer.DEB.targets | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 67cf1ec5d..d67a6dc3d 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -94,9 +94,6 @@ - - From e9d97ea7bdf4a4c0fa048225150b35f6dd19c85b Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 16:32:59 -0700 Subject: [PATCH 062/165] Fixup dotnet-sdk-debug layout --- build/package/Microsoft.DotNet.Cli.Layout.targets | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Layout.targets b/build/package/Microsoft.DotNet.Cli.Layout.targets index 37809a7fd..47a7b768e 100644 --- a/build/package/Microsoft.DotNet.Cli.Layout.targets +++ b/build/package/Microsoft.DotNet.Cli.Layout.targets @@ -6,6 +6,11 @@ $(IntermediateDirectory)/layouts + + $(LayoutDirectory)/$(ArtifactNameSdk) + $(LayoutDirectory)/$(ArtifactNameSdkDebug) + $(LayoutDirectory)/$(ArtifactNameCombinedHostHostFxrFrameworkSdk) + $(LayoutDirectory)/$(ArtifactNameCombinedFrameworkSdk) @@ -23,7 +28,7 @@ @@ -38,13 +43,6 @@ - - $(LayoutDirectory)/$(ArtifactNameSdk) - $(LayoutDirectory)/$(ArtifactNameSdkDebug) - $(LayoutDirectory)/$(ArtifactNameCombinedHostHostFxrFrameworkSdk) - $(LayoutDirectory)/$(ArtifactNameCombinedFrameworkSdk) - - From 975727df6b0eecfa991ee4576e0e9fce108c7622 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 12 Jul 2016 17:08:39 -0700 Subject: [PATCH 063/165] continue on error for ubuntu 16 --- build/package/Microsoft.DotNet.Cli.Installer.DEB.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index d67a6dc3d..a92277ff0 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -2,7 +2,7 @@ - + From 9e20cd2669e75d00fbe11437bdf6c77dd41b5473 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Wed, 13 Jul 2016 11:19:38 -0700 Subject: [PATCH 064/165] PR Feedback --- ...Microsoft.DotNet.Cli.Installer.DEB.targets | 22 +++++-------------- .../Microsoft.DotNet.Cli.Nupkg.targets | 15 +++++++------ 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index a92277ff0..24c4dbe4e 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -6,6 +6,11 @@ + + + false true @@ -28,31 +33,16 @@ $(SdkDebianIntermediateDirectory)/debian-testResults.xml /usr/share/dotnet/dotnet $(RepoRoot)/test/EndToEnd - - $(SdkDebianIntermediateDirectory)/$(SdkVersion).sentinel - - - - - - - diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index f6f487221..f33c2f9ab 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -58,13 +58,14 @@ DependsOnTargets="SetupGenerateNugetPackagesInputsOutputs" Inputs="@(ProjectPackTargetInputs -> '%(Identity)')" Outputs="@(ProjectPackTargetOutputs -> '%(Identity)')"> - - + + Date: Wed, 13 Jul 2016 12:11:23 -0700 Subject: [PATCH 065/165] remove commented last version url --- scripts/package/package-debian.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scripts/package/package-debian.sh b/scripts/package/package-debian.sh index 05306516d..0a93146ec 100755 --- a/scripts/package/package-debian.sh +++ b/scripts/package/package-debian.sh @@ -213,10 +213,6 @@ install_bats() { } run_package_integrity_tests() { - # Set LAST_VERSION_URL to enable upgrade tests - # Temporarily disable last version until we have one with shared fx - # export LAST_VERSION_URL="$PREVIOUS_VERSION_URL" - $TEST_STAGE_DIR/bin/bats $PACKAGE_OUTPUT_DIR/test_package.bats } From f63258ebaa742a259996a5e4da8b7320aaa62ef7 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 13 Jul 2016 12:52:33 -0700 Subject: [PATCH 066/165] Incremental Test Part 2 - TestAssetProjects (#3854) * Incremetntal build of TestAsset Projects * Cleanup * PR Feedback --- build/Microsoft.DotNet.Cli.Prepare.targets | 3 + build/Microsoft.DotNet.Cli.Test.targets | 27 +++----- build/test/TestAssetProjects.targets | 62 +++++++++++++++++++ ...ects.props => TestPackageProjects.targets} | 0 4 files changed, 73 insertions(+), 19 deletions(-) create mode 100644 build/test/TestAssetProjects.targets rename build/test/{TestPackageProjects.props => TestPackageProjects.targets} (100%) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 9e12176d9..747ffccfa 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -4,7 +4,10 @@ + + + diff --git a/build/Microsoft.DotNet.Cli.Test.targets b/build/Microsoft.DotNet.Cli.Test.targets index 3ac5f31b7..ea7afda69 100644 --- a/build/Microsoft.DotNet.Cli.Test.targets +++ b/build/Microsoft.DotNet.Cli.Test.targets @@ -1,12 +1,8 @@ - - - - - - + + - / - \ $(CommitCount) $(BaseOutputDirectory)/tests/ $(TestOutputDir)/packagesBuild/ @@ -96,20 +90,15 @@ - - - - - - - - + DependsOnTargets="RestoreTestAssetProjects; + SetupTestAssetProjectData;" + Inputs="%(TestAssetProjects.BuildInputs)" + Outputs="%(TestAssetProjects.BuildOutput)"> + WorkingDirectory="%(TestAssetProjects.RelativeDir)" /> + + + + + + + %(TestAssetProjects.ProjectPath) + + + + + @(TestAssetProjectInputs) + + + + + + + + %(TestAssetProjects.ProjectPath) + + + + + + + / + \ + + + + + + + + + %(RelativeDir)**/*.* + %(RelativeDir)bin/**/*.*;%(RelativeDir)obj/**/*.* + $([System.IO.Directory]::GetParent(%(Identity))) + %(Identity) + + + + $([System.IO.Path]::GetFileName(%(ProjectDir))) + MyApp + AppWithContentPackage + + + + %(TestAssetProjects.RelativeDir)bin/$(Configuration)/netcoreapp1.0/%(TestAssetProjects.OutputName).dll + + + + \ No newline at end of file diff --git a/build/test/TestPackageProjects.props b/build/test/TestPackageProjects.targets similarity index 100% rename from build/test/TestPackageProjects.props rename to build/test/TestPackageProjects.targets From 6d7f11012217b827465e85137c87769c02ba8403 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 8 Jul 2016 16:02:03 -0700 Subject: [PATCH 067/165] Uploading assets using msbuild. Copying Microsoft.WindowsAzure.Storage.dll to the sdk stage0 folder to get around issue https://github.com/Microsoft/msbuild/issues/658. --- build.proj | 29 ++-- build/Microsoft.DotNet.Cli.Publish.targets | 101 +++++++++++ ...Microsoft.DotNet.Cli.Installer.DEB.targets | 5 + .../Microsoft.DotNet.Cli.Nupkg.targets | 2 +- .../dotnet-cli-build/FinalizeBuildTask.cs | 162 ++++++++++++++++++ .../Publishing/AzurePublisher.cs | 19 ++ 6 files changed, 305 insertions(+), 13 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.Publish.targets create mode 100644 build_projects/dotnet-cli-build/FinalizeBuildTask.cs diff --git a/build.proj b/build.proj index bce9d2b0e..debe1b415 100644 --- a/build.proj +++ b/build.proj @@ -18,6 +18,7 @@ Debug $(MSBuildThisFileDirectory) + $(RepoRoot)/build_tools preview Microsoft.NETCore.App @@ -46,32 +47,36 @@ - $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build + + + + $(DotnetCliBuildDirectory)/bin/Microsoft.WindowsAzure.Storage.dll + %(Identity)/Microsoft.WindowsAzure.Storage.dll + + + - + + + + - - - - - - - - - + diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets new file mode 100644 index 000000000..7a43b3008 --- /dev/null +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + Sdk + $(STORAGE_CONTAINER) + $(STORAGE_KEY) + $(STORAGE_ACCOUNT) + https://$(CloudDropAccountName).blob.core.windows.net/$(ContainerName) + + + + + + + + + + + + $(Product)/$(NugetVersion)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/')) + + + + + + + + + + + + dotnet-dev-$(NugetVersion) + $(DotnetBlobRootUrl)/$(Product)/$(NugetVersion)/%(SdkInstallerFileItemGroup.Filename)%(SdkInstallerFileItemGroup.Extension) + $(PackageDirectory)/package_upload.json + 1 + + + { + "name":"$(SdkDebianPackageName)", + "version":"$(NugetVersion)-$(DebianRevisionNumber)", + "repositoryId":"$(REPO_ID)", + "sourceUrl": "$(SdkDebianUploadUrl)" + } + + + + + + + + + + + + + + + + + $(Product)/$(NugetVersion)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/')) + + + + + + \ No newline at end of file diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 24c4dbe4e..ee4de25ad 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -35,6 +35,11 @@ $(RepoRoot)/test/EndToEnd + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index f33c2f9ab..1e97bae08 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -63,7 +63,7 @@ NoBuild="True" Output="$(NupkgOutputDirectory)" ProjectPath="%(ProjectsToPack.Identity)" - ToolPath="$(DotnetStage2)" + ToolPath="$(Stage2Directory)" VersionSuffix="$(NupkgVersionSuffix)" Configuration="$(Configuration)" /> diff --git a/build_projects/dotnet-cli-build/FinalizeBuildTask.cs b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs new file mode 100644 index 000000000..2e8d2901a --- /dev/null +++ b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class FinalizeBuildTask : Task + { + private AzurePublisher _azurePublisher; + + [Required] + public string AccountName { get; set; } + + [Required] + public string AccountKey { get; set; } + + [Required] + public string NugetVersion { get; set; } + + [Required] + public string Channel { get; set; } + + [Required] + public string CommitHash { get; set; } + + [Required] + public string BranchName { get; set; } + + private AzurePublisher AzurePublisherTool { + get + { + if(_azurePublisher == null) + { + _azurePublisher = new AzurePublisher(AccountName, AccountKey); + } + + return _azurePublisher; + } + } + + public override bool Execute() + { + FinalizeBuild(); + + return true; + } + + private void FinalizeBuild() + { + if (CheckIfAllBuildsHavePublished()) + { + string targetContainer = $"{AzurePublisher.Product.Sdk}/{Channel}"; + string targetVersionFile = $"{targetContainer}/{CommitHash}"; + string semaphoreBlob = $"{targetContainer}/publishSemaphore"; + AzurePublisherTool.CreateBlobIfNotExists(semaphoreBlob); + string leaseId = AzurePublisherTool.AcquireLeaseOnBlob(semaphoreBlob); + + // Prevent race conditions by dropping a version hint of what version this is. If we see this file + // and it is the same as our version then we know that a race happened where two+ builds finished + // at the same time and someone already took care of publishing and we have no work to do. + if (AzurePublisherTool.IsLatestSpecifiedVersion(targetVersionFile)) + { + AzurePublisherTool.ReleaseLeaseOnBlob(semaphoreBlob, leaseId); + return; + } + else + { + Regex versionFileRegex = new Regex(@"(?[\w\d]{40})"); + + // Delete old version files + AzurePublisherTool.ListBlobs(targetContainer) + .Where(s => versionFileRegex.IsMatch(s)) + .ToList() + .ForEach(f => AzurePublisherTool.TryDeleteBlob(f)); + + // Drop the version file signaling such for any race-condition builds (see above comment). + AzurePublisherTool.DropLatestSpecifiedVersion(targetVersionFile); + } + + try + { + CopyBlobsToLatest(targetContainer); + + string cliVersion = Utils.GetVersionFileContent(CommitHash, NugetVersion); + AzurePublisherTool.PublishStringToBlob($"{targetContainer}/latest.version", cliVersion); + + UpdateVersionsRepo(); + } + finally + { + AzurePublisherTool.ReleaseLeaseOnBlob(semaphoreBlob, leaseId); + } + } + } + + private bool CheckIfAllBuildsHavePublished() + { + var badges = new Dictionary() + { + { "Windows_x86", false }, + { "Windows_x64", false }, + { "Ubuntu_x64", false }, + { "Ubuntu_16_04_x64", false }, + { "RHEL_x64", false }, + { "OSX_x64", false }, + { "Debian_x64", false }, + { "CentOS_x64", false }, + { "Fedora_23_x64", false }, + { "openSUSE_13_2_x64", false } + }; + + var versionBadgeName = $"{Monikers.GetBadgeMoniker()}"; + if (!badges.ContainsKey(versionBadgeName)) + { + throw new ArgumentException($"A new OS build '{versionBadgeName}' was added without adding the moniker to the {nameof(badges)} lookup"); + } + + IEnumerable blobs = AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, NugetVersion); + foreach (string file in blobs) + { + string name = Path.GetFileName(file); + foreach (string img in badges.Keys) + { + if ((name.StartsWith($"{img}")) && (name.EndsWith(".svg"))) + { + badges[img] = true; + break; + } + } + } + + return badges.Values.All(v => v); + } + + private void CopyBlobsToLatest(string destinationFolder) + { + foreach (string blob in AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, NugetVersion)) + { + string targetName = Path.GetFileName(blob) + .Replace(NugetVersion, "latest"); + + string target = $"{destinationFolder}/{targetName}"; + AzurePublisherTool.CopyBlob(blob, target); + } + } + + private void UpdateVersionsRepo() + { + string githubAuthToken = EnvVars.EnsureVariable("GITHUB_PASSWORD"); + string nupkgFilePath = Dirs.Packages; + string branchName = BranchName; + string versionsRepoPath = $"build-info/dotnet/cli/{branchName}/Latest"; + + VersionRepoUpdater repoUpdater = new VersionRepoUpdater(githubAuthToken); + repoUpdater.UpdatePublishedVersions(nupkgFilePath, versionsRepoPath).Wait(); + } + } +} \ No newline at end of file diff --git a/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs b/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs index 35d0afde7..28e1b5bc8 100644 --- a/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs +++ b/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs @@ -7,6 +7,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Microsoft.WindowsAzure.Storage; +using Microsoft.WindowsAzure.Storage.Auth; using Microsoft.WindowsAzure.Storage.Blob; namespace Microsoft.DotNet.Cli.Build @@ -33,9 +34,27 @@ namespace Microsoft.DotNet.Cli.Build _blobContainer = GetDotnetBlobContainer(_connectionString); } + public AzurePublisher(string accountName, string accountKey) + { + _blobContainer = GetDotnetBlobContainer(accountName, accountKey); + } + private CloudBlobContainer GetDotnetBlobContainer(string connectionString) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); + + return GetDotnetBlobContainer(storageAccount); + } + + private CloudBlobContainer GetDotnetBlobContainer(string accountName, string accountKey) + { + var storageCredentials = new StorageCredentials(accountName, accountKey); + var storageAccount = new CloudStorageAccount(storageCredentials, true); + return GetDotnetBlobContainer(storageAccount); + } + + private CloudBlobContainer GetDotnetBlobContainer(CloudStorageAccount storageAccount) + { CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); return blobClient.GetContainerReference(s_dotnetBlobContainerName); From a477fe7253b659e6c7c77b71b8a2efec069f9e2d Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Fri, 15 Jul 2016 00:20:23 -0700 Subject: [PATCH 068/165] Incremental build of test projects (#3859) * If restore incrementality fails, clean out all lock files to re-enable incrementality. * Incremental build of TestProjects * Remove reduntant build of test projects * Fix CI * Fix list of executable tests * Msi tests on net46 * Path Separators * PR Feedback * Win Diag * Let's try a hack! * And another! * Mor Diag * McHack * Slashety slash slash * One more hack --- Microsoft.DotNet.Cli.sln | 1 - build/Microsoft.DotNet.Cli.Prepare.targets | 22 +++-- build/Microsoft.DotNet.Cli.Test.targets | 33 +++++-- build/test/ProjectsToTest.props | 31 ------ build/test/TestAssetProjects.targets | 12 +-- build/test/TestProjects.targets | 94 +++++++++++++++++++ build_projects/dotnet-cli-build/DotNetTest.cs | 14 ++- 7 files changed, 154 insertions(+), 53 deletions(-) delete mode 100644 build/test/ProjectsToTest.props create mode 100644 build/test/TestProjects.targets diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index f40f116b7..49097a51a 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -144,7 +144,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "compile", "compile", "{8E33 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2DE2-47F6-8C35-3CF0589CF2B8}" ProjectSection(SolutionItems) = preProject - build\test\ProjectsToTest.props = build\test\ProjectsToTest.props build\test\TestPackageProjects.props = build\test\TestPackageProjects.props EndProjectSection EndProject diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 747ffccfa..ce5b93399 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -164,24 +164,32 @@ InputFile="%(_DownloadAndExtractItem.DownloadFileName)" DestinationDirectory="%(_DownloadAndExtractItem.ExtractDestintation)" /> - - - - - - - + + + + + + + + + + + + + + + <_DotNetNewFolder>$(RepoRoot)/src/dotnet/commands/dotnet-new diff --git a/build/Microsoft.DotNet.Cli.Test.targets b/build/Microsoft.DotNet.Cli.Test.targets index ea7afda69..5af75753d 100644 --- a/build/Microsoft.DotNet.Cli.Test.targets +++ b/build/Microsoft.DotNet.Cli.Test.targets @@ -1,8 +1,14 @@ - + + + / + \ + + + - + Xml="$(TestResultXmlDir)/%(TestProjects.OutputName)-testResults.xml" /> + DependsOnTargets="RestoreTests; + SetupTestProjectData;" + Inputs="%(TestProjects.BuildInputs)" + Outputs="%(TestProjects.BuildOutput)"> + WorkingDirectory="%(TestProjects.RelativeDir)" /> + + @@ -80,7 +93,8 @@ - + @@ -125,6 +139,13 @@ + + + + + + + diff --git a/build/test/ProjectsToTest.props b/build/test/ProjectsToTest.props deleted file mode 100644 index 940db34e6..000000000 --- a/build/test/ProjectsToTest.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build/test/TestAssetProjects.targets b/build/test/TestAssetProjects.targets index f1cc0e464..c6d913ca3 100644 --- a/build/test/TestAssetProjects.targets +++ b/build/test/TestAssetProjects.targets @@ -1,5 +1,5 @@ - + @@ -30,17 +30,15 @@ - - / - \ - - - + + + %(RelativeDir)**/*.* %(RelativeDir)bin/**/*.*;%(RelativeDir)obj/**/*.* diff --git a/build/test/TestProjects.targets b/build/test/TestProjects.targets new file mode 100644 index 000000000..871b2487b --- /dev/null +++ b/build/test/TestProjects.targets @@ -0,0 +1,94 @@ + + + + + + + + %(TestProjects.ProjectPath) + + + + + @(TestProjectInputs) + + + + + + + + %(TestProjects.ProjectPath) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(RelativeDir)**/*.* + %(RelativeDir)bin/**/*.*;%(RelativeDir)obj/**/*.* + $([System.IO.Directory]::GetParent(%(Identity))) + %(Identity) + netcoreapp1.0 + + + + $([System.IO.Path]::GetFileName(%(ProjectDir))) + + + + $(RepoRoot)%(TestProjects.RelativeDir)bin/$(Configuration)/%(TestProjects.Framework)/%(TestProjects.OutputName).dll + + + + net451 + + + net46 + + + + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/DotNetTest.cs b/build_projects/dotnet-cli-build/DotNetTest.cs index 48c6d8030..29eef87ef 100644 --- a/build_projects/dotnet-cli-build/DotNetTest.cs +++ b/build_projects/dotnet-cli-build/DotNetTest.cs @@ -12,7 +12,7 @@ namespace Microsoft.DotNet.Cli.Build protected override string Args { - get { return $"{GetConfiguration()} {GetXml()} {GetNoTrait()}"; } + get { return $"{GetConfiguration()} {GetNoBuild()} {GetXml()} {GetNoTrait()}"; } } public string Configuration { get; set; } @@ -21,6 +21,8 @@ namespace Microsoft.DotNet.Cli.Build public string NoTrait { get; set; } + public bool NoBuild { get; set; } + private string GetConfiguration() { if (!string.IsNullOrEmpty(Configuration)) @@ -50,5 +52,15 @@ namespace Microsoft.DotNet.Cli.Build return null; } + + private string GetNoBuild() + { + if (NoBuild) + { + return "--no-build"; + } + + return null; + } } } From 5059e9c61b88a54457fe7f0ecdb582aff70dd166 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Fri, 15 Jul 2016 08:31:50 -0700 Subject: [PATCH 069/165] CLI Build Cleanup: Round 1 (#3869) * dotnet-cli-build non-runnable * Usings + License --- .../dotnet-cli-build/ArchiveDirectory.cs | 5 +- .../ChangeEntryPointLibraryName.cs | 11 +- .../dotnet-cli-build/CheckPrereqs.cs | 5 +- .../dotnet-cli-build/CleanPublishOutput.cs | 11 +- .../dotnet-cli-build/CliDependencyVersions.cs | 6 +- build_projects/dotnet-cli-build/CliDirs.cs | 5 +- .../dotnet-cli-build/CliMonikers.cs | 5 +- .../dotnet-cli-build/CompileTargets.cs | 373 --------------- .../dotnet-cli-build/CrossgenDirectory.cs | 11 +- build_projects/dotnet-cli-build/DebTargets.cs | 250 ---------- .../dotnet-cli-build/DotNetBuild.cs | 4 +- build_projects/dotnet-cli-build/DotNetPack.cs | 4 +- .../dotnet-cli-build/DotNetRestore.cs | 4 +- build_projects/dotnet-cli-build/DotNetTest.cs | 4 +- build_projects/dotnet-cli-build/DotNetTool.cs | 5 +- .../dotnet-cli-build/DownloadFile.cs | 5 +- .../dotnet-cli-build/ExtractArchive.cs | 5 +- .../dotnet-cli-build/FixModeFlags.cs | 11 +- .../GenerateBuildVersionInfo.cs | 4 +- .../dotnet-cli-build/GenerateGuidFromName.cs | 3 + .../GetCurrentRuntimeInformation.cs | 5 +- .../dotnet-cli-build/InstallerTargets.cs | 28 -- .../dotnet-cli-build/MakeRelative.cs | 4 +- build_projects/dotnet-cli-build/MsiTargets.cs | 188 -------- build_projects/dotnet-cli-build/NuGetUtil.cs | 32 -- .../dotnet-cli-build/PackageTargets.cs | 326 ------------- build_projects/dotnet-cli-build/PkgTargets.cs | 143 ------ .../dotnet-cli-build/PrepareTargets.cs | 25 +- build_projects/dotnet-cli-build/Program.cs | 17 - .../dotnet-cli-build/PublishTargets.cs | 5 +- .../RemoveAssetFromDepsPackages.cs | 12 +- .../dotnet-cli-build/ReplaceFileContents.cs | 5 +- build_projects/dotnet-cli-build/SetEnvVar.cs | 5 +- .../dotnet-cli-build/TestPackageProjects.cs | 222 --------- .../dotnet-cli-build/TestTargets.cs | 443 ------------------ build_projects/dotnet-cli-build/project.json | 1 - 36 files changed, 82 insertions(+), 2110 deletions(-) delete mode 100644 build_projects/dotnet-cli-build/CompileTargets.cs delete mode 100644 build_projects/dotnet-cli-build/DebTargets.cs delete mode 100644 build_projects/dotnet-cli-build/InstallerTargets.cs delete mode 100644 build_projects/dotnet-cli-build/MsiTargets.cs delete mode 100644 build_projects/dotnet-cli-build/NuGetUtil.cs delete mode 100644 build_projects/dotnet-cli-build/PackageTargets.cs delete mode 100644 build_projects/dotnet-cli-build/PkgTargets.cs delete mode 100644 build_projects/dotnet-cli-build/Program.cs delete mode 100644 build_projects/dotnet-cli-build/TestPackageProjects.cs delete mode 100644 build_projects/dotnet-cli-build/TestTargets.cs diff --git a/build_projects/dotnet-cli-build/ArchiveDirectory.cs b/build_projects/dotnet-cli-build/ArchiveDirectory.cs index 2227f9aaf..7c8f95e15 100644 --- a/build_projects/dotnet-cli-build/ArchiveDirectory.cs +++ b/build_projects/dotnet-cli-build/ArchiveDirectory.cs @@ -1,4 +1,7 @@ -using System.IO; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; using System.IO.Compression; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs index 4eea67021..f7feff6da 100644 --- a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -1,13 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/CheckPrereqs.cs b/build_projects/dotnet-cli-build/CheckPrereqs.cs index 6b1894b06..27294d1f5 100644 --- a/build_projects/dotnet-cli-build/CheckPrereqs.cs +++ b/build_projects/dotnet-cli-build/CheckPrereqs.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.IO; using System.Linq; using System.Text; diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs index 8ed3ba21c..2ffdca6a9 100644 --- a/build_projects/dotnet-cli-build/CleanPublishOutput.cs +++ b/build_projects/dotnet-cli-build/CleanPublishOutput.cs @@ -1,13 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/CliDependencyVersions.cs b/build_projects/dotnet-cli-build/CliDependencyVersions.cs index c2b8a859b..a692b074d 100644 --- a/build_projects/dotnet-cli-build/CliDependencyVersions.cs +++ b/build_projects/dotnet-cli-build/CliDependencyVersions.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/CliDirs.cs b/build_projects/dotnet-cli-build/CliDirs.cs index 95b460bec..edf2f23a6 100644 --- a/build_projects/dotnet-cli-build/CliDirs.cs +++ b/build_projects/dotnet-cli-build/CliDirs.cs @@ -1,6 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System.IO; -using System.Runtime.InteropServices; using Microsoft.DotNet.InternalAbstractions; namespace Microsoft.DotNet.Cli.Build diff --git a/build_projects/dotnet-cli-build/CliMonikers.cs b/build_projects/dotnet-cli-build/CliMonikers.cs index a3c0175a6..6785f7d15 100644 --- a/build_projects/dotnet-cli-build/CliMonikers.cs +++ b/build_projects/dotnet-cli-build/CliMonikers.cs @@ -1,4 +1,7 @@ -using Microsoft.DotNet.Cli.Build.Framework; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli.Build.Framework; namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/CompileTargets.cs b/build_projects/dotnet-cli-build/CompileTargets.cs deleted file mode 100644 index 3d0c84c87..000000000 --- a/build_projects/dotnet-cli-build/CompileTargets.cs +++ /dev/null @@ -1,373 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CompileTargets : Task - { - public static readonly bool IsWinx86 = CurrentPlatform.IsWindows && CurrentArchitecture.Isx86; - - public static readonly string[] BinariesForCoreHost = new[] - { - "csc" - }; - - public static readonly string[] ProjectsToPublish = new[] - { - "dotnet" - }; - - public static readonly string[] FilesToClean = new[] - { - "vbc.exe" - }; - - public static string HostPackagePlatformRid => HostPackageSupportedRids[ - (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) - ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" - : RuntimeEnvironment.GetRuntimeIdentifier()]; - - public static readonly Dictionary HostPackageSupportedRids = new Dictionary() - { - // Key: Current platform RID. Value: The actual publishable (non-dummy) package name produced by the build system for this RID. - { "win7-x64", "win7-x64" }, - { "win7-x86", "win7-x86" }, - { "osx.10.10-x64", "osx.10.10-x64" }, - { "osx.10.11-x64", "osx.10.10-x64" }, - { "ubuntu.14.04-x64", "ubuntu.14.04-x64" }, - { "ubuntu.16.04-x64", "ubuntu.16.04-x64" }, - { "centos.7-x64", "rhel.7-x64" }, - { "rhel.7-x64", "rhel.7-x64" }, - { "rhel.7.2-x64", "rhel.7-x64" }, - { "debian.8-x64", "debian.8-x64" }, - { "fedora.23-x64", "fedora.23-x64" }, - { "opensuse.13.2-x64", "opensuse.13.2-x64" } - }; - - public const string SharedFrameworkName = "Microsoft.NETCore.App"; - - public static Crossgen CrossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Compile(c).Success; - } - - [Target] - public static BuildTargetResult Compile(BuildTargetContext c) - { - PrepareTargets.Init(c); - CompileStage1(c); - CompileStage2(c); - - return c.Success(); - } - - public static BuildTargetResult CompileStage1(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage1)) - { - Utils.DeleteDirectory(Dirs.Stage1); - } - Directory.CreateDirectory(Dirs.Stage1); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage0, - rootOutputDirectory: Dirs.Stage1); - - CleanOutputDir(Path.Combine(Dirs.Stage1, "sdk")); - FS.CopyRecursive(Dirs.Stage1, Dirs.Stage1Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage1, "sdk")); - - return result; - } - - public static BuildTargetResult CompileStage2(BuildTargetContext c) - { - var configuration = c.BuildContext.Get("Configuration"); - - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - - if (Directory.Exists(Dirs.Stage2)) - { - Utils.DeleteDirectory(Dirs.Stage2); - } - Directory.CreateDirectory(Dirs.Stage2); - - var result = CompileCliSdk(c, - dotnet: DotNetCli.Stage1, - rootOutputDirectory: Dirs.Stage2, - generateNugetPackagesArchive: true); - - if (!result.Success) - { - return result; - } - - if (CurrentPlatform.IsWindows) - { - // build projects for nuget packages - var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); - Mkdirp(packagingOutputDir); - foreach (var project in PackageTargets.ProjectsToPack) - { - // Just build them, we'll pack later - var packBuildResult = DotNetCli.Stage1.Build( - "--build-base-path", - packagingOutputDir, - "--configuration", - configuration, - Path.Combine(c.BuildContext.BuildDirectory, "src", project)) - .Execute(); - - packBuildResult.EnsureSuccessful(); - } - } - - CleanOutputDir(Path.Combine(Dirs.Stage2, "sdk")); - FS.CopyRecursive(Dirs.Stage2, Dirs.Stage2Symbols); - - RemovePdbsFromDir(Path.Combine(Dirs.Stage2, "sdk")); - - return c.Success(); - } - - private static void CleanOutputDir(string directory) - { - foreach (var file in FilesToClean) - { - FS.RmFilesInDirRecursive(directory, file); - } - } - - private static void RemovePdbsFromDir(string directory) - { - FS.RmFilesInDirRecursive(directory, "*.pdb"); - } - - private static BuildTargetResult CompileCliSdk( - BuildTargetContext c, - DotNetCli dotnet, - string rootOutputDirectory, - bool generateNugetPackagesArchive = false) - { - var configuration = c.BuildContext.Get("Configuration"); - var buildVersion = c.BuildContext.Get("BuildVersion"); - var srcDir = Path.Combine(c.BuildContext.BuildDirectory, "src"); - var sdkOutputDirectory = Path.Combine(rootOutputDirectory, "sdk", buildVersion.NuGetVersion); - - CopySharedFramework(Dirs.SharedFrameworkPublish, rootOutputDirectory); - - FS.CleanBinObj(c, srcDir); - Rmdir(sdkOutputDirectory); - Mkdirp(sdkOutputDirectory); - - foreach (var project in ProjectsToPublish) - { - dotnet.Publish( - "--native-subdirectory", - "--output", sdkOutputDirectory, - "--configuration", configuration, - "--version-suffix", buildVersion.CommitCountString, - Path.Combine(srcDir, project)) - .Execute() - .EnsureSuccessful(); - } - - FixModeFlags(sdkOutputDirectory); - - string compilersProject = Path.Combine(Dirs.RepoRoot, "src", "compilers"); - dotnet.Publish(compilersProject, - "--output", - sdkOutputDirectory, - "--framework", - "netcoreapp1.0") - .Execute() - .EnsureSuccessful(); - - var compilersDeps = Path.Combine(sdkOutputDirectory, "compilers.deps.json"); - var compilersRuntimeConfig = Path.Combine(sdkOutputDirectory, "compilers.runtimeconfig.json"); - - var binaryToCorehostifyRelDir = Path.Combine("runtimes", "any", "native"); - var binaryToCorehostifyOutDir = Path.Combine(sdkOutputDirectory, binaryToCorehostifyRelDir); - // Corehostify binaries - foreach (var binaryToCorehostify in BinariesForCoreHost) - { - try - { - // Yes, it is .exe even on Linux. This is the managed exe we're working with - File.Copy(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.dll")); - File.Move(Path.Combine(binaryToCorehostifyOutDir, $"{binaryToCorehostify}.exe"), Path.Combine(sdkOutputDirectory, $"{binaryToCorehostify}.exe")); - var binaryToCoreHostifyDeps = Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json"); - - File.Copy(compilersDeps, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".deps.json")); - File.Copy(compilersRuntimeConfig, Path.Combine(sdkOutputDirectory, binaryToCorehostify + ".runtimeconfig.json")); - PublishMutationUtilties.ChangeEntryPointLibraryName(binaryToCoreHostifyDeps, binaryToCorehostify); - foreach (var binaryToRemove in new string[] { "csc", "vbc" }) - { - var assetPath = Path.Combine(binaryToCorehostifyRelDir, $"{binaryToRemove}.exe").Replace(Path.DirectorySeparatorChar, '/'); - RemoveAssetFromDepsPackages.DoRemoveAssetFromDepsPackages( - binaryToCoreHostifyDeps, - "runtimeTargets", - assetPath); - RemoveAssetFromDepsPackages.DoRemoveAssetFromDepsPackages( - Path.Combine(sdkOutputDirectory, "dotnet.deps.json"), - "runtimeTargets", - assetPath); - } - } - catch (Exception ex) - { - return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}"); - } - } - - // cleanup compilers project output we don't need - PublishMutationUtilties.CleanPublishOutput( - sdkOutputDirectory, - "compilers", - deleteRuntimeConfigJson: true, - deleteDepsJson: true); - - // Crossgen SDK directory - var sharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - var sharedFrameworkNameVersionPath = SharedFrameworkPublisher.GetSharedFrameworkPublishPath( - rootOutputDirectory, - sharedFrameworkNugetVersion); - - // Copy Host to SDK Directory - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sdkOutputDirectory, $"corehost{Constants.ExeSuffix}"), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.DotnetHostFxrBaseName), - overwrite: true); - File.Copy( - Path.Combine(sharedFrameworkNameVersionPath, HostArtifactNames.HostPolicyBaseName), - Path.Combine(sdkOutputDirectory, HostArtifactNames.HostPolicyBaseName), - overwrite: true); - - CrossgenUtil.CrossgenDirectory( - sharedFrameworkNameVersionPath, - sdkOutputDirectory); - - // Generate .version file - var version = buildVersion.NuGetVersion; - var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; - File.WriteAllText(Path.Combine(sdkOutputDirectory, ".version"), content); - - if(generateNugetPackagesArchive) - { - GenerateNuGetPackagesArchive(c, dotnet, sdkOutputDirectory); - } - - CopyMSBuildTargetsToSDKRoot(sdkOutputDirectory); - - return c.Success(); - } - - private static void CopyMSBuildTargetsToSDKRoot(string sdkOutputDirectory) - { - var msbuildTargetsDirectory = Path.Combine(sdkOutputDirectory, "runtimes", "any", "native"); - - var filesToCopy = new List(); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.Targets", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.props", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.overridetasks", SearchOption.AllDirectories)); - filesToCopy.AddRange(Directory.EnumerateFiles(msbuildTargetsDirectory, "*.tasks", SearchOption.AllDirectories)); - - foreach (var fileFullPath in filesToCopy) - { - var fileRelativePath = fileFullPath.Substring(msbuildTargetsDirectory.Length + 1); - var destinationFilePath = Path.Combine(sdkOutputDirectory, fileRelativePath); - - File.Copy(fileFullPath, destinationFilePath, true); - } - } - - private static void GenerateNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string sdkOutputDirectory) - { - var nuGetPackagesArchiveProject = Path.Combine(Dirs.Intermediate, "NuGetPackagesArchiveProject"); - var nuGetPackagesArchiveFolder = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchiveFolder"); - - RestoreNuGetPackagesArchive(dotnet, nuGetPackagesArchiveProject, nuGetPackagesArchiveFolder); - - CompressNuGetPackagesArchive(c, dotnet, nuGetPackagesArchiveFolder, sdkOutputDirectory); - } - - private static void RestoreNuGetPackagesArchive( - DotNetCli dotnet, - string nuGetPackagesArchiveProject, - string nuGetPackagesArchiveFolder) - { - Rmdir(nuGetPackagesArchiveProject); - Mkdirp(nuGetPackagesArchiveProject); - - Rmdir(nuGetPackagesArchiveFolder); - Mkdirp(nuGetPackagesArchiveFolder); - - dotnet.New() - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - - dotnet.Restore("--packages", nuGetPackagesArchiveFolder) - .WorkingDirectory(nuGetPackagesArchiveProject) - .Execute() - .EnsureSuccessful(); - } - - private static void CompressNuGetPackagesArchive( - BuildTargetContext c, - DotNetCli dotnet, - string nuGetPackagesArchiveFolder, - string sdkOutputDirectory) - { - var configuration = c.BuildContext.Get("Configuration"); - var archiverExe = Path.Combine(Dirs.Output, "tools", $"Archiver{Constants.ExeSuffix}"); - var intermediateArchive = Path.Combine(Dirs.Intermediate, "nuGetPackagesArchive.lzma"); - var finalArchive = Path.Combine(sdkOutputDirectory, "nuGetPackagesArchive.lzma"); - - Rm(intermediateArchive); - Rm($"{intermediateArchive}.zip"); - - c.Info("Publishing Archiver"); - dotnet.Publish("--output", Path.Combine(Dirs.Output, "tools"), "--configuration", configuration) - .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools", "Archiver")) - .Execute() - .EnsureSuccessful(); - - Cmd(archiverExe, - "-a", intermediateArchive, - nuGetPackagesArchiveFolder) - .Execute(); - - File.Copy(intermediateArchive, finalArchive); - } - - private static void CopySharedFramework(string sharedFrameworkPublish, string rootOutputDirectory) - { - CopyRecursive(sharedFrameworkPublish, rootOutputDirectory); - } - } -} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs index 2b03c012f..504690777 100644 --- a/build_projects/dotnet-cli-build/CrossgenDirectory.cs +++ b/build_projects/dotnet-cli-build/CrossgenDirectory.cs @@ -1,13 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/DebTargets.cs b/build_projects/dotnet-cli-build/DebTargets.cs deleted file mode 100644 index b55a1a260..000000000 --- a/build_projects/dotnet-cli-build/DebTargets.cs +++ /dev/null @@ -1,250 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using Microsoft.Build.Framework; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using Microsoft.Build.Utilities; - -namespace Microsoft.DotNet.Cli.Build -{ - public class DebTargets : Task - { - [Required] - public string CLISDKRoot { get; set; } - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return GenerateDebs(c).Success; - } - - public BuildTargetResult GenerateDebs(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - PrepareTargets.Init(c); - GenerateSdkDeb(c); - } - - return c.Success(); - } - - public BuildTargetResult GenerateSdkDeb(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - InstallSharedFramework(c); - - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - var channel = c.BuildContext.Get("Channel").ToLower(); - var packageName = CliMonikers.GetSdkDebianPackageName(c); - var version = c.BuildContext.Get("BuildVersion").NuGetVersion; - var debFile = c.BuildContext.Get("SdkInstallerFile"); - var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); - var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; - var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); - - var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); - - if (Directory.Exists(objRoot)) - { - Directory.Delete(objRoot, true); - } - - Directory.CreateDirectory(objRoot); - - Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), - "-v", version, - "-i", CLISDKRoot, - "-o", debFile, - "-p", packageName, - "-b", Monikers.CLISdkBrandName, - "-m", manPagesDir, - "--framework-debian-package-name", sharedFxDebianPackageName, - "--framework-nuget-name", Monikers.SharedFrameworkName, - "--framework-nuget-version", CliDependencyVersions.SharedFrameworkVersion, - "--previous-version-url", previousVersionURL, - "--obj-root", objRoot) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult TestDebInstaller(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - InstallSDK(c); - RunE2ETest(c); - RemovePackages(c); - } - - return c.Success(); - } - - public static BuildTargetResult InstallSharedHost(BuildTargetContext c) - { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - InstallPackage(c.BuildContext.Get("SharedHostInstallerFile")); - - return c.Success(); - } - - public static BuildTargetResult InstallHostFxr(BuildTargetContext c) - { - InstallSharedHost(c); - - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - InstallPackage(c.BuildContext.Get("HostFxrInstallerFile")); - - return c.Success(); - } - - public static BuildTargetResult InstallSharedFramework(BuildTargetContext c) - { - InstallHostFxr(c); - - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - InstallPackage(c.BuildContext.Get("SharedFrameworkInstallerFile")); - - return c.Success(); - } - - public static BuildTargetResult InstallSDK(BuildTargetContext c) - { - InstallSharedFramework(c); - - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - InstallPackage(c.BuildContext.Get("SdkInstallerFile")); - - return c.Success(); - } - - public static BuildTargetResult RunE2ETest(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - Directory.SetCurrentDirectory(Path.Combine(Dirs.RepoRoot, "test", "EndToEnd")); - - Cmd("dotnet", "build") - .Execute() - .EnsureSuccessful(); - - var testResultsPath = Path.Combine(Dirs.Output, "obj", "debian", "test", "debian-endtoend-testResults.xml"); - - Cmd("dotnet", "test", "-xml", testResultsPath) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult RemovePackages(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools - // So we need to skip this target if the tools aren't present. - // https://github.com/dotnet/core-setup/issues/167 - if (DebuildNotPresent()) - { - c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); - return c.Success(); - } - - IEnumerable orderedPackageNames = new List() - { - CliMonikers.GetSdkDebianPackageName(c), - Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion), - Monikers.GetDebianHostFxrPackageName(CliDependencyVersions.HostFxrVersion), - Monikers.GetDebianSharedHostPackageName(c) - }; - - foreach (var packageName in orderedPackageNames) - { - RemovePackage(packageName); - } - } - - return c.Success(); - } - - private static void InstallPackage(string packagePath) - { - Cmd("sudo", "dpkg", "-i", packagePath) - .Execute() - .EnsureSuccessful(); - } - - private static void RemovePackage(string packageName) - { - Cmd("sudo", "dpkg", "-r", packageName) - .Execute() - .EnsureSuccessful(); - } - - private static bool DebuildNotPresent() - { - return Cmd("/usr/bin/env", "debuild", "-h").Execute().ExitCode != 0; - } - } -} diff --git a/build_projects/dotnet-cli-build/DotNetBuild.cs b/build_projects/dotnet-cli-build/DotNetBuild.cs index 291186f7e..41dd18716 100644 --- a/build_projects/dotnet-cli-build/DotNetBuild.cs +++ b/build_projects/dotnet-cli-build/DotNetBuild.cs @@ -1,5 +1,5 @@ -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/DotNetPack.cs b/build_projects/dotnet-cli-build/DotNetPack.cs index ddc9c6676..f94659a47 100644 --- a/build_projects/dotnet-cli-build/DotNetPack.cs +++ b/build_projects/dotnet-cli-build/DotNetPack.cs @@ -1,5 +1,5 @@ -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/DotNetRestore.cs b/build_projects/dotnet-cli-build/DotNetRestore.cs index 59e1ffabd..e29bc914b 100644 --- a/build_projects/dotnet-cli-build/DotNetRestore.cs +++ b/build_projects/dotnet-cli-build/DotNetRestore.cs @@ -1,5 +1,5 @@ -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/DotNetTest.cs b/build_projects/dotnet-cli-build/DotNetTest.cs index 29eef87ef..1e771d031 100644 --- a/build_projects/dotnet-cli-build/DotNetTest.cs +++ b/build_projects/dotnet-cli-build/DotNetTest.cs @@ -1,5 +1,5 @@ -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs index a3dda0a63..e9a070ab5 100644 --- a/build_projects/dotnet-cli-build/DotNetTool.cs +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -1,4 +1,7 @@ -using Microsoft.Build.Framework; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build diff --git a/build_projects/dotnet-cli-build/DownloadFile.cs b/build_projects/dotnet-cli-build/DownloadFile.cs index f008c14de..6c8633f07 100644 --- a/build_projects/dotnet-cli-build/DownloadFile.cs +++ b/build_projects/dotnet-cli-build/DownloadFile.cs @@ -1,4 +1,7 @@ -using System.IO; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; using System.Net.Http; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/build_projects/dotnet-cli-build/ExtractArchive.cs b/build_projects/dotnet-cli-build/ExtractArchive.cs index 9535cfa2e..7ac9fc83e 100644 --- a/build_projects/dotnet-cli-build/ExtractArchive.cs +++ b/build_projects/dotnet-cli-build/ExtractArchive.cs @@ -1,4 +1,7 @@ -using System.IO.Compression; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO.Compression; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli.Build.Framework; diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs index 7caf97333..4f4ec93dd 100644 --- a/build_projects/dotnet-cli-build/FixModeFlags.cs +++ b/build_projects/dotnet-cli-build/FixModeFlags.cs @@ -1,13 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs index 2be4c2a5c..d8aa28fe9 100644 --- a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs +++ b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs @@ -1,4 +1,6 @@ -using System.Globalization; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs index 98ddc39b4..05b6198d9 100644 --- a/build_projects/dotnet-cli-build/GenerateGuidFromName.cs +++ b/build_projects/dotnet-cli-build/GenerateGuidFromName.cs @@ -1,3 +1,6 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System; using System.Security.Cryptography; using Microsoft.Build.Framework; diff --git a/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs b/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs index e11e40ed3..b18a91c61 100644 --- a/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs +++ b/build_projects/dotnet-cli-build/GetCurrentRuntimeInformation.cs @@ -1,4 +1,7 @@ -using Microsoft.Build.Framework; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.InternalAbstractions; diff --git a/build_projects/dotnet-cli-build/InstallerTargets.cs b/build_projects/dotnet-cli-build/InstallerTargets.cs deleted file mode 100644 index 42f928ea9..000000000 --- a/build_projects/dotnet-cli-build/InstallerTargets.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public class InstallerTargets - { - public static BuildTargetResult GenerateInstaller(BuildTargetContext c) - { - var debTargets = new DebTargets - { - CLISDKRoot = c.BuildContext.Get("CLISDKRoot") - }; - - MsiTargets.GenerateMsisAndBundles(c); - PkgTargets.GeneratePkgs(c); - debTargets.GenerateDebs(c); - - return c.Success(); - } - - public static BuildTargetResult TestInstaller(BuildTargetContext c) - { - DebTargets.TestDebInstaller(c); - - return c.Success(); - } - } -} diff --git a/build_projects/dotnet-cli-build/MakeRelative.cs b/build_projects/dotnet-cli-build/MakeRelative.cs index fbb144fdd..e8f04b159 100644 --- a/build_projects/dotnet-cli-build/MakeRelative.cs +++ b/build_projects/dotnet-cli-build/MakeRelative.cs @@ -1,9 +1,11 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System; using System.IO; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; using Microsoft.DotNet.Cli.Build.Framework; -using Newtonsoft.Json; namespace Microsoft.DotNet.Cli.Build { diff --git a/build_projects/dotnet-cli-build/MsiTargets.cs b/build_projects/dotnet-cli-build/MsiTargets.cs deleted file mode 100644 index abb1d3da3..000000000 --- a/build_projects/dotnet-cli-build/MsiTargets.cs +++ /dev/null @@ -1,188 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Net.Http; -using System.Runtime.InteropServices; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class MsiTargets - { - private const string ENGINE = "engine.exe"; - - private const string WixVersion = "3.10.2"; - - private static string WixRoot - { - get - { - return Path.Combine(Dirs.Output, $"WixTools.{WixVersion}"); - } - } - - private static string SdkMsi { get; set; } - - private static string SdkBundle { get; set; } - - private static string HostFxrMsi { get; set; } - - private static string SharedHostMsi { get; set; } - - private static string SharedFrameworkMsi { get; set; } - - private static string SdkEngine { get; set; } - - private static string MsiVersion { get; set; } - - private static string CliDisplayVersion { get; set; } - - private static string CliNugetVersion { get; set; } - - private static string Arch { get; } = CurrentArchitecture.Current.ToString(); - - private static void AcquireWix(BuildTargetContext c) - { - if (File.Exists(Path.Combine(WixRoot, "candle.exe"))) - { - return; - } - - Directory.CreateDirectory(WixRoot); - - c.Info("Downloading WixTools.."); - - DownloadFile($"https://dotnetcli.blob.core.windows.net/build/wix/wix.{WixVersion}.zip", Path.Combine(WixRoot, "WixTools.zip")); - - c.Info("Extracting WixTools.."); - ZipFile.ExtractToDirectory(Path.Combine(WixRoot, "WixTools.zip"), WixRoot); - } - - private static void DownloadFile(string uri, string destinationPath) - { - using (var httpClient = new HttpClient()) - { - var getTask = httpClient.GetStreamAsync(uri); - - using (var outStream = File.OpenWrite(destinationPath)) - { - getTask.Result.CopyTo(outStream); - } - } - } - - public static BuildTargetResult InitMsi(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - SdkBundle = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); - SdkMsi = Path.ChangeExtension(SdkBundle, "msi"); - SdkEngine = GetEngineName(SdkBundle); - - SharedFrameworkMsi = Path.ChangeExtension(c.BuildContext.Get("SharedFrameworkInstallerFile"), "msi"); - HostFxrMsi = Path.ChangeExtension(c.BuildContext.Get("HostFxrInstallerFile"), "msi"); - SharedHostMsi = Path.ChangeExtension(c.BuildContext.Get("SharedHostInstallerFile"), "msi"); - - var buildVersion = c.BuildContext.Get("BuildVersion"); - MsiVersion = buildVersion.GenerateMsiVersion(); - CliDisplayVersion = buildVersion.SimpleVersion; - CliNugetVersion = buildVersion.NuGetVersion; - - AcquireWix(c); - } - - return c.Success(); - } - public static BuildTargetResult GenerateMsisAndBundles(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - InitMsi(c); - GenerateCliSdkMsi(c); - GenerateCliSdkBundle(c); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateCliSdkMsi(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - var cliSdkRoot = c.BuildContext.Get("CLISDKRoot"); - var upgradeCode = GenerateGuidFromName.GenerateGuid(SdkMsi).ToString().ToUpper(); - var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; - - Cmd("powershell", "-NoProfile", "-NoLogo", - Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatemsi.ps1"), - cliSdkRoot, SdkMsi, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateCliSdkBundle(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - var upgradeCode = GenerateGuidFromName.GenerateGuid(SdkBundle).ToString().ToUpper(); - var cliSdkBrandName = $"'{Monikers.CLISdkBrandName}'"; - - Cmd("powershell", "-NoProfile", "-NoLogo", - Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatebundle.ps1"), - SdkMsi, SharedFrameworkMsi, HostFxrMsi, SharedHostMsi, SdkBundle, WixRoot, cliSdkBrandName, MsiVersion, CliDisplayVersion, CliNugetVersion, upgradeCode, Arch) - .EnvironmentVariable("Stage2Dir", Dirs.Stage2) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - // TODO: The following "Engine" tasks need to be separate MSBuild targets so the Windows - // VSO build can invoke them directly for signing. - [Target(nameof(MsiTargets.InitMsi))] - [BuildPlatforms(BuildPlatform.Windows)] - public static BuildTargetResult ExtractEngineFromBundle(BuildTargetContext c) - { - ExtractEngineFromBundleHelper(SdkBundle, SdkEngine); - return c.Success(); - } - - [Target(nameof(MsiTargets.InitMsi))] - [BuildPlatforms(BuildPlatform.Windows)] - public static BuildTargetResult ReattachEngineToBundle(BuildTargetContext c) - { - ReattachEngineToBundleHelper(SdkBundle, SdkEngine); - return c.Success(); - } - - private static void ExtractEngineFromBundleHelper(string bundle, string engine) - { - Cmd($"{WixRoot}\\insignia.exe", "-ib", bundle, "-o", engine) - .Execute() - .EnsureSuccessful(); - } - - private static void ReattachEngineToBundleHelper(string bundle, string engine) - { - Cmd($"{WixRoot}\\insignia.exe", "-ab", engine, bundle, "-o", bundle) - .Execute() - .EnsureSuccessful(); - - File.Delete(engine); - } - - private static string GetEngineName(string bundle) - { - var engine = $"{Path.GetFileNameWithoutExtension(bundle)}-{ENGINE}"; - return Path.Combine(Path.GetDirectoryName(bundle), engine); - } - } -} diff --git a/build_projects/dotnet-cli-build/NuGetUtil.cs b/build_projects/dotnet-cli-build/NuGetUtil.cs deleted file mode 100644 index 81d53049d..000000000 --- a/build_projects/dotnet-cli-build/NuGetUtil.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.IO; -using System.Reflection; -using Microsoft.DotNet.Cli.Build.Framework; -using NugetProgram = NuGet.CommandLine.XPlat.Program; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class NuGetUtil - { - public static void PushPackages(string packagesPath, string destinationUrl, string apiKey) - { - int result = RunNuGetCommand( - "push", - "-s", destinationUrl, - "-k", apiKey, - Path.Combine(packagesPath, "*.nupkg")); - - if (result != 0) - { - throw new BuildFailureException($"NuGet Push failed with exit code '{result}'."); - } - } - - private static int RunNuGetCommand(params string[] nugetArgs) - { - var nugetAssembly = typeof(NugetProgram).GetTypeInfo().Assembly; - var mainMethod = nugetAssembly.EntryPoint; - return (int)mainMethod.Invoke(null, new object[] { nugetArgs }); - } - } -} - diff --git a/build_projects/dotnet-cli-build/PackageTargets.cs b/build_projects/dotnet-cli-build/PackageTargets.cs deleted file mode 100644 index 14946c837..000000000 --- a/build_projects/dotnet-cli-build/PackageTargets.cs +++ /dev/null @@ -1,326 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class PackageTargets : Task - { - public static readonly string[] ProjectsToPack = new string[] - { - // TODO: https://github.com/dotnet/cli/issues/3558 - // "dotnet-compile-fsc", - "Microsoft.DotNet.Cli.Utils", - "Microsoft.DotNet.Compiler.Common", - "Microsoft.DotNet.Files", - "Microsoft.DotNet.InternalAbstractions", - "Microsoft.DotNet.ProjectModel", - "Microsoft.DotNet.ProjectModel.Loader", - "Microsoft.DotNet.ProjectModel.Workspaces", - "Microsoft.Extensions.DependencyModel", - "Microsoft.Extensions.Testing.Abstractions" - }; - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Package(c).Success; - } - - public static BuildTargetResult InitPackage(BuildTargetContext c) - { - CopyCLISDKLayout(c); - CopySharedHostLayout(c); - CopyHostFxrLayout(c); - CopySharedFxLayout(c); - CopyCombinedFrameworkSDKHostLayout(c); - CopyCombinedFrameworkSDKLayout(c); - - Directory.CreateDirectory(Dirs.Packages); - return c.Success(); - } - - [Target] - public static BuildTargetResult Package(BuildTargetContext c) - { - if (!EnvVars.GetBool("DOTNET_BUILD_SKIP_PACKAGING")) - { - PrepareTargets.Init(c); - InitPackage(c); - GenerateVersionBadge(c); - GenerateCompressedFile(c); - InstallerTargets.GenerateInstaller(c); - GenerateNugetPackages(c); - InstallerTargets.TestInstaller(c); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateVersionBadge(BuildTargetContext c) - { - var buildVersion = c.BuildContext.Get("BuildVersion"); - var versionSvg = Path.Combine(Dirs.RepoRoot, "resources", "images", "version_badge.svg"); - var outputVersionSvg = c.BuildContext.Get("VersionBadge"); - - var versionSvgContent = File.ReadAllText(versionSvg); - versionSvgContent = versionSvgContent.Replace("ver_number", buildVersion.NuGetVersion); - File.WriteAllText(outputVersionSvg, versionSvgContent); - - return c.Success(); - } - - public static BuildTargetResult CopyCLISDKLayout(BuildTargetContext c) - { - var cliSdkRoot = Path.Combine(Dirs.Output, "obj", "clisdk"); - if (Directory.Exists(cliSdkRoot)) - { - Utils.DeleteDirectory(cliSdkRoot); - } - - Directory.CreateDirectory(cliSdkRoot); - Utils.CopyDirectoryRecursively(Path.Combine(Dirs.Stage2, "sdk"), cliSdkRoot, true); - FixPermissions(cliSdkRoot); - - c.BuildContext["CLISDKRoot"] = cliSdkRoot; - return c.Success(); - } - - public static BuildTargetResult CopySharedHostLayout(BuildTargetContext c) - { - var sharedHostRoot = Path.Combine(Dirs.Output, "obj", "sharedHost"); - if (Directory.Exists(sharedHostRoot)) - { - Utils.DeleteDirectory(sharedHostRoot); - } - - Directory.CreateDirectory(sharedHostRoot); - - foreach (var file in Directory.GetFiles(Dirs.Stage2, "*", SearchOption.TopDirectoryOnly)) - { - var destFile = file.Replace(Dirs.Stage2, sharedHostRoot); - File.Copy(file, destFile, true); - } - FixPermissions(sharedHostRoot); - - c.BuildContext["SharedHostPublishRoot"] = sharedHostRoot; - return c.Success(); - } - - public static BuildTargetResult CopyHostFxrLayout(BuildTargetContext c) - { - var hostFxrRoot = Path.Combine(Dirs.Output, "obj", "hostFxr"); - if (Directory.Exists(hostFxrRoot)) - { - Utils.DeleteDirectory(hostFxrRoot); - } - Directory.CreateDirectory(hostFxrRoot); - - Utils.CopyDirectoryRecursively(Path.Combine(Dirs.Stage2, "host"), hostFxrRoot, true); - FixPermissions(hostFxrRoot); - - c.BuildContext["HostFxrPublishRoot"] = hostFxrRoot; - return c.Success(); - } - - public static BuildTargetResult CopySharedFxLayout(BuildTargetContext c) - { - var sharedFxRoot = Path.Combine(Dirs.Output, "obj", "sharedFx"); - if (Directory.Exists(sharedFxRoot)) - { - Utils.DeleteDirectory(sharedFxRoot); - } - - Directory.CreateDirectory(sharedFxRoot); - Utils.CopyDirectoryRecursively(Path.Combine(Dirs.Stage2, "shared"), sharedFxRoot, true); - FixPermissions(sharedFxRoot); - - c.BuildContext["SharedFrameworkPublishRoot"] = sharedFxRoot; - return c.Success(); - } - - public static BuildTargetResult CopyCombinedFrameworkSDKHostLayout(BuildTargetContext c) - { - var combinedRoot = Path.Combine(Dirs.Output, "obj", "combined-framework-sdk-host"); - if (Directory.Exists(combinedRoot)) - { - Utils.DeleteDirectory(combinedRoot); - } - - string sdkPublishRoot = c.BuildContext.Get("CLISDKRoot"); - Utils.CopyDirectoryRecursively(sdkPublishRoot, combinedRoot); - - string sharedFrameworkPublishRoot = c.BuildContext.Get("SharedFrameworkPublishRoot"); - Utils.CopyDirectoryRecursively(sharedFrameworkPublishRoot, combinedRoot); - - string sharedHostPublishRoot = c.BuildContext.Get("SharedHostPublishRoot"); - Utils.CopyDirectoryRecursively(sharedHostPublishRoot, combinedRoot); - - string hostFxrPublishRoot = c.BuildContext.Get("HostFxrPublishRoot"); - Utils.CopyDirectoryRecursively(hostFxrPublishRoot, combinedRoot); - - c.BuildContext["CombinedFrameworkSDKHostRoot"] = combinedRoot; - return c.Success(); - } - - public static BuildTargetResult CopyCombinedFrameworkSDKLayout(BuildTargetContext c) - { - var combinedRoot = Path.Combine(Dirs.Output, "obj", "combined-framework-sdk"); - if (Directory.Exists(combinedRoot)) - { - Utils.DeleteDirectory(combinedRoot); - } - - string sdkPublishRoot = c.BuildContext.Get("CLISDKRoot"); - Utils.CopyDirectoryRecursively(sdkPublishRoot, combinedRoot); - - string sharedFrameworkPublishRoot = c.BuildContext.Get("SharedFrameworkPublishRoot"); - Utils.CopyDirectoryRecursively(sharedFrameworkPublishRoot, combinedRoot); - - c.BuildContext["CombinedFrameworkSDKRoot"] = combinedRoot; - return c.Success(); - } - - public static BuildTargetResult GenerateCompressedFile(BuildTargetContext c) - { - GenerateZip(c); - GenerateTarBall(c); - - return c.Success(); - } - - public static BuildTargetResult GenerateZip(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); - CreateZipFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKRoot"), c.BuildContext.Get("CombinedFrameworkSDKCompressedFile")); - CreateZipFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateTarBall(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Unix)) - { - CreateTarBallFromDirectory(c.BuildContext.Get("CombinedFrameworkSDKHostRoot"), c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile")); - - CreateTarBallFromDirectory(Path.Combine(Dirs.Stage2Symbols, "sdk"), c.BuildContext.Get("SdkSymbolsCompressedFile")); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateNugetPackages(BuildTargetContext c) - { - var versionSuffix = c.BuildContext.Get("BuildVersion").CommitCountString; - var configuration = c.BuildContext.Get("Configuration"); - - var env = GetCommonEnvVars(c); - var dotnet = DotNetCli.Stage2; - - var packagingBuildBasePath = Path.Combine(Dirs.Stage2Compilation, "forPackaging"); - - FS.Mkdirp(Dirs.Packages); - - foreach (var projectName in ProjectsToPack) - { - var projectFile = Path.Combine(Dirs.RepoRoot, "src", projectName, "project.json"); - - dotnet.Pack( - projectFile, - "--no-build", - "--serviceable", - "--build-base-path", packagingBuildBasePath, - "--output", Dirs.Packages, - "--configuration", configuration, - "--version-suffix", versionSuffix) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - internal static Dictionary GetCommonEnvVars(BuildTargetContext c) - { - // Set up the environment variables previously defined by common.sh/ps1 - // This is overkill, but I want to cover all the variables used in all OSes (including where some have the same names) - var buildVersion = c.BuildContext.Get("BuildVersion"); - var configuration = c.BuildContext.Get("Configuration"); - var architecture = RuntimeEnvironment.RuntimeArchitecture; - var env = new Dictionary() - { - { "RID", RuntimeEnvironment.GetRuntimeIdentifier() }, - { "OSNAME", RuntimeEnvironment.OperatingSystem }, - { "TFM", "dnxcore50" }, - { "REPOROOT", Dirs.RepoRoot }, - { "OutputDir", Dirs.Output }, - { "Stage1Dir", Dirs.Stage1 }, - { "Stage1CompilationDir", Dirs.Stage1Compilation }, - { "Stage2Dir", Dirs.Stage2 }, - { "STAGE2_DIR", Dirs.Stage2 }, - { "Stage2CompilationDir", Dirs.Stage2Compilation }, - { "PackageDir", Path.Combine(Dirs.Packages) }, // Legacy name - { "TestBinRoot", Dirs.TestOutput }, - { "TestPackageDir", Dirs.TestPackages }, - { "MajorVersion", buildVersion.Major.ToString() }, - { "MinorVersion", buildVersion.Minor.ToString() }, - { "PatchVersion", buildVersion.Patch.ToString() }, - { "CommitCountVersion", buildVersion.CommitCountString }, - { "COMMIT_COUNT_VERSION", buildVersion.CommitCountString }, - { "DOTNET_CLI_VERSION", buildVersion.SimpleVersion }, - { "DOTNET_MSI_VERSION", buildVersion.GenerateMsiVersion() }, - { "VersionSuffix", buildVersion.VersionSuffix }, - { "CONFIGURATION", configuration }, - { "ARCHITECTURE", architecture } - }; - - return env; - } - - private static void CreateZipFromDirectory(string directory, string artifactPath) - { - if (File.Exists(artifactPath)) - { - File.Delete(artifactPath); - } - - ZipFile.CreateFromDirectory(directory, artifactPath, CompressionLevel.Optimal, false); - } - - private static void CreateTarBallFromDirectory(string directory, string artifactPath) - { - if (File.Exists(artifactPath)) - { - File.Delete(artifactPath); - } - - Cmd("tar", "-czf", artifactPath, "-C", directory, ".") - .Execute() - .EnsureSuccessful(); - } - - private static void FixPermissions(string directory) - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - // Reset everything to user readable/writeable and group and world readable. - FS.ChmodAll(directory, "*", "644"); - - // Now make things that should be executable, executable. - FS.FixModeFlags(directory); - } - } - } -} diff --git a/build_projects/dotnet-cli-build/PkgTargets.cs b/build_projects/dotnet-cli-build/PkgTargets.cs deleted file mode 100644 index 716d736dd..000000000 --- a/build_projects/dotnet-cli-build/PkgTargets.cs +++ /dev/null @@ -1,143 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using Microsoft.Build.Utilities; - -namespace Microsoft.DotNet.Cli.Build -{ - public class PkgTargets : Task - { - public static string PkgsIntermediateDir { get; set; } - public static string SharedHostComponentId { get; set; } - public static string SharedFxComponentId { get; set; } - public static string SharedFxPkgId { get; set; } - public static string SharedFrameworkNugetVersion { get; set; } - public static string CLISdkComponentId { get; set; } - public static string CLISdkPkgId { get; set; } - public static string CLISdkNugetVersion { get; set; } - public static string HostFxrComponentId { get; set; } - - public static BuildTargetResult InitPkg(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) - { - PkgsIntermediateDir = Path.Combine(Dirs.Packages, "intermediate"); - Directory.CreateDirectory(PkgsIntermediateDir); - - SharedHostComponentId = $"com.microsoft.dotnet.sharedhost.component.osx.x64"; - HostFxrComponentId = $"com.microsoft.dotnet.hostfxr.component.osx.x64"; - - string sharedFrameworkNugetName = Monikers.SharedFrameworkName; - SharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - SharedFxComponentId = $"com.microsoft.dotnet.sharedframework.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.component.osx.x64"; - SharedFxPkgId = $"com.microsoft.dotnet.{sharedFrameworkNugetName}.{SharedFrameworkNugetVersion}.osx.x64"; - - CLISdkNugetVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; - CLISdkComponentId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.component.osx.x64"; - CLISdkPkgId = $"com.microsoft.dotnet.dev.{CLISdkNugetVersion}.osx.x64"; - } - - return c.Success(); - } - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return GeneratePkgs(c).Success; - } - - public static BuildTargetResult GeneratePkgs(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) - { - PrepareTargets.Init(c); - InitPkg(c); - GenerateCLISdkProductArchive(c); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateCLISdkProductArchive(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) - { - GenerateCLISdkPkg(c); - - string resourcePath = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "resources"); - string outFilePath = Path.Combine(Dirs.Packages, c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile")); - - // Copy SharedFX and host installers in the correct place - var sharedFrameworkPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedFxComponentId}.pkg"); - var sharedHostPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{SharedHostComponentId}.pkg"); - var hostFxrPkgIntermediatePath = Path.Combine(PkgsIntermediateDir, $"{HostFxrComponentId}.pkg"); - - File.Copy(c.BuildContext.Get("SharedFrameworkInstallerFile"), sharedFrameworkPkgIntermediatePath, true); - File.Copy(c.BuildContext.Get("SharedHostInstallerFile"), sharedHostPkgIntermediatePath, true); - File.Copy(c.BuildContext.Get("HostFxrInstallerFile"), hostFxrPkgIntermediatePath, true); - - string inputDistTemplatePath = Path.Combine( - Dirs.RepoRoot, - "packaging", - "osx", - "clisdk", - "Distribution-Template"); - string distTemplate = File.ReadAllText(inputDistTemplatePath); - string distributionPath = Path.Combine(PkgsIntermediateDir, "CLI-SDK-Formatted-Distribution-Template.xml"); - string formattedDistContents = - distTemplate.Replace("{SharedFxComponentId}", SharedFxComponentId) - .Replace("{SharedHostComponentId}", SharedHostComponentId) - .Replace("{HostFxrComponentId}", HostFxrComponentId) - .Replace("{CLISdkComponentId}", CLISdkComponentId) - .Replace("{CLISdkNugetVersion}", CLISdkNugetVersion) - .Replace("{CLISdkBrandName}", Monikers.CLISdkBrandName) - .Replace("{SharedFxBrandName}", Monikers.SharedFxBrandName) - .Replace("{SharedHostBrandName}", Monikers.SharedHostBrandName) - .Replace("{HostFxrBrandName}", Monikers.HostFxrBrandName); - File.WriteAllText(distributionPath, formattedDistContents); - - Cmd("productbuild", - "--version", CLISdkNugetVersion, - "--identifier", CLISdkPkgId, - "--package-path", PkgsIntermediateDir, - "--resources", resourcePath, - "--distribution", distributionPath, - outFilePath) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult GenerateCLISdkPkg(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.OSX)) - { - string outFilePath = Path.Combine(PkgsIntermediateDir, CLISdkComponentId + ".pkg"); - string installLocation = "/usr/local/share/dotnet"; - string scriptsLocation = Path.Combine(Dirs.RepoRoot, "packaging", "osx", "clisdk", "scripts"); - - Cmd("pkgbuild", - "--root", c.BuildContext.Get("CLISDKRoot"), - "--identifier", CLISdkComponentId, - "--version", CLISdkNugetVersion, - "--install-location", installLocation, - "--scripts", scriptsLocation, - outFilePath) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - } -} diff --git a/build_projects/dotnet-cli-build/PrepareTargets.cs b/build_projects/dotnet-cli-build/PrepareTargets.cs index 0f061c300..096ae824d 100644 --- a/build_projects/dotnet-cli-build/PrepareTargets.cs +++ b/build_projects/dotnet-cli-build/PrepareTargets.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -12,26 +15,8 @@ using static Microsoft.DotNet.Cli.Build.Utils; namespace Microsoft.DotNet.Cli.Build { - public class PrepareTargets : Task + public class PrepareTargets { - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Prepare(c).Success; - } - - [Target] - public static BuildTargetResult Prepare(BuildTargetContext c) - { - Init(c); - DownloadHostAndSharedFxArtifacts(c); - RestorePackages(c); - ZipTemplates(c); - - return c.Success(); - } // All major targets will depend on this in order to ensure variables are set up right if they are run independently public static BuildTargetResult Init(BuildTargetContext c) diff --git a/build_projects/dotnet-cli-build/Program.cs b/build_projects/dotnet-cli-build/Program.cs deleted file mode 100644 index fe76c3af0..000000000 --- a/build_projects/dotnet-cli-build/Program.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public class Program - { - public static int Main(string[] args) - { - DebugHelper.HandleDebugSwitch(ref args); - - return BuildSetup.Create(".NET Core CLI") - .UseStandardGoals() - .UseAllTargetsFromAssembly() - .Run(args); - } - } -} diff --git a/build_projects/dotnet-cli-build/PublishTargets.cs b/build_projects/dotnet-cli-build/PublishTargets.cs index 0d466b356..0ca806806 100644 --- a/build_projects/dotnet-cli-build/PublishTargets.cs +++ b/build_projects/dotnet-cli-build/PublishTargets.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs index f2395df23..0660b24ef 100644 --- a/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs +++ b/build_projects/dotnet-cli-build/RemoveAssetFromDepsPackages.cs @@ -1,18 +1,12 @@ -using System; -using System.Collections.Generic; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System.IO; -using System.IO.Compression; -using System.Runtime.InteropServices; -using System.Net.Http; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - namespace Microsoft.DotNet.Cli.Build { public class RemoveAssetFromDepsPackages : Task diff --git a/build_projects/dotnet-cli-build/ReplaceFileContents.cs b/build_projects/dotnet-cli-build/ReplaceFileContents.cs index 00401dcb5..ee9d1a245 100644 --- a/build_projects/dotnet-cli-build/ReplaceFileContents.cs +++ b/build_projects/dotnet-cli-build/ReplaceFileContents.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.IO; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; diff --git a/build_projects/dotnet-cli-build/SetEnvVar.cs b/build_projects/dotnet-cli-build/SetEnvVar.cs index 4d70c5f25..8c011930b 100644 --- a/build_projects/dotnet-cli-build/SetEnvVar.cs +++ b/build_projects/dotnet-cli-build/SetEnvVar.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/build_projects/dotnet-cli-build/TestPackageProjects.cs b/build_projects/dotnet-cli-build/TestPackageProjects.cs deleted file mode 100644 index a6e4a6931..000000000 --- a/build_projects/dotnet-cli-build/TestPackageProjects.cs +++ /dev/null @@ -1,222 +0,0 @@ -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class TestPackageProjects - { - public class TestPackageProject - { - public string Name { get; set; } - public bool IsTool { get; set; } - public string Path { get; set; } - public bool IsApplicable { get; set; } - public string VersionSuffix { get; set; } - public bool Clean { get; set; } - public string[] Frameworks { get; set; } - } - - private static string s_testPackageBuildVersionSuffix = ""; - - public static string TestPackageBuildVersionSuffix - { - get - { - return s_testPackageBuildVersionSuffix; - } - } - - public static readonly TestPackageProject[] Projects = new[] - { - new TestPackageProject() - { - Name = "PackageWithFakeNativeDep", - IsTool = false, - Path = "TestAssets/TestPackages/PackageWithFakeNativeDep", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "net45" } - }, - new TestPackageProject() - { - Name = "dotnet-dependency-context-test", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-dependency-context-test", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "dotnet-dependency-tool-invoker", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-dependency-tool-invoker", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "dotnet-desktop-and-portable", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-desktop-and-portable", - IsApplicable = CurrentPlatform.IsWindows, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "net451", "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "dotnet-desktop-binding-redirects", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-desktop-binding-redirects", - IsApplicable = CurrentPlatform.IsWindows, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "net451" } - }, - new TestPackageProject() - { - Name = "dotnet-hello", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-hello/v1/dotnet-hello", - IsApplicable =true, - VersionSuffix = string.Empty, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "dotnet-hello", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-hello/v2/dotnet-hello", - IsApplicable = true, - VersionSuffix = string.Empty, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "dotnet-portable", - IsTool = true, - Path = "TestAssets/TestPackages/dotnet-portable", - IsApplicable = true, - VersionSuffix = string.Empty, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "ToolWithOutputName", - IsTool = true, - Path = "TestAssets/TestPackages/ToolWithOutputName", - IsApplicable = true, - VersionSuffix = string.Empty, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.Cli.Utils", - IsTool = true, - Path = "src/Microsoft.DotNet.Cli.Utils", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "net451", "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.ProjectModel", - IsTool = true, - Path = "src/Microsoft.DotNet.ProjectModel", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "net451", "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.ProjectModel.Loader", - IsTool = true, - Path = "src/Microsoft.DotNet.ProjectModel.Loader", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.ProjectModel.Workspaces", - IsTool = true, - Path = "src/Microsoft.DotNet.ProjectModel.Workspaces", - IsApplicable =true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.InternalAbstractions", - IsTool = true, - Path = "src/Microsoft.DotNet.InternalAbstractions", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "net451", "netstandard1.3" } - }, - new TestPackageProject() - { - Name = "Microsoft.Extensions.DependencyModel", - IsTool = true, - Path = "src/Microsoft.Extensions.DependencyModel", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "net451", "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.Extensions.Testing.Abstractions", - IsTool = true, - Path = "src/Microsoft.Extensions.Testing.Abstractions", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "net451", "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.Compiler.Common", - IsTool = true, - Path = "src/Microsoft.DotNet.Compiler.Common", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "Microsoft.DotNet.Files", - IsTool = true, - Path = "src/Microsoft.DotNet.Files", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = false, - Frameworks = new [] { "netstandard1.6" } - }, - new TestPackageProject() - { - Name = "dotnet-compile-fsc", - IsTool = true, - Path = "src/dotnet-compile-fsc", - IsApplicable = true, - VersionSuffix = s_testPackageBuildVersionSuffix, - Clean = true, - Frameworks = new [] { "netcoreapp1.0" } - } - }; - } -} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/TestTargets.cs b/build_projects/dotnet-cli-build/TestTargets.cs deleted file mode 100644 index e616c00dc..000000000 --- a/build_projects/dotnet-cli-build/TestTargets.cs +++ /dev/null @@ -1,443 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using Microsoft.DotNet.Cli.Build.Framework; - -using static Microsoft.DotNet.Cli.Build.FS; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.Utils; -using Microsoft.Build.Utilities; - -namespace Microsoft.DotNet.Cli.Build -{ - public class TestTargets : Task - { - private static string s_testPackageBuildVersionSuffix = ""; - - public static readonly string[] TestProjects = new[] - { - "ArgumentForwardingTests", - "crossgen.Tests", - "EndToEnd", - "dotnet.Tests", - "dotnet-build.Tests", - "dotnet-build3.Tests", - "dotnet-compile.Tests", - "dotnet-compile.UnitTests", - // TODO: https://github.com/dotnet/cli/issues/3558 - // "dotnet-compile-fsc.Tests", - "dotnet-new.Tests", - "dotnet-pack.Tests", - "dotnet-publish.Tests", - "dotnet-resgen.Tests", - "dotnet-run.Tests", - "dotnet-run.UnitTests", - "dotnet-test.Tests", - "dotnet-test.UnitTests", - // TODO: https://github.com/dotnet/cli/issues/3216 - //"Kestrel.Tests", - "Microsoft.DotNet.Cli.Utils.Tests", - "Microsoft.DotNet.Compiler.Common.Tests", - "Microsoft.DotNet.ProjectModel.Tests", - "Microsoft.DotNet.ProjectModel.Loader.Tests", - "Microsoft.Extensions.DependencyModel.Tests", - "Microsoft.DotNet.Configurer.UnitTests", - "Performance" - }; - - public static readonly string[] WindowsTestProjects = new[] - { - "binding-redirects.Tests" - }; - - public static readonly dynamic[] ConditionalTestAssets = new[] - { - new { Path = "AppWithDirectDependencyDesktopAndPortable", Skip = new Func(() => !CurrentPlatform.IsWindows) } - }; - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Test(c).Success; - } - - [Target] - public static BuildTargetResult Test(BuildTargetContext c) - { - PrepareTargets.Init(c); - SetupTests(c); - RestoreTests(c); - BuildTests(c); - RunTests(c); - - return c.Success(); - } - - public static BuildTargetResult SetupTests(BuildTargetContext c) - { - SetupTestPackages(c); - SetupTestProjects(c); - - return c.Success(); - } - - public static BuildTargetResult SetupTestPackages(BuildTargetContext c) - { - RestoreTestAssetPackages(c); - BuildTestAssetPackages(c); - - return c.Success(); - } - - public static BuildTargetResult SetupTestProjects(BuildTargetContext c) - { - RestoreTestAssetProjects(c); - RestoreDesktopTestAssetProjects(c); - BuildTestAssetProjects(c); - BuildDesktopTestAssetProjects(c); - - return c.Success(); - } - - public static BuildTargetResult RestoreTestAssetPackages(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "test")); - - CleanNuGetTempCache(); - - var dotnet = DotNetCli.Stage2; - dotnet.Restore("--verbosity", "verbose") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestPackages")) - .Execute() - .EnsureSuccessful(); - - return c.Success(); - } - - public static BuildTargetResult RestoreTestAssetProjects(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "test")); - - CleanNuGetTempCache(); - - var dotnet = DotNetCli.Stage2; - dotnet.Restore( - "--verbosity", "verbose", - "--fallbacksource", Dirs.TestPackages) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects")) - .Execute() - .EnsureSuccessful(); - - return c.Success(); - } - - public static BuildTargetResult RestoreDesktopTestAssetProjects(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - var dotnet = DotNetCli.Stage2; - - dotnet.Restore("--verbosity", "verbose", - "--infer-runtimes", - "--fallbacksource", Dirs.TestPackages) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects")) - .Execute().EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult BuildTestAssetPackages(BuildTargetContext c) - { - CleanTestPackages(c); - CleanProductPackages(c); - - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestPackages")); - - var dotnet = DotNetCli.Stage2; - - Rmdir(Dirs.TestPackages); - Mkdirp(Dirs.TestPackages); - - foreach (var testPackageProject in TestPackageProjects.Projects.Where(p => p.IsApplicable)) - { - var relativePath = testPackageProject.Path; - - var versionSuffix = testPackageProject.VersionSuffix; - if (versionSuffix.Equals(s_testPackageBuildVersionSuffix)) - { - versionSuffix = c.BuildContext.Get("BuildVersion").CommitCountString; - } - - var fullPath = Path.Combine(c.BuildContext.BuildDirectory, relativePath.Replace('/', Path.DirectorySeparatorChar)); - c.Info($"Packing: {fullPath}"); - - var packageBuildFrameworks = testPackageProject.Frameworks.ToList(); - - if (!CurrentPlatform.IsWindows) - { - packageBuildFrameworks.RemoveAll(f => f.StartsWith("net4")); - } - - foreach (var packageBuildFramework in packageBuildFrameworks) - { - var buildArgs = new List(); - buildArgs.Add("-f"); - buildArgs.Add(packageBuildFramework); - buildArgs.Add("--build-base-path"); - buildArgs.Add(Dirs.TestPackagesBuild); - buildArgs.Add(fullPath); - - Mkdirp(Dirs.TestPackagesBuild); - dotnet.Build(buildArgs.ToArray()) - .Execute() - .EnsureSuccessful(); - } - - var projectJson = Path.Combine(fullPath, "project.json"); - var dotnetPackArgs = new List { - projectJson, - "--no-build", - "--build-base-path", Dirs.TestPackagesBuild, - "--output", Dirs.TestPackages - }; - - if (!string.IsNullOrEmpty(versionSuffix)) - { - dotnetPackArgs.Add("--version-suffix"); - dotnetPackArgs.Add(versionSuffix); - } - - dotnet.Pack(dotnetPackArgs.ToArray()) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - public static BuildTargetResult CleanProductPackages(BuildTargetContext c) - { - foreach (var packageName in PackageTargets.ProjectsToPack) - { - Rmdir(Path.Combine(Dirs.NuGetPackages, packageName)); - } - - return c.Success(); - } - - public static BuildTargetResult CleanTestPackages(BuildTargetContext c) - { - foreach (var packageProject in TestPackageProjects.Projects.Where(p => p.IsApplicable && p.Clean)) - { - Rmdir(Path.Combine(Dirs.NuGetPackages, packageProject.Name)); - if (packageProject.IsTool) - { - Rmdir(Path.Combine(Dirs.NuGetPackages, ".tools", packageProject.Name)); - } - } - return c.Success(); - } - - public static BuildTargetResult BuildTestAssetProjects(BuildTargetContext c) - { - var testAssetsRoot = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects"); - var dotnet = DotNetCli.Stage2; - var framework = "netcoreapp1.0"; - - return BuildTestAssets(c, testAssetsRoot, dotnet, framework); - } - - public static BuildTargetResult BuildDesktopTestAssetProjects(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - var testAssetsRoot = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "DesktopTestProjects"); - var dotnet = DotNetCli.Stage2; - var framework = "net451"; - - return BuildTestAssets(c, testAssetsRoot, dotnet, framework); - } - - return c.Success(); - } - - public static BuildTargetResult RestoreTests(BuildTargetContext c) - { - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src")); - CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "test")); - - CleanNuGetTempCache(); - DotNetCli.Stage2.Restore("--verbosity", "verbose", - "--fallbacksource", Dirs.TestPackages) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "test")) - .Execute() - .EnsureSuccessful(); - return c.Success(); - } - - public static BuildTargetResult BuildTests(BuildTargetContext c) - { - var dotnet = DotNetCli.Stage2; - - var configuration = c.BuildContext.Get("Configuration"); - - foreach (var testProject in GetTestProjects()) - { - c.Info($"Building tests: {testProject}"); - dotnet.Build("--configuration", configuration) - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "test", testProject)) - .Execute() - .EnsureSuccessful(); - } - return c.Success(); - } - - public static BuildTargetResult RunTests(BuildTargetContext c) - { - RunXUnitTests(c); - - return c.Success(); - } - - public static BuildTargetResult RunXUnitTests(BuildTargetContext c) - { - // Need to load up the VS Vars - var dotnet = DotNetCli.Stage2; - var vsvars = LoadVsVars(c); - - var configuration = c.BuildContext.Get("Configuration"); - - // Copy the test projects - var testProjectsDir = Path.Combine(Dirs.TestOutput, "TestProjects"); - Rmdir(testProjectsDir); - Mkdirp(testProjectsDir); - CopyRecursive(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects"), testProjectsDir); - - // Run the tests and set the VS vars in the environment when running them - var failingTests = new List(); - foreach (var project in GetTestProjects()) - { - c.Info($"Running tests in: {project}"); - var result = dotnet.Test("--configuration", configuration, "-xml", $"{project}-testResults.xml", "-notrait", "category=failing") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "test", project)) - .Environment(vsvars) - .EnvironmentVariable("PATH", $"{DotNetCli.Stage2.BinPath}{Path.PathSeparator}{Environment.GetEnvironmentVariable("PATH")}") - .EnvironmentVariable("TEST_ARTIFACTS", Dirs.TestArtifacts) - .Execute(); - if (result.ExitCode != 0) - { - failingTests.Add(project); - } - } - - if (failingTests.Any()) - { - foreach (var project in failingTests) - { - c.Error($"{project} failed"); - } - return c.Failed("Tests failed!"); - } - - return c.Success(); - } - - private static IEnumerable GetTestProjects() - { - List testProjects = new List(); - testProjects.AddRange(TestProjects); - - if (CurrentPlatform.IsWindows) - { - testProjects.AddRange(WindowsTestProjects); - } - - return testProjects; - } - - private static BuildTargetResult BuildTestAssets(BuildTargetContext c, string testAssetsRoot, DotNetCli dotnet, string framework) - { - CleanBinObj(c, testAssetsRoot); - - var nobuildFileName = ".noautobuild"; - - var projects = Directory.GetFiles(testAssetsRoot, "project.json", SearchOption.AllDirectories) - .Where(p => !ConditionalTestAssets.Where(s => !s.Skip() && p.EndsWith(Path.Combine(s.Path, "project.json"))).Any()) - .Where(p => !File.Exists(Path.Combine(Path.GetDirectoryName(p), nobuildFileName))); - - foreach (var project in projects) - { - c.Info($"Building: {project}"); - dotnet.Build("--framework", framework) - .WorkingDirectory(Path.GetDirectoryName(project)) - .Execute() - .EnsureSuccessful(); - } - - return c.Success(); - } - - private static Dictionary LoadVsVars(BuildTargetContext c) - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return new Dictionary(); - } - - c.Verbose("Start Collecting Visual Studio Environment Variables"); - - var vsvarsPath = Path.GetFullPath(Path.Combine(Environment.GetEnvironmentVariable("VS140COMNTOOLS"), "..", "..", "VC")); - - // Write a temp batch file because that seems to be the easiest way to do this (argument parsing is hard) - var temp = Path.Combine(Path.GetTempPath(), $"{Path.GetRandomFileName()}.cmd"); - File.WriteAllText(temp, $@"@echo off -cd {vsvarsPath} -call vcvarsall.bat x64 -set"); - - CommandResult result; - try - { - result = Cmd(Environment.GetEnvironmentVariable("COMSPEC"), "/c", temp) - .WorkingDirectory(vsvarsPath) - .CaptureStdOut() - .Execute(); - } - finally - { - if (File.Exists(temp)) - { - File.Delete(temp); - } - } - - result.EnsureSuccessful(); - - var vars = new Dictionary(); - foreach (var line in result.StdOut.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) - { - var splat = line.Split(new[] { '=' }, 2); - - if (splat.Length == 2) - { - c.Verbose($"Adding variable '{line}'"); - vars[splat[0]] = splat[1]; - } - else - { - c.Info($"Skipping VS Env Variable. Unknown format: '{line}'"); - } - } - - c.Verbose("Finish Collecting Visual Studio Environment Variables"); - return vars; - } - } -} diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index c6bf2de23..19e3ba844 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -2,7 +2,6 @@ "version": "1.0.0-*", "description": "Build scripts for dotnet-cli", "buildOptions": { - "emitEntryPoint": true, "allowUnsafe": true, "compile": [ "../Microsoft.DotNet.Cli.Build.Framework/**/*.cs", From 03a17a9b760fbf73f402556e4385ad4a563f8ac1 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 15 Jul 2016 11:40:56 -0700 Subject: [PATCH 070/165] Adding a task to set the blob properties correctly based on type. --- build/Microsoft.DotNet.Cli.Publish.targets | 6 ++ .../dotnet-cli-build/FinalizeBuildTask.cs | 3 +- .../SetBlobPropertiesBasedOnFileTypeTask.cs | 61 +++++++++++++++++++ .../Publishing/AzurePublisher.cs | 6 ++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets index 7a43b3008..5eb6b1dec 100644 --- a/build/Microsoft.DotNet.Cli.Publish.targets +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -5,6 +5,7 @@ + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/FinalizeBuildTask.cs b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs index 2e8d2901a..cba8c45a7 100644 --- a/build_projects/dotnet-cli-build/FinalizeBuildTask.cs +++ b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs @@ -30,7 +30,8 @@ namespace Microsoft.DotNet.Cli.Build [Required] public string BranchName { get; set; } - private AzurePublisher AzurePublisherTool { + private AzurePublisher AzurePublisherTool + { get { if(_azurePublisher == null) diff --git a/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs b/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs new file mode 100644 index 000000000..b1ed15877 --- /dev/null +++ b/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class SetBlobPropertiesBasedOnFileTypeTask : Task + { + private AzurePublisher _azurePublisher; + + [Required] + public string AccountName { get; set; } + + [Required] + public string AccountKey { get; set; } + + [Required] + public ITaskItem[] Items { get; set; } + + private AzurePublisher AzurePublisherTool + { + get + { + if(_azurePublisher == null) + { + _azurePublisher = new AzurePublisher(AccountName, AccountKey); + } + + return _azurePublisher; + } + } + + public override bool Execute() + { + if (Items.Length == 0) + { + Log.LogError("No items were provided for upload."); + return false; + } + + foreach(var item in Items) + { + string relativeBlobPath = item.GetMetadata("RelativeBlobPath"); + if (string.IsNullOrEmpty(relativeBlobPath)) + { + throw new Exception(string.Format( + "Metadata 'RelativeBlobPath' is missing for item '{0}'.", + item.ItemSpec)); + } + + AzurePublisherTool.SetBlobPropertiesBasedOnFileType(relativeBlobPath); + } + + return true; + } + } +} \ No newline at end of file diff --git a/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs b/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs index 28e1b5bc8..922fb7753 100644 --- a/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs +++ b/build_projects/shared-build-targets-utils/Publishing/AzurePublisher.cs @@ -92,6 +92,12 @@ namespace Microsoft.DotNet.Cli.Build target.StartCopyAsync(source).Wait(); } + public void SetBlobPropertiesBasedOnFileType(string path) + { + CloudBlockBlob blob = _blobContainer.GetBlockBlobReference(path); + SetBlobPropertiesBasedOnFileType(blob); + } + private void SetBlobPropertiesBasedOnFileType(CloudBlockBlob blockBlob) { if (Path.GetExtension(blockBlob.Uri.AbsolutePath.ToLower()) == ".svg") From 89e127b8ac403a10f69f7e74aa4fe5693dc87670 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Fri, 15 Jul 2016 15:36:01 -0400 Subject: [PATCH 071/165] Move downloads to CDN (#3873) --- Documentation/specs/installation-scenarios.md | 14 +++++++------- build/Microsoft.DotNet.Cli.Prepare.targets | 2 +- .../Microsoft.DotNet.Cli.Installer.MSI.targets | 2 +- scripts/obtain/dotnet-install.ps1 | 4 ++-- scripts/obtain/dotnet-install.sh | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Documentation/specs/installation-scenarios.md b/Documentation/specs/installation-scenarios.md index f6bd2b753..67f86472d 100644 --- a/Documentation/specs/installation-scenarios.md +++ b/Documentation/specs/installation-scenarios.md @@ -18,12 +18,12 @@ This section describes placeholders used inside this spec. # Build Output Each official, successful build should create and upload packages to location described by following URLs: ``` -https://dotnetcli.blob.core.windows.net/dotnet///dotnet... +https://dotnetcli.azureedge.net/dotnet///dotnet... Currently: -https://dotnetcli.blob.core.windows.net/dotnet//Binaries//dotnet-sharedframework--..zip -https://dotnetcli.blob.core.windows.net/dotnet//Binaries//dotnet-host--..zip -https://dotnetcli.blob.core.windows.net/dotnet//Binaries//dotnet--..zip +https://dotnetcli.azureedge.net/dotnet//Binaries//dotnet-sharedframework--..zip +https://dotnetcli.azureedge.net/dotnet//Binaries//dotnet-host--..zip +https://dotnetcli.azureedge.net/dotnet//Binaries//dotnet--..zip ``` Content of the package should contain binaries which layout will be described later. @@ -105,7 +105,7 @@ WIP: Exact script action description. | -DryRun | --dry-run | `` | If switch present, installation will not be performed and instead deterministic invocation with specific version and zip location will be displayed. | | -NoPath | --no-path | `` | If switch present the script will not set PATH environmental variable for the current process. | | -Verbose | --verbose | `` | If switch present displays diagnostics information. | -| -AzureFeed | --azure-feed | See description | Azure feed URL, default: `https://dotnetcli.blob.core.windows.net/dotnet` | +| -AzureFeed | --azure-feed | See description | Azure feed URL, default: `https://dotnetcli.azureedge.net/dotnet` | ### Script location WIP: permanent link for obtaining latest version @@ -143,7 +143,7 @@ Version files can be found in multiple places: URL: ``` -https://dotnetcli.blob.core.windows.net/dotnet//..version +https://dotnetcli.azureedge.net/dotnet//..version ``` ### File content @@ -156,7 +156,7 @@ Each version file contains two lines describing the build: ## Version badge Version badge (SVG) is an image with textual representation of ``. It can be found under following URL: ``` -https://dotnetcli.blob.core.windows.net/dotnet//..svg +https://dotnetcli.azureedge.net/dotnet//..svg ``` ## Questions/gaps diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index ce5b93399..94bb4e491 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -114,7 +114,7 @@ - https://dotnetcli.blob.core.windows.net/dotnet/$(CoreSetupChannel) + https://dotnetcli.azureedge.net/dotnet/$(CoreSetupChannel) $(CoreSetupBlobRootUrl)/Binaries/$(SharedFrameworkVersion) $(CoreSetupBlobRootUrl)/Installers diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets index 1d09dd19a..bb9d197da 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -9,7 +9,7 @@ 3.10.2 - https://dotnetcli.blob.core.windows.net/build/wix/wix.$(WixVersion).zip + https://dotnetcli.azureedge.net/build/wix/wix.$(WixVersion).zip $(IntermediateDirectory)/WixTools/$(WixVersion) $(WixRoot)/WixTools.$(WixVersion).zip $(WixRoot)/WixDownload.$(WixVersion).sentinel diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1 index a68031fe4..7823d80a5 100644 --- a/scripts/obtain/dotnet-install.ps1 +++ b/scripts/obtain/dotnet-install.ps1 @@ -45,7 +45,7 @@ .PARAMETER Verbose Displays diagnostics information. .PARAMETER AzureFeed - Default: https://dotnetcli.blob.core.windows.net/dotnet + Default: https://dotnetcli.azureedge.net/dotnet This parameter should not be usually changed by user. It allows to change URL for the Azure feed used by this installer. #> [cmdletbinding()] @@ -58,7 +58,7 @@ param( [switch]$DebugSymbols, # TODO: Switch does not work yet. Symbols zip is not being uploaded yet. [switch]$DryRun, [switch]$NoPath, - [string]$AzureFeed="https://dotnetcli.blob.core.windows.net/dotnet" + [string]$AzureFeed="https://dotnetcli.azureedge.net/dotnet" ) Set-StrictMode -Version Latest diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh index 2ac19e6ee..a0ce6dc9a 100755 --- a/scripts/obtain/dotnet-install.sh +++ b/scripts/obtain/dotnet-install.sh @@ -556,7 +556,7 @@ architecture="" debug_symbols=false dry_run=false no_path=false -azure_feed="https://dotnetcli.blob.core.windows.net/dotnet" +azure_feed="https://dotnetcli.azureedge.net/dotnet" verbose=false shared_runtime=false From 01b49814616bf2d40647971453020b89a1024934 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 15 Jul 2016 13:44:11 -0700 Subject: [PATCH 072/165] Addressing code review comments --- build.proj | 2 +- build/Microsoft.DotNet.Cli.Publish.targets | 46 ++++++++++--------- .../dotnet-cli-build/FinalizeBuildTask.cs | 6 +-- .../SetBlobPropertiesBasedOnFileTypeTask.cs | 2 +- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/build.proj b/build.proj index debe1b415..b07662498 100644 --- a/build.proj +++ b/build.proj @@ -18,7 +18,7 @@ Debug $(MSBuildThisFileDirectory) - $(RepoRoot)/build_tools + $(RepoRoot)/build_tools preview Microsoft.NETCore.App diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets index 5eb6b1dec..0ac2783a7 100644 --- a/build/Microsoft.DotNet.Cli.Publish.targets +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -1,34 +1,36 @@ - + - - + + + FinishBuild" /> - + + - - + + @@ -56,14 +58,16 @@ + + + - dotnet-dev-$(NugetVersion) $(DotnetBlobRootUrl)/$(Product)/$(NugetVersion)/%(SdkInstallerFileItemGroup.Filename)%(SdkInstallerFileItemGroup.Extension) - $(PackageDirectory)/package_upload.json + $(SdkDebianIntermediateDirectory)/package_upload.json 1 @@ -99,7 +103,7 @@ ContainerName="$(ContainerName)" Items="@(CliVersionBadgeToUpload)" /> - diff --git a/build_projects/dotnet-cli-build/FinalizeBuildTask.cs b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs index cba8c45a7..7c143415c 100644 --- a/build_projects/dotnet-cli-build/FinalizeBuildTask.cs +++ b/build_projects/dotnet-cli-build/FinalizeBuildTask.cs @@ -8,7 +8,7 @@ using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class FinalizeBuildTask : Task + public class FinalizeBuild : Task { private AzurePublisher _azurePublisher; @@ -45,12 +45,12 @@ namespace Microsoft.DotNet.Cli.Build public override bool Execute() { - FinalizeBuild(); + DoFinalizeBuild(); return true; } - private void FinalizeBuild() + private void DoFinalizeBuild() { if (CheckIfAllBuildsHavePublished()) { diff --git a/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs b/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs index b1ed15877..dd20d82b7 100644 --- a/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs +++ b/build_projects/dotnet-cli-build/SetBlobPropertiesBasedOnFileTypeTask.cs @@ -8,7 +8,7 @@ using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class SetBlobPropertiesBasedOnFileTypeTask : Task + public class SetBlobPropertiesBasedOnFileType : Task { private AzurePublisher _azurePublisher; From 2455528b2eaa7293b1532b14cedc10574eab5152 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Fri, 15 Jul 2016 15:55:34 -0700 Subject: [PATCH 073/165] fix nupkg generation --- build/package/Microsoft.DotNet.Cli.Nupkg.targets | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index 1e97bae08..b6045364c 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -1,7 +1,7 @@ - $(CommitCount) @@ -47,10 +47,14 @@ Microsoft.Extensions.Testing.Abstractions $(SdkNugetVersion) + + - + + + - @@ -70,7 +74,7 @@ From 776cab609e19d775387b58be96eb7eb097b89462 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 19 Jul 2016 10:11:46 -0700 Subject: [PATCH 074/165] Adding the storage variables to the dockerrun.sh file so that they are set as env variables in docker. --- scripts/dockerrun.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/dockerrun.sh b/scripts/dockerrun.sh index 8d989542d..3d4ccf21c 100755 --- a/scripts/dockerrun.sh +++ b/scripts/dockerrun.sh @@ -126,5 +126,8 @@ docker run $INTERACTIVE -t --rm --sig-proxy=true \ -e NUGET_FEED_URL \ -e NUGET_API_KEY \ -e GITHUB_PASSWORD \ + -e STORAGE_KEY \ + -e STORAGE_ACCOUNT \ + -e STORAGE_CONTAINER \ $DOTNET_BUILD_CONTAINER_TAG \ $BUILD_COMMAND "$@" From 24d2e638d5d726a244b349c035bb676260926e4a Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 19 Jul 2016 17:01:02 -0400 Subject: [PATCH 075/165] Build Cleanup: Part 2 (#3890) * Remove deprecated build_projects sources * Remove BuildSetup, StandardGoals, and Target Attributes * Incremental restore of tasks dll * CheckPreReq conforms with MSBuild Error Handling guidelines * Eliminate deprecated content * PR Feedback --- build.proj | 21 +- .../AnsiColorExtensions.cs | 52 --- .../AnsiConsole.cs | 145 ------- .../BuildContext.cs | 177 -------- .../BuildFailureException.cs | 42 -- .../BuildReporter.cs | 30 -- .../BuildSetup.cs | 173 -------- .../BuildTarget.cs | 31 -- .../BuildTargetContext.cs | 39 -- .../BuildTargetResult.cs | 41 -- .../Command.cs | 73 +--- .../DebugHelper.cs | 29 -- .../Reporter.cs | 58 --- .../StandardGoals.cs | 23 -- .../TargetAttribute.cs | 24 -- .../BuildArchitecturesAttribute.cs | 41 -- .../BuildPlatformsAttribute.cs | 41 -- .../TargetConditions/EnvironmentAttribute.cs | 41 -- .../TargetConditionAttribute.cs | 9 - .../UndefinedTargetException.cs | 9 - .../dotnet-cli-build/CheckPrereqs.cs | 96 ++--- build_projects/dotnet-cli-build/CliDirs.cs | 16 - .../dotnet-cli-build/CliMonikers.cs | 17 - .../dotnet-cli-build/PrepareTargets.cs | 391 ------------------ .../dotnet-cli-build/PublishTargets.cs | 295 ------------- .../BuildFailureException.cs | 19 + .../shared-build-targets-utils/Utils/FS.cs | 17 - .../Utils/Monikers.cs | 23 +- .../Utils/SharedFrameworkPublisher.cs | 219 ---------- .../shared-build-targets-utils/Utils/Utils.cs | 13 - .../Utils/YumDependencyUtility.cs | 1 - 31 files changed, 95 insertions(+), 2111 deletions(-) delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiColorExtensions.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiConsole.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildContext.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildFailureException.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildReporter.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTarget.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetContext.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetResult.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/DebugHelper.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/Reporter.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/StandardGoals.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetAttribute.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildArchitecturesAttribute.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildPlatformsAttribute.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/EnvironmentAttribute.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/TargetConditionAttribute.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/UndefinedTargetException.cs delete mode 100644 build_projects/dotnet-cli-build/CliDirs.cs delete mode 100644 build_projects/dotnet-cli-build/CliMonikers.cs delete mode 100644 build_projects/dotnet-cli-build/PrepareTargets.cs delete mode 100644 build_projects/dotnet-cli-build/PublishTargets.cs create mode 100644 build_projects/shared-build-targets-utils/BuildFailureException.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/SharedFrameworkPublisher.cs diff --git a/build.proj b/build.proj index b07662498..c07c89edc 100644 --- a/build.proj +++ b/build.proj @@ -13,11 +13,11 @@ .sh Prepare;Compile;Test;Package;Publish - $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build/bin/dotnet-cli-build - $(CLIBuildFileName).dll Debug $(MSBuildThisFileDirectory) + $(RepoRoot)/build_projects/dotnet-cli-build/bin/dotnet-cli-build + $(CLIBuildFileName).dll $(RepoRoot)/build_tools preview @@ -33,6 +33,8 @@ .exe $(Stage0Path)/dotnet$(ExeExtension) + + $(RepoRoot)/build_projects/dotnet-cli-build @@ -50,10 +52,8 @@ - - $(MSBuildThisFileDirectory)/build_projects/dotnet-cli-build - + DependsOnTargets="MSBuildWorkaroundTarget; + RestoreDotnetCliBuildFramework"> @@ -63,8 +63,6 @@ - - @@ -72,6 +70,13 @@ DestinationFiles="%(AzureStorageToCopy.Destination)" /> + + + + + diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiColorExtensions.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiColorExtensions.cs deleted file mode 100644 index 874fc7608..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiColorExtensions.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class AnsiColorExtensions - { - public static string Black(this string text) - { - return "\x1B[30m" + text + "\x1B[39m"; - } - - public static string Red(this string text) - { - return "\x1B[31m" + text + "\x1B[39m"; - } - public static string Green(this string text) - { - return "\x1B[32m" + text + "\x1B[39m"; - } - - public static string Yellow(this string text) - { - return "\x1B[33m" + text + "\x1B[39m"; - } - - public static string Blue(this string text) - { - return "\x1B[34m" + text + "\x1B[39m"; - } - - public static string Magenta(this string text) - { - return "\x1B[35m" + text + "\x1B[39m"; - } - - public static string Cyan(this string text) - { - return "\x1B[36m" + text + "\x1B[39m"; - } - - public static string White(this string text) - { - return "\x1B[37m" + text + "\x1B[39m"; - } - - public static string Bold(this string text) - { - return "\x1B[1m" + text + "\x1B[22m"; - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiConsole.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiConsole.cs deleted file mode 100644 index a7ccb8227..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/AnsiConsole.cs +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class AnsiConsole - { - private AnsiConsole(TextWriter writer) - { - Writer = writer; - - OriginalForegroundColor = Console.ForegroundColor; - } - - private int _boldRecursion; - - public static AnsiConsole GetOutput() - { - return new AnsiConsole(Console.Out); - } - - public static AnsiConsole GetError() - { - return new AnsiConsole(Console.Error); - } - - public TextWriter Writer { get; } - - public ConsoleColor OriginalForegroundColor { get; } - - private void SetColor(ConsoleColor color) - { - const int Light = 0x08; - int c = (int)color; - - Console.ForegroundColor = - c < 0 ? color : // unknown, just use it - _boldRecursion > 0 ? (ConsoleColor)(c | Light) : // ensure color is light - (ConsoleColor)(c & ~Light); // ensure color is dark - } - - private void SetBold(bool bold) - { - _boldRecursion += bold ? 1 : -1; - if (_boldRecursion > 1 || (_boldRecursion == 1 && !bold)) - { - return; - } - - // switches on _boldRecursion to handle boldness - SetColor(Console.ForegroundColor); - } - - public void WriteLine(string message) - { - Write(message); - Writer.WriteLine(); - } - - - public void Write(string message) - { - var escapeScan = 0; - for (;;) - { - var escapeIndex = message.IndexOf("\x1b[", escapeScan, StringComparison.Ordinal); - if (escapeIndex == -1) - { - var text = message.Substring(escapeScan); - Writer.Write(text); - break; - } - else - { - var startIndex = escapeIndex + 2; - var endIndex = startIndex; - while (endIndex != message.Length && - message[endIndex] >= 0x20 && - message[endIndex] <= 0x3f) - { - endIndex += 1; - } - - var text = message.Substring(escapeScan, escapeIndex - escapeScan); - Writer.Write(text); - if (endIndex == message.Length) - { - break; - } - - switch (message[endIndex]) - { - case 'm': - int value; - if (int.TryParse(message.Substring(startIndex, endIndex - startIndex), out value)) - { - switch (value) - { - case 1: - SetBold(true); - break; - case 22: - SetBold(false); - break; - case 30: - SetColor(ConsoleColor.Black); - break; - case 31: - SetColor(ConsoleColor.Red); - break; - case 32: - SetColor(ConsoleColor.Green); - break; - case 33: - SetColor(ConsoleColor.Yellow); - break; - case 34: - SetColor(ConsoleColor.Blue); - break; - case 35: - SetColor(ConsoleColor.Magenta); - break; - case 36: - SetColor(ConsoleColor.Cyan); - break; - case 37: - SetColor(ConsoleColor.Gray); - break; - case 39: - Console.ForegroundColor = OriginalForegroundColor; - break; - } - } - break; - } - - escapeScan = endIndex + 1; - } - } - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildContext.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildContext.cs deleted file mode 100644 index b80196c8c..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildContext.cs +++ /dev/null @@ -1,177 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildContext - { - private IDictionary _completedTargets = new Dictionary(StringComparer.OrdinalIgnoreCase); - - public static readonly string DefaultTarget = "Default"; - - private int _maxTargetLen; - private Stack _targetStack = new Stack(); - - public IDictionary Targets { get; } - - public IDictionary Properties = new Dictionary(); - - public string BuildDirectory { get; } - - public object this[string name] - { - get - { - if (Properties.ContainsKey(name)) - { - return Properties[name]; - } - else - { - throw new KeyNotFoundException("No property with key " + name + " was found."); - } - } - set { Properties[name] = value; } - } - - public BuildContext(IDictionary targets, string buildDirectory) - { - Targets = targets; - BuildDirectory = buildDirectory; - _maxTargetLen = targets.Values.Select(t => t.Name.Length).Max(); - } - - public T Get(string name) => (T)this[name]; - - public BuildTargetResult RunTarget(string name) => RunTarget(name, force: false); - - public BuildTargetResult RunTarget(string name, bool force) - { - BuildTarget target; - if (!Targets.TryGetValue(name, out target)) - { - throw new UndefinedTargetException($"Undefined target: {name}"); - } - - if (!EvaluateTargetConditions(target)) - { - Reporter.Verbose.WriteLine($"Skipping, Target Conditions not met: {target.Name}"); - return new BuildTargetResult(target, success: true); - } - - // Check if it's been completed - BuildTargetResult result; - if (!force && _completedTargets.TryGetValue(name, out result)) - { - Reporter.Verbose.WriteLine($"Skipping completed target: {target.Name}"); - return result; - } - - // It hasn't, or we're forcing, so run it - result = ExecTarget(target); - _completedTargets[target.Name] = result; - return result; - } - - public void Verbose(string message) - { - Reporter.Output.WriteLine("trace".White() + $": {message}"); - } - - public void Info(string message) - { - Reporter.Output.WriteLine("info ".Green() + $": {message}"); - } - - public void Warn(string message) - { - Reporter.Output.WriteLine("warn ".Yellow() + $": {message}"); - } - - public void Error(string message) - { - Reporter.Error.WriteLine("error".Red().Bold() + $": {message}"); - } - - private bool EvaluateTargetConditions(BuildTarget target) - { - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } - - if (target.Conditions == null) - { - return true; - } - - foreach (var condition in target.Conditions) - { - if (!condition()) - { - return false; - } - } - - return true; - } - - private BuildTargetResult ExecTarget(BuildTarget target) - { - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } - - var sectionName = $"{target.Name.PadRight(_maxTargetLen + 2).Yellow()} ({target.Source.White()})"; - BuildReporter.BeginSection("TARGET", sectionName); - - BuildTargetResult result; - - // Run the dependencies - var dependencyResults = new Dictionary(); - var failedDependencyResult = RunDependencies(target, dependencyResults); - if (failedDependencyResult != null) - { - result = failedDependencyResult; - } - else if (target.Body != null) - { - try - { - result = target.Body(new BuildTargetContext(this, target, dependencyResults)); - } - catch (Exception ex) - { - result = new BuildTargetResult(target, success: false, exception: ex); - } - } - else - { - result = new BuildTargetResult(target, success: true); - } - BuildReporter.EndSection("TARGET", sectionName, result.Success); - - return result; - } - - private BuildTargetResult RunDependencies(BuildTarget target, Dictionary dependencyResults) - { - BuildTargetResult result = null; - foreach (var dependency in target.Dependencies) - { - result = RunTarget(dependency); - dependencyResults[dependency] = result; - - if (!result.Success) - { - return result; - } - } - - return null; - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildFailureException.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildFailureException.cs deleted file mode 100644 index 665c0243a..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildFailureException.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildFailureException : Exception - { - public BuildTarget Target { get; } - - public BuildFailureException() - { - } - - public BuildFailureException(BuildTarget target) : base($"The '{target.Name}' target failed") - { - Target = target; - } - - public BuildFailureException(BuildTarget target, Exception innerException) : base($"The '{target.Name}' target failed", innerException) - { - Target = target; - } - - public BuildFailureException(string message) : base(message) - { - } - - public BuildFailureException(string message, BuildTarget target) : base(message) - { - Target = target; - } - - public BuildFailureException(string message, Exception innerException) : base(message, innerException) - { - } - - public BuildFailureException(string message, Exception innerException, BuildTarget target) : base(message, innerException) - { - Target = target; - } - - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildReporter.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildReporter.cs deleted file mode 100644 index 4efcba06f..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildReporter.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class BuildReporter - { - private const string TimeSpanFormat = @"hh\:mm\:ss\.fff"; - private static DateTime _initialTime = DateTime.Now; - - public static void BeginSection(string type, string name) - { - Reporter.Output.WriteLine($"[{type.PadRight(10)} >]".Green() + $" [....] [{(DateTime.Now - _initialTime).ToString(TimeSpanFormat)}]".Blue() + $" {name}"); - } - - public static void EndSection(string type, string name, bool success) - { - var header = $"[{type.PadRight(10)} <]"; - if(success) - { - header = header.Green(); - } - else - { - header = header.Red(); - } - var successString = success ? " OK " : "FAIL"; - Reporter.Output.WriteLine(header + $" [{successString}] [{(DateTime.Now - _initialTime).ToString(TimeSpanFormat)}]".Blue() + $" {name}"); - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs deleted file mode 100644 index 2bb42aa47..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildSetup.cs +++ /dev/null @@ -1,173 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.CompilerServices; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildSetup - { - private Dictionary _targets = new Dictionary(); - - public IList _overrides = new List(); - - public string ProductName { get; } - - public BuildSetup(string productName) - { - ProductName = productName; - } - - public static BuildSetup Create(string productName) - { - return new BuildSetup(productName); - } - - public BuildSetup UseTargets(IEnumerable targets) - { - foreach (var target in targets) - { - BuildTarget previousTarget; - if (_targets.TryGetValue(target.Name, out previousTarget)) - { - _overrides.Add(new TargetOverride(target.Name, previousTarget.Source, target.Source)); - } - _targets[target.Name] = target; - } - return this; - } - - public BuildSetup UseAllTargetsFromAssembly() - { - var asm = typeof(T).GetTypeInfo().Assembly; - return UseTargets(asm.GetExportedTypes().SelectMany(t => CollectTargets(t))); - } - - public BuildSetup UseTargetsFrom() - { - return UseTargets(CollectTargets(typeof(T))); - } - - public BuildContext CreateBuildContext() - { - return new BuildContext(_targets, Directory.GetCurrentDirectory()); - } - - public int Run(string[] args) - { - var targets = new[] { BuildContext.DefaultTarget }; - if(args.Length > 0) - { - targets = args; - } - - Reporter.Output.WriteBanner($"Building {ProductName}"); - - if (_overrides.Any()) - { - foreach (var targetOverride in _overrides) - { - Reporter.Verbose.WriteLine($"Target {targetOverride.Name} from {targetOverride.OriginalSource} was overridden in {targetOverride.OverrideSource}"); - } - } - - var context = CreateBuildContext(); - BuildTargetResult result = null; - try - { - foreach (var target in targets) - { - result = context.RunTarget(target); - if(!result.Success) - { - break; - } - } - } - catch (Exception ex) - { - Reporter.Error.WriteLine(ex.ToString().Red()); - return 1; - } - - if(result != null && !result.Success) - { - Reporter.Error.WriteLine($"Build failed: {result.ErrorMessage}".Red()); - return 1; - } - else - { - Reporter.Output.WriteLine("Build succeeded".Green()); - return 0; - } - } - - private static IEnumerable CollectTargets(Type typ) - { - return from m in typ.GetMethods() - let targetAttribute = m.GetCustomAttribute() - let conditionalAttributes = m.GetCustomAttributes(false) - where targetAttribute != null - select CreateTarget(m, targetAttribute, conditionalAttributes); - } - - private static BuildTarget CreateTarget( - MethodInfo methodInfo, - TargetAttribute targetAttribute, - IEnumerable targetConditionAttributes) - { - var name = targetAttribute.Name ?? methodInfo.Name; - - var conditions = ExtractTargetConditionsFromAttributes(targetConditionAttributes); - - return new BuildTarget( - name, - $"{methodInfo.DeclaringType.FullName}.{methodInfo.Name}", - targetAttribute.Dependencies, - conditions, - (Func)methodInfo.CreateDelegate(typeof(Func))); - } - - private static IEnumerable> ExtractTargetConditionsFromAttributes( - IEnumerable targetConditionAttributes) - { - if (targetConditionAttributes == null || targetConditionAttributes.Count() == 0) - { - return Enumerable.Empty>(); - } - - return targetConditionAttributes - .Select>(c => c.EvaluateCondition) - .ToArray(); - } - - private string GenerateSourceString(string file, int? line, string member) - { - if (!string.IsNullOrEmpty(file) && line != null) - { - return $"{file}:{line}"; - } - else if (!string.IsNullOrEmpty(member)) - { - return member; - } - return string.Empty; - } - - public class TargetOverride - { - public string Name { get; } - public string OriginalSource { get; } - public string OverrideSource { get; } - - public TargetOverride(string name, string originalSource, string overrideSource) - { - Name = name; - OriginalSource = originalSource; - OverrideSource = overrideSource; - } - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTarget.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTarget.cs deleted file mode 100644 index d3b161885..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTarget.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildTarget - { - public string Name { get; } - public string Source { get; } - public IEnumerable Dependencies { get; } - public IEnumerable> Conditions { get; } - public Func Body { get; } - - public BuildTarget(string name, string source) : this(name, source, Enumerable.Empty(), Enumerable.Empty>(), null) { } - public BuildTarget(string name, string source, IEnumerable dependencies) : this(name, source, dependencies, Enumerable.Empty>(), null) { } - public BuildTarget( - string name, - string source, - IEnumerable dependencies, - IEnumerable> conditions, - Func body) - { - Name = name; - Source = source; - Dependencies = dependencies; - Conditions = conditions; - Body = body; - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetContext.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetContext.cs deleted file mode 100644 index 376234dc2..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetContext.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildTargetContext - { - private IDictionary _dependencyResults; - - public BuildContext BuildContext { get; } - public BuildTarget Target { get; } - - public BuildTargetContext(BuildContext buildContext, BuildTarget target, IDictionary dependencyResults) - { - BuildContext = buildContext; - Target = target; - _dependencyResults = dependencyResults; - } - - public BuildTargetResult Success() - { - return new BuildTargetResult(Target, success: true); - } - - public BuildTargetResult Failed() => Failed(errorMessage: string.Empty); - - public BuildTargetResult Failed(string errorMessage) - { - return new BuildTargetResult(Target, success: false, errorMessage: errorMessage); - } - - public void Info(string message) => BuildContext.Info(message); - public void Warn(string message) => BuildContext.Warn(message); - public void Error(string message) => BuildContext.Error(message); - public void Verbose(string message) => BuildContext.Verbose(message); - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetResult.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetResult.cs deleted file mode 100644 index cadf74a03..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildTargetResult.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class BuildTargetResult - { - public BuildTarget Target { get; } - public bool Success { get; } - public string ErrorMessage { get; } - public Exception Exception { get; } - - public BuildTargetResult(BuildTarget target, bool success) : this(target, success, errorMessage: string.Empty) { } - - public BuildTargetResult(BuildTarget target, bool success, Exception exception) : this(target, success, exception.ToString()) - { - Exception = exception; - } - - public BuildTargetResult(BuildTarget target, bool success, string errorMessage) - { - Target = target; - Success = success; - ErrorMessage = errorMessage; - } - - public void EnsureSuccessful() - { - if(!Success) - { - if(string.IsNullOrEmpty(ErrorMessage)) - { - throw new BuildFailureException(Target, Exception); - } - else - { - throw new BuildFailureException(ErrorMessage, Exception, Target); - } - } - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs index cc96344f7..310adb4f1 100644 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs +++ b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs @@ -202,7 +202,7 @@ namespace Microsoft.DotNet.Cli.Build.Framework var exitCode = _process.ExitCode; - ReportExecEnd(exitCode); + ReportExecEnd(exitCode); return new CommandResult( _process.StartInfo, @@ -239,36 +239,6 @@ namespace Microsoft.DotNet.Cli.Build.Framework return this; } - public Command ForwardStdOut(TextWriter to = null) - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardOutput = true; - if (to == null) - { - _stdOutForward = Reporter.Output.WriteLine; - } - else - { - _stdOutForward = to.WriteLine; - } - return this; - } - - public Command ForwardStdErr(TextWriter to = null) - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardError = true; - if (to == null) - { - _stdErrForward = Reporter.Error.WriteLine; - } - else - { - _stdErrForward = to.WriteLine; - } - return this; - } - public Command OnOutputLine(Action handler) { ThrowIfRunning(); @@ -307,28 +277,25 @@ namespace Microsoft.DotNet.Cli.Build.Framework return prefix + " " + info.Arguments; } - private void ReportExecBegin() - { - if (!_quietBuildReporter) - { - BuildReporter.BeginSection("EXEC", FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: false)); - } - } - - private void ReportExecEnd(int exitCode) - { - if (!_quietBuildReporter) - { - bool success = exitCode == 0; - - var message = $"{FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: !success)} exited with {exitCode}"; - - BuildReporter.EndSection( - "EXEC", - success ? message.Green() : message.Red().Bold(), - success); - } - } + private void ReportExecBegin() + { + if (!_quietBuildReporter) + { + Console.WriteLine($"[> EXEC] {FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: false)}"); + } + } + + private void ReportExecEnd(int exitCode) + { + if (!_quietBuildReporter) + { + bool success = exitCode == 0; + + var message = $"{FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: !success)} exited with {exitCode}"; + + Console.WriteLine("[< EXEC] {message}"); + } + } private void ThrowIfRunning([CallerMemberName] string memberName = null) { diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/DebugHelper.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/DebugHelper.cs deleted file mode 100644 index 988e15f8d..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/DebugHelper.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Diagnostics; -using System.Linq; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class DebugHelper - { - [Conditional("DEBUG")] - public static void HandleDebugSwitch(ref string[] args) - { - if (args.Length > 0 && string.Equals("--debug", args[0], StringComparison.OrdinalIgnoreCase)) - { - args = args.Skip(1).ToArray(); - WaitForDebugger(); - } - } - - private static void WaitForDebugger() - { - Console.WriteLine("Waiting for debugger to attach. Press ENTER to continue"); - Console.WriteLine($"Process ID: {Process.GetCurrentProcess().Id}"); - Console.ReadLine(); - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Reporter.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Reporter.cs deleted file mode 100644 index 664d8fc53..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Reporter.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - // Stupid-simple console manager - internal class Reporter - { - private static readonly Reporter Null = new Reporter(console: null); - private static object _lock = new object(); - - private readonly AnsiConsole _console; - - private Reporter(AnsiConsole console) - { - _console = console; - } - - public static Reporter Output { get; } = new Reporter(AnsiConsole.GetOutput()); - public static Reporter Error { get; } = new Reporter(AnsiConsole.GetOutput()); - public static Reporter Verbose { get; } = new Reporter(AnsiConsole.GetOutput()); - - public void WriteLine(string message) - { - lock (_lock) - { - _console?.WriteLine(message); - } - } - - public void WriteLine() - { - lock (_lock) - { - _console?.Writer?.WriteLine(); - } - } - - public void Write(string message) - { - lock (_lock) - { - _console?.Writer?.Write(message); - } - } - - public void WriteBanner(string content) - { - string border = new string('*', content.Length + 6); - WriteLine($@"{border} -* {content} * -{border}".Green()); - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/StandardGoals.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/StandardGoals.cs deleted file mode 100644 index 975f1fa6f..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/StandardGoals.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class StandardGoals - { - public static BuildSetup UseStandardGoals(this BuildSetup self) - { - return self.UseTargets(new[] - { - new BuildTarget("Default", "Standard Goals", new [] { "Prepare", "Compile", "Test", "Package", "Publish" }), - new BuildTarget("Prepare", "Standard Goals"), - new BuildTarget("Compile", "Standard Goals"), - new BuildTarget("Test", "Standard Goals"), - new BuildTarget("Package", "Standard Goals"), - new BuildTarget("Publish", "Standard Goals") - }); - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetAttribute.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetAttribute.cs deleted file mode 100644 index c7b851808..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetAttribute.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class TargetAttribute : Attribute - { - public string Name { get; set; } - public IEnumerable Dependencies { get; } - - public TargetAttribute() - { - Dependencies = Enumerable.Empty(); - } - - // Attributes can only use constants, so a comma-separated string is better :) - public TargetAttribute(params string[] dependencies) - { - Dependencies = dependencies; - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildArchitecturesAttribute.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildArchitecturesAttribute.cs deleted file mode 100644 index da2f99461..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildArchitecturesAttribute.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class BuildArchitecturesAttribute : TargetConditionAttribute - { - private IEnumerable _buildArchitectures; - - public BuildArchitecturesAttribute(params BuildArchitecture[] architectures) - { - if (architectures == null) - { - throw new ArgumentNullException(nameof(architectures)); - } - - _buildArchitectures = architectures; - } - - public override bool EvaluateCondition() - { - var currentArchitecture = CurrentArchitecture.Current; - - if (currentArchitecture == default(BuildArchitecture)) - { - throw new Exception("Unrecognized Architecture"); - } - - foreach (var architecture in _buildArchitectures) - { - if (architecture == currentArchitecture) - { - return true; - } - } - - return false; - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildPlatformsAttribute.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildPlatformsAttribute.cs deleted file mode 100644 index 1c4814b33..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/BuildPlatformsAttribute.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class BuildPlatformsAttribute : TargetConditionAttribute - { - private IEnumerable _buildPlatforms; - private string _version; - - public BuildPlatformsAttribute(params BuildPlatform[] platforms) - { - if (platforms == null) - { - throw new ArgumentNullException(nameof(platforms)); - } - - _buildPlatforms = platforms; - } - - public BuildPlatformsAttribute(BuildPlatform platform, string version) - { - _buildPlatforms = new BuildPlatform[] { platform }; - _version = version; - } - - public override bool EvaluateCondition() - { - foreach (var platform in _buildPlatforms) - { - if (CurrentPlatform.IsPlatform(platform, _version)) - { - return true; - } - } - - return false; - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/EnvironmentAttribute.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/EnvironmentAttribute.cs deleted file mode 100644 index 0a8455e5c..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/EnvironmentAttribute.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Linq; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)] - public class EnvironmentAttribute : TargetConditionAttribute - { - private string _envVar; - private string[] _expectedVals; - - public EnvironmentAttribute(string envVar, params string[] expectedVals) - { - if (string.IsNullOrEmpty(envVar)) - { - throw new ArgumentNullException(nameof(envVar)); - } - if (expectedVals == null) - { - throw new ArgumentNullException(nameof(expectedVals)); - } - - _envVar = envVar; - _expectedVals = expectedVals; - } - - public override bool EvaluateCondition() - { - var actualVal = Environment.GetEnvironmentVariable(_envVar); - - if (_expectedVals.Any()) - { - return _expectedVals.Any(ev => string.Equals(actualVal, ev, StringComparison.Ordinal)); - } - else - { - return !string.IsNullOrEmpty(actualVal); - } - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/TargetConditionAttribute.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/TargetConditionAttribute.cs deleted file mode 100644 index 74243f06a..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/TargetConditions/TargetConditionAttribute.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public abstract class TargetConditionAttribute : Attribute - { - public abstract bool EvaluateCondition(); - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/UndefinedTargetException.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/UndefinedTargetException.cs deleted file mode 100644 index 69243ced9..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/UndefinedTargetException.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class UndefinedTargetException : Exception - { - public UndefinedTargetException(string message) : base(message) { } - } -} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/CheckPrereqs.cs b/build_projects/dotnet-cli-build/CheckPrereqs.cs index 27294d1f5..9678b199d 100644 --- a/build_projects/dotnet-cli-build/CheckPrereqs.cs +++ b/build_projects/dotnet-cli-build/CheckPrereqs.cs @@ -14,113 +14,96 @@ namespace Microsoft.DotNet.Cli.Build { public override bool Execute() { - Run(s => Log.LogMessage(s)); - - return true; + return CheckCoreclrPlatformDependencies() && + CheckInstallerBuildPlatformDependencies() && + LocateStage0(); } - public static void Run(Action logInfo) + private bool CheckCoreclrPlatformDependencies() { - CheckCoreclrPlatformDependencies(); - CheckInstallerBuildPlatformDependencies(); - - LocateStage0(logInfo); + return CheckUbuntuCoreclrAndCoreFxDependencies() && + CheckCentOSCoreclrAndCoreFxDependencies(); } - private static void CheckCoreclrPlatformDependencies() + private bool CheckInstallerBuildPlatformDependencies() { - CheckUbuntuCoreclrAndCoreFxDependencies(); - CheckCentOSCoreclrAndCoreFxDependencies(); + return CheckUbuntuDebianPackageBuildDependencies(); } - private static void CheckInstallerBuildPlatformDependencies() + private bool CheckUbuntuCoreclrAndCoreFxDependencies() { - CheckUbuntuDebianPackageBuildDependencies(); - } + bool isSuccessful = true; - private static void CheckUbuntuCoreclrAndCoreFxDependencies() - { if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) { - var errorMessageBuilder = new StringBuilder(); var stage0 = DotNetCli.Stage0.BinPath; foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) { if (!AptDependencyUtility.PackageIsInstalled(package)) { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with apt-get install {package}"); - errorMessageBuilder.Append(Environment.NewLine); + isSuccessful = false; + + Log.LogError($"Coreclr package dependency {package} missing. Install with `apt-get install {package}`"); } } - - if (errorMessageBuilder.Length > 0) - { - throw new BuildFailureException(errorMessageBuilder.ToString()); - } } + + return isSuccessful; } - private static void CheckCentOSCoreclrAndCoreFxDependencies() + private bool CheckCentOSCoreclrAndCoreFxDependencies() { + var isSuccessful = true; + if (CurrentPlatform.IsPlatform(BuildPlatform.CentOS)) { - var errorMessageBuilder = new StringBuilder(); - foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) { if (!YumDependencyUtility.PackageIsInstalled(package)) { - errorMessageBuilder.Append($"Error: Coreclr package dependency {package} missing."); - errorMessageBuilder.Append(Environment.NewLine); - errorMessageBuilder.Append($"-> install with yum install {package}"); - errorMessageBuilder.Append(Environment.NewLine); + isSuccessful = false; + + Log.LogError($"Coreclr package dependency {package} missing. Install with yum install {package}"); } } - - if (errorMessageBuilder.Length > 0) - { - throw new BuildFailureException(errorMessageBuilder.ToString()); - } } + + return isSuccessful; } - private static void CheckUbuntuDebianPackageBuildDependencies() + private bool CheckUbuntuDebianPackageBuildDependencies() { + var isSuccessful = true; + if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) { - var messageBuilder = new StringBuilder(); var aptDependencyUtility = new AptDependencyUtility(); - foreach (var package in PackageDependencies.DebianPackageBuildDependencies) { if (!AptDependencyUtility.PackageIsInstalled(package)) { - messageBuilder.Append($"Error: Debian package build dependency {package} missing."); - messageBuilder.Append(Environment.NewLine); - messageBuilder.Append($"-> install with apt-get install {package}"); - messageBuilder.Append(Environment.NewLine); + isSuccessful = false; + + Log.LogError($"Debian package build dependency {package} missing. Install with apt-get install {package}"); } } - - if (messageBuilder.Length > 0) - { - throw new BuildFailureException(messageBuilder.ToString()); - } } + + return isSuccessful; } - private static void LocateStage0(Action logInfo) + private bool LocateStage0() { // We should have been run in the repo root, so locate the stage 0 relative to current directory var stage0 = DotNetCli.Stage0.BinPath; if (!Directory.Exists(stage0)) { - throw new BuildFailureException($"Stage 0 directory does not exist: {stage0}"); + Log.LogError($"Stage 0 directory does not exist: {stage0}"); + + return false; } // Identify the version @@ -128,11 +111,16 @@ namespace Microsoft.DotNet.Cli.Build if (string.IsNullOrEmpty(versionFile)) { - throw new Exception($"'.version' file not found in '{stage0}' folder"); + Log.LogError($"'.version' file not found in '{stage0}' folder"); + + return false; } var version = File.ReadAllLines(versionFile); - logInfo($"Using Stage 0 Version: {version[1]}"); + + Log.LogMessage($"Using Stage 0 Version: {version[1]}"); + + return true; } } } diff --git a/build_projects/dotnet-cli-build/CliDirs.cs b/build_projects/dotnet-cli-build/CliDirs.cs deleted file mode 100644 index edf2f23a6..000000000 --- a/build_projects/dotnet-cli-build/CliDirs.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; -using Microsoft.DotNet.InternalAbstractions; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class CliDirs - { - public static readonly string CoreSetupDownload = Path.Combine( - Dirs.Intermediate, - "coreSetupDownload", - CliDependencyVersions.SharedFrameworkVersion); - } -} diff --git a/build_projects/dotnet-cli-build/CliMonikers.cs b/build_projects/dotnet-cli-build/CliMonikers.cs deleted file mode 100644 index 6785f7d15..000000000 --- a/build_projects/dotnet-cli-build/CliMonikers.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class CliMonikers - { - public static string GetSdkDebianPackageName(BuildTargetContext c) - { - var nugetVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; - - return $"dotnet-dev-{nugetVersion}"; - } - } -} diff --git a/build_projects/dotnet-cli-build/PrepareTargets.cs b/build_projects/dotnet-cli-build/PrepareTargets.cs deleted file mode 100644 index 096ae824d..000000000 --- a/build_projects/dotnet-cli-build/PrepareTargets.cs +++ /dev/null @@ -1,391 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.IO.Compression; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; -using static Microsoft.DotNet.Cli.Build.Utils; - -namespace Microsoft.DotNet.Cli.Build -{ - public class PrepareTargets - { - - // All major targets will depend on this in order to ensure variables are set up right if they are run independently - public static BuildTargetResult Init(BuildTargetContext c) - { - GenerateVersions(c); - CheckPrereqs.Run(s => c.Info(s)); - ExpectedBuildArtifacts(c); - SetTelemetryProfile(c); - - var configEnv = Environment.GetEnvironmentVariable("CONFIGURATION"); - - if (string.IsNullOrEmpty(configEnv)) - { - configEnv = "Debug"; - } - - c.BuildContext["Configuration"] = configEnv; - c.BuildContext["Channel"] = Environment.GetEnvironmentVariable("CHANNEL"); - - c.Info($"Building {c.BuildContext["Configuration"]} to: {Dirs.Output}"); - c.Info("Build Environment:"); - c.Info($" Operating System: {RuntimeEnvironment.OperatingSystem} {RuntimeEnvironment.OperatingSystemVersion}"); - c.Info($" Platform: {RuntimeEnvironment.OperatingSystemPlatform}"); - - return c.Success(); - } - - public static BuildTargetResult GenerateVersions(BuildTargetContext c) - { - var commitCount = GitUtils.GetCommitCount(); - var commitHash = GitUtils.GetCommitHash(); - - var branchInfo = ReadBranchInfo(c, Path.Combine(c.BuildContext.BuildDirectory, "branchinfo.txt")); - var buildVersion = new BuildVersion() - { - Major = int.Parse(branchInfo["MAJOR_VERSION"]), - Minor = int.Parse(branchInfo["MINOR_VERSION"]), - Patch = int.Parse(branchInfo["PATCH_VERSION"]), - ReleaseSuffix = branchInfo["RELEASE_SUFFIX"], - CommitCount = commitCount - }; - c.BuildContext["BuildVersion"] = buildVersion; - - c.BuildContext["BranchName"] = branchInfo["BRANCH_NAME"]; - c.BuildContext["CommitHash"] = commitHash; - - c.Info($"Building Version: {buildVersion.SimpleVersion} (NuGet Packages: {buildVersion.NuGetVersion})"); - c.Info($"From Commit: {commitHash}"); - - return c.Success(); - } - - public static BuildTargetResult ZipTemplates(BuildTargetContext c) - { - var templateDirectories = Directory.GetDirectories( - Path.Combine(Dirs.RepoRoot, "src", "dotnet", "commands", "dotnet-new")); - - foreach (var directory in templateDirectories) - { - var zipFile = Path.Combine(Path.GetDirectoryName(directory), Path.GetFileName(directory) + ".zip"); - if (File.Exists(zipFile)) - { - File.Delete(zipFile); - } - - ZipFile.CreateFromDirectory(directory, zipFile); - } - - return c.Success(); - } - - - - public static BuildTargetResult ExpectedBuildArtifacts(BuildTargetContext c) - { - var config = Environment.GetEnvironmentVariable("CONFIGURATION"); - var versionBadgeName = $"{Monikers.GetBadgeMoniker()}_{config}_version_badge.svg"; - c.BuildContext["VersionBadge"] = Path.Combine(Dirs.Output, versionBadgeName); - - var cliVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; - var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; - var hostVersion = CliDependencyVersions.SharedHostVersion; - var hostFxrVersion = CliDependencyVersions.HostFxrVersion; - - // Generated Installers + Archives - AddInstallerArtifactToContext(c, "dotnet-sdk", "Sdk", cliVersion); - AddInstallerArtifactToContext(c, "dotnet-dev", "CombinedFrameworkSDKHost", cliVersion); - AddInstallerArtifactToContext(c, "dotnet-sharedframework-sdk", "CombinedFrameworkSDK", cliVersion); - AddInstallerArtifactToContext(c, "dotnet-sdk-debug", "SdkSymbols", cliVersion); - - //Downloaded Installers + Archives - AddInstallerArtifactToContext(c, "dotnet-host", "SharedHost", hostVersion); - AddInstallerArtifactToContext(c, "dotnet-hostfxr", "HostFxr", hostFxrVersion); - AddInstallerArtifactToContext(c, "dotnet-sharedframework", "SharedFramework", sharedFrameworkVersion); - AddInstallerArtifactToContext(c, "dotnet", "CombinedFrameworkHost", sharedFrameworkVersion); - - return c.Success(); - } - - public static BuildTargetResult DownloadHostAndSharedFxArtifacts(BuildTargetContext c) - { - ExpectedBuildArtifacts(c); - DownloadHostAndSharedFxArchives(c); - DownloadHostAndSharedFxInstallers(c); - - return c.Success(); - } - - public static BuildTargetResult DownloadHostAndSharedFxArchives(BuildTargetContext c) - { - var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; - var sharedFrameworkChannel = CliDependencyVersions.SharedFrameworkChannel; - - var combinedSharedHostAndFrameworkArchiveDownloadFile = - Path.Combine(CliDirs.CoreSetupDownload, "combinedSharedHostAndFrameworkArchive"); - - Mkdirp(Path.GetDirectoryName(combinedSharedHostAndFrameworkArchiveDownloadFile)); - - if (!File.Exists(combinedSharedHostAndFrameworkArchiveDownloadFile)) - { - // Needed for computing the blob path - var combinedSharedHostAndFrameworkArchiveBuildContextFile = - c.BuildContext.Get("CombinedFrameworkHostCompressedFile"); - - AzurePublisher.DownloadFile( - CalculateArchiveBlob( - combinedSharedHostAndFrameworkArchiveBuildContextFile, - sharedFrameworkChannel, - sharedFrameworkVersion), - combinedSharedHostAndFrameworkArchiveDownloadFile).Wait(); - - - // Unpack the combined archive to shared framework publish directory - Rmdir(Dirs.SharedFrameworkPublish); - Mkdirp(Dirs.SharedFrameworkPublish); - if (CurrentPlatform.IsWindows) - { - ZipFile.ExtractToDirectory(combinedSharedHostAndFrameworkArchiveDownloadFile, Dirs.SharedFrameworkPublish); - } - else - { - Exec("tar", "xf", combinedSharedHostAndFrameworkArchiveDownloadFile, "-C", Dirs.SharedFrameworkPublish); - } - } - - return c.Success(); - } - - public static BuildTargetResult DownloadHostAndSharedFxInstallers(BuildTargetContext c) - { - if (CurrentPlatform.IsAnyPlatform(BuildPlatform.Windows, BuildPlatform.OSX, BuildPlatform.Ubuntu)) - { - var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; - var hostVersion = CliDependencyVersions.SharedHostVersion; - var hostFxrVersion = CliDependencyVersions.HostFxrVersion; - - var sharedFrameworkChannel = CliDependencyVersions.SharedFrameworkChannel; - var sharedHostChannel = CliDependencyVersions.SharedHostChannel; - var hostFxrChannel = CliDependencyVersions.HostFxrChannel; - - var sharedFrameworkInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedFrameworkInstaller"); - var sharedHostInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "sharedHostInstaller"); - var hostFxrInstallerDownloadFile = Path.Combine(CliDirs.CoreSetupDownload, "hostFxrInstaller"); - - Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDownloadFile)); - Mkdirp(Path.GetDirectoryName(sharedHostInstallerDownloadFile)); - Mkdirp(Path.GetDirectoryName(hostFxrInstallerDownloadFile)); - - if (!File.Exists(sharedFrameworkInstallerDownloadFile)) - { - var sharedFrameworkInstallerDestinationFile = c.BuildContext.Get("SharedFrameworkInstallerFile"); - Mkdirp(Path.GetDirectoryName(sharedFrameworkInstallerDestinationFile)); - - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - sharedFrameworkInstallerDestinationFile, - sharedFrameworkChannel, - sharedFrameworkVersion), - sharedFrameworkInstallerDownloadFile).Wait(); - - File.Copy(sharedFrameworkInstallerDownloadFile, sharedFrameworkInstallerDestinationFile, true); - } - - if (!File.Exists(sharedHostInstallerDownloadFile)) - { - var sharedHostInstallerDestinationFile = c.BuildContext.Get("SharedHostInstallerFile"); - Mkdirp(Path.GetDirectoryName(sharedHostInstallerDestinationFile)); - - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - sharedHostInstallerDestinationFile, - sharedHostChannel, - hostVersion), - sharedHostInstallerDownloadFile).Wait(); - - File.Copy(sharedHostInstallerDownloadFile, sharedHostInstallerDestinationFile, true); - } - - if (!File.Exists(hostFxrInstallerDownloadFile)) - { - var hostFxrInstallerDestinationFile = c.BuildContext.Get("HostFxrInstallerFile"); - Mkdirp(Path.GetDirectoryName(hostFxrInstallerDestinationFile)); - - AzurePublisher.DownloadFile( - CalculateInstallerBlob( - hostFxrInstallerDestinationFile, - hostFxrChannel, - hostFxrVersion), - hostFxrInstallerDownloadFile).Wait(); - - File.Copy(hostFxrInstallerDownloadFile, hostFxrInstallerDestinationFile, true); - } - } - - return c.Success(); - } - - public static BuildTargetResult CheckPackageCache(BuildTargetContext c) - { - var ciBuild = string.Equals(Environment.GetEnvironmentVariable("CI_BUILD"), "1", StringComparison.Ordinal); - - // Always set the package cache location local to the build - Environment.SetEnvironmentVariable("NUGET_PACKAGES", Dirs.NuGetPackages); - - CleanNuGetTempCache(); - - // Determine cache expiration time - var cacheExpiration = 7 * 24; // cache expiration in hours - var cacheExpirationStr = Environment.GetEnvironmentVariable("NUGET_PACKAGES_CACHE_TIME_LIMIT"); - if (!string.IsNullOrEmpty(cacheExpirationStr)) - { - cacheExpiration = int.Parse(cacheExpirationStr); - } - - if (ciBuild) - { - var cacheTimeFile = Path.Combine(Dirs.NuGetPackages, "packageCacheTime.txt"); - - DateTime? cacheTime = null; - try - { - // Read the cache file - if (File.Exists(cacheTimeFile)) - { - var content = File.ReadAllText(cacheTimeFile); - if (!string.IsNullOrEmpty(content)) - { - cacheTime = DateTime.ParseExact("O", content, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); - } - } - } - catch (Exception ex) - { - c.Warn($"Error reading NuGet cache time file, leaving the cache alone"); - c.Warn($"Error Detail: {ex.ToString()}"); - } - - if (cacheTime == null || (cacheTime.Value.AddHours(cacheExpiration) < DateTime.UtcNow)) - { - // Cache has expired or the status is unknown, clear it and write the file - c.Info("Clearing NuGet cache"); - Rmdir(Dirs.NuGetPackages); - Mkdirp(Dirs.NuGetPackages); - File.WriteAllText(cacheTimeFile, DateTime.UtcNow.ToString("O")); - } - } - - return c.Success(); - } - - public static BuildTargetResult RestorePackages(BuildTargetContext c) - { - CheckPackageCache(c); - - var dotnet = DotNetCli.Stage0; - - dotnet.Restore("--verbosity", "verbose", "--disable-parallel") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "src")) - .Execute() - .EnsureSuccessful(); - dotnet.Restore("--verbosity", "verbose", "--disable-parallel", "--infer-runtimes") - .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "tools")) - .Execute() - .EnsureSuccessful(); - - return c.Success(); - } - - public static BuildTargetResult SetTelemetryProfile(BuildTargetContext c) - { - var gitResult = Cmd("git", "rev-parse", "HEAD") - .CaptureStdOut() - .Execute(); - gitResult.EnsureSuccessful(); - - var commitHash = gitResult.StdOut.Trim(); - - Environment.SetEnvironmentVariable("DOTNET_CLI_TELEMETRY_PROFILE", $"https://github.com/dotnet/cli;{commitHash}"); - - return c.Success(); - } - - private static IDictionary ReadBranchInfo(BuildTargetContext c, string path) - { - var lines = File.ReadAllLines(path); - var dict = new Dictionary(); - c.Verbose("Branch Info:"); - foreach (var line in lines) - { - if (!line.Trim().StartsWith("#") && !string.IsNullOrWhiteSpace(line)) - { - var splat = line.Split(new[] { '=' }, 2); - dict[splat[0]] = splat[1]; - c.Verbose($" {splat[0]} = {splat[1]}"); - } - } - return dict; - } - - private static void AddInstallerArtifactToContext( - BuildTargetContext c, - string artifactPrefix, - string contextPrefix, - string version) - { - var productName = Monikers.GetProductMoniker(c, artifactPrefix, version); - - var extension = CurrentPlatform.IsWindows ? ".zip" : ".tar.gz"; - c.BuildContext[contextPrefix + "CompressedFile"] = Path.Combine(Dirs.Packages, productName + extension); - - string installer = ""; - switch (CurrentPlatform.Current) - { - case BuildPlatform.Windows: - if (contextPrefix.Contains("Combined")) - { - installer = productName + ".exe"; - } - else - { - installer = productName + ".msi"; - } - break; - case BuildPlatform.OSX: - installer = productName + ".pkg"; - break; - case BuildPlatform.Ubuntu: - installer = productName + ".deb"; - break; - default: - break; - } - - if (!string.IsNullOrEmpty(installer)) - { - c.BuildContext[contextPrefix + "InstallerFile"] = Path.Combine(Dirs.Packages, installer); - } - } - - // The following CalculateBlob methods are temporary until the core-setup repo up-takes the new Azure Publish layout and - // CLI consumes newer Shared FX versions. - private static string CalculateArchiveBlob(string archiveFile, string channel, string version) - { - return $"{channel}/Binaries/{version}/{Path.GetFileName(archiveFile)}"; - } - - private static string CalculateInstallerBlob(string installerFile, string channel, string version) - { - return $"{channel}/Installers/{version}/{Path.GetFileName(installerFile)}"; - } - } -} diff --git a/build_projects/dotnet-cli-build/PublishTargets.cs b/build_projects/dotnet-cli-build/PublishTargets.cs deleted file mode 100644 index 0ca806806..000000000 --- a/build_projects/dotnet-cli-build/PublishTargets.cs +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text.RegularExpressions; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.Build.Utilities; - -namespace Microsoft.DotNet.Cli.Build -{ - public class PublishTargets : Task - { - private static AzurePublisher AzurePublisherTool { get; set; } - - private static DebRepoPublisher DebRepoPublisherTool { get; set; } - - private static string Channel { get; set; } - - private static string CommitHash { get; set; } - - private static string CliNuGetVersion { get; set; } - - private static string SharedFrameworkNugetVersion { get; set; } - - public override bool Execute() - { - BuildContext context = new BuildSetup("MSBuild").UseAllTargetsFromAssembly().CreateBuildContext(); - BuildTargetContext c = new BuildTargetContext(context, null, null); - - return Publish(c).Success; - } - - public static BuildTargetResult InitPublish(BuildTargetContext c) - { - AzurePublisherTool = new AzurePublisher(); - DebRepoPublisherTool = new DebRepoPublisher(Dirs.Packages); - - CliNuGetVersion = c.BuildContext.Get("BuildVersion").NuGetVersion; - SharedFrameworkNugetVersion = CliDependencyVersions.SharedFrameworkVersion; - Channel = c.BuildContext.Get("Channel"); - CommitHash = c.BuildContext.Get("CommitHash"); - - return c.Success(); - } - - [Target] - public static BuildTargetResult Publish(BuildTargetContext c) - { - if (EnvVars.GetBool("PUBLISH_TO_AZURE_BLOB")) // This is set by CI systems - { - PrepareTargets.Init(c); - - InitPublish(c); - PublishArtifacts(c); - FinalizeBuild(c); - } - - return c.Success(); - } - - public static BuildTargetResult FinalizeBuild(BuildTargetContext c) - { - if (CheckIfAllBuildsHavePublished()) - { - string targetContainer = $"{AzurePublisher.Product.Sdk}/{Channel}"; - string targetVersionFile = $"{targetContainer}/{CommitHash}"; - string semaphoreBlob = $"{targetContainer}/publishSemaphore"; - AzurePublisherTool.CreateBlobIfNotExists(semaphoreBlob); - string leaseId = AzurePublisherTool.AcquireLeaseOnBlob(semaphoreBlob); - - // Prevent race conditions by dropping a version hint of what version this is. If we see this file - // and it is the same as our version then we know that a race happened where two+ builds finished - // at the same time and someone already took care of publishing and we have no work to do. - if (AzurePublisherTool.IsLatestSpecifiedVersion(targetVersionFile)) - { - AzurePublisherTool.ReleaseLeaseOnBlob(semaphoreBlob, leaseId); - return c.Success(); - } - else - { - Regex versionFileRegex = new Regex(@"(?[\w\d]{40})"); - - // Delete old version files - AzurePublisherTool.ListBlobs(targetContainer) - .Where(s => versionFileRegex.IsMatch(s)) - .ToList() - .ForEach(f => AzurePublisherTool.TryDeleteBlob(f)); - - // Drop the version file signaling such for any race-condition builds (see above comment). - AzurePublisherTool.DropLatestSpecifiedVersion(targetVersionFile); - } - - try - { - CopyBlobsToLatest(targetContainer); - - string cliVersion = Utils.GetCliVersionFileContent(c); - AzurePublisherTool.PublishStringToBlob($"{targetContainer}/latest.version", cliVersion); - - UpdateVersionsRepo(c); - } - finally - { - AzurePublisherTool.ReleaseLeaseOnBlob(semaphoreBlob, leaseId); - } - } - - return c.Success(); - } - - private static void CopyBlobsToLatest(string destinationFolder) - { - foreach (string blob in AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, CliNuGetVersion)) - { - string targetName = Path.GetFileName(blob) - .Replace(CliNuGetVersion, "latest"); - - string target = $"{destinationFolder}/{targetName}"; - AzurePublisherTool.CopyBlob(blob, target); - } - } - - private static bool CheckIfAllBuildsHavePublished() - { - Dictionary badges = new Dictionary() - { - { "Windows_x86", false }, - { "Windows_x64", false }, - { "Ubuntu_x64", false }, - { "Ubuntu_16_04_x64", false }, - { "RHEL_x64", false }, - { "OSX_x64", false }, - { "Debian_x64", false }, - { "CentOS_x64", false }, - { "Fedora_23_x64", false }, - { "openSUSE_13_2_x64", false } - }; - - var versionBadgeName = $"{Monikers.GetBadgeMoniker()}"; - if (!badges.ContainsKey(versionBadgeName)) - { - throw new ArgumentException($"A new OS build '{versionBadgeName}' was added without adding the moniker to the {nameof(badges)} lookup"); - } - - IEnumerable blobs = AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, CliNuGetVersion); - foreach (string file in blobs) - { - string name = Path.GetFileName(file); - foreach (string img in badges.Keys) - { - if ((name.StartsWith($"{img}")) && (name.EndsWith(".svg"))) - { - badges[img] = true; - break; - } - } - } - - return badges.Values.All(v => v); - } - - public static BuildTargetResult PublishArtifacts(BuildTargetContext c) - { - PublishInstallerFilesToAzure(c); - PublishArchivesToAzure(c); - PublishDebFilesToDebianRepo(c); - PublishCliVersionBadge(c); - - return c.Success(); - } - - public static BuildTargetResult PublishInstallerFilesToAzure(BuildTargetContext c) - { - PublishSdkInstallerFileToAzure(c); - PublishCombinedFrameworkSDKHostInstallerFileToAzure(c); - - return c.Success(); - } - - public static BuildTargetResult PublishArchivesToAzure(BuildTargetContext c) - { - PublishCombinedHostFrameworkSdkArchiveToAzure(c); - PublishCombinedFrameworkSDKArchiveToAzure(c); - PublishSDKSymbolsArchiveToAzure(c); - - return c.Success(); - } - - public static BuildTargetResult PublishDebFilesToDebianRepo(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - PublishSdkDebToDebianRepo(c); - } - - return c.Success(); - } - - public static BuildTargetResult PublishCliVersionBadge(BuildTargetContext c) - { - var versionBadge = c.BuildContext.Get("VersionBadge"); - UploadFile(versionBadge); - - return c.Success(); - } - - public static BuildTargetResult PublishSdkInstallerFileToAzure(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - var installerFile = c.BuildContext.Get("SdkInstallerFile"); - UploadFile(installerFile); - } - - return c.Success(); - } - - public static BuildTargetResult PublishCombinedFrameworkSDKHostInstallerFileToAzure(BuildTargetContext c) - { - if (CurrentPlatform.IsAnyPlatform(BuildPlatform.Windows, BuildPlatform.OSX)) - { - var installerFile = c.BuildContext.Get("CombinedFrameworkSDKHostInstallerFile"); - UploadFile(installerFile); - } - - return c.Success(); - } - - public static BuildTargetResult PublishCombinedFrameworkSDKArchiveToAzure(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows)) - { - var archiveFile = c.BuildContext.Get("CombinedFrameworkSDKCompressedFile"); - UploadFile(archiveFile); - } - - return c.Success(); - } - - public static BuildTargetResult PublishCombinedHostFrameworkSdkArchiveToAzure(BuildTargetContext c) - { - var archiveFile = c.BuildContext.Get("CombinedFrameworkSDKHostCompressedFile"); - UploadFile(archiveFile); - - return c.Success(); - } - - public static BuildTargetResult PublishSDKSymbolsArchiveToAzure(BuildTargetContext c) - { - var archiveFile = c.BuildContext.Get("SdkSymbolsCompressedFile"); - UploadFile(archiveFile); - - return c.Success(); - } - - public static BuildTargetResult PublishSdkDebToDebianRepo(BuildTargetContext c) - { - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu)) - { - var version = CliNuGetVersion; - - var packageName = CliMonikers.GetSdkDebianPackageName(c); - var installerFile = c.BuildContext.Get("SdkInstallerFile"); - var uploadUrl = AzurePublisher.CalculateFullUrlForFile(installerFile, AzurePublisher.Product.Sdk, version); - - DebRepoPublisherTool.PublishDebFileToDebianRepo( - packageName, - version, - uploadUrl); - } - - return c.Success(); - } - - private static void UpdateVersionsRepo(BuildTargetContext c) - { - string githubAuthToken = EnvVars.EnsureVariable("GITHUB_PASSWORD"); - string nupkgFilePath = Dirs.Packages; - string branchName = c.BuildContext.Get("BranchName"); - string versionsRepoPath = $"build-info/dotnet/cli/{branchName}/Latest"; - - VersionRepoUpdater repoUpdater = new VersionRepoUpdater(githubAuthToken); - repoUpdater.UpdatePublishedVersions(nupkgFilePath, versionsRepoPath).Wait(); - } - - private static string UploadFile(string file) - { - return AzurePublisherTool.UploadFile(file, AzurePublisher.Product.Sdk, CliNuGetVersion); - } - } -} - diff --git a/build_projects/shared-build-targets-utils/BuildFailureException.cs b/build_projects/shared-build-targets-utils/BuildFailureException.cs new file mode 100644 index 000000000..eeee16171 --- /dev/null +++ b/build_projects/shared-build-targets-utils/BuildFailureException.cs @@ -0,0 +1,19 @@ +using System; + +namespace Microsoft.DotNet.Cli.Build +{ + public class BuildFailureException : Exception + { + public BuildFailureException() + { + } + + public BuildFailureException(string message) : base(message) + { + } + + public BuildFailureException(string message, Exception innerException) : base(message, innerException) + { + } + } +} \ No newline at end of file diff --git a/build_projects/shared-build-targets-utils/Utils/FS.cs b/build_projects/shared-build-targets-utils/Utils/FS.cs index 80cddcff2..dc20ec859 100644 --- a/build_projects/shared-build-targets-utils/Utils/FS.cs +++ b/build_projects/shared-build-targets-utils/Utils/FS.cs @@ -102,22 +102,5 @@ namespace Microsoft.DotNet.Cli.Build } } } - - public static void CleanBinObj(BuildTargetContext c, string dir) - { - dir = dir ?? c.BuildContext.BuildDirectory; - foreach(var candidate in Directory.EnumerateDirectories(dir)) - { - if (string.Equals(Path.GetFileName(candidate), "bin") || - string.Equals(Path.GetFileName(candidate), "obj")) - { - Utils.DeleteDirectory(candidate); - } - else - { - CleanBinObj(c, candidate); - } - } - } } } diff --git a/build_projects/shared-build-targets-utils/Utils/Monikers.cs b/build_projects/shared-build-targets-utils/Utils/Monikers.cs index 81acc480c..2553ccf44 100644 --- a/build_projects/shared-build-targets-utils/Utils/Monikers.cs +++ b/build_projects/shared-build-targets-utils/Utils/Monikers.cs @@ -15,22 +15,6 @@ namespace Microsoft.DotNet.Cli.Build public const string SharedHostBrandName = "Microsoft .NET Core 1.0.0 - Host"; public const string HostFxrBrandName = "Microsoft .NET Core 1.0.0 - Host FX Resolver"; - public static string GetProductMoniker(BuildTargetContext c, string artifactPrefix, string version) - { - string rid = RuntimeEnvironment.GetRuntimeIdentifier(); - - if (rid == "ubuntu.16.04-x64" || rid == "fedora.23-x64" || rid == "opensuse.13.2-x64") - { - return $"{artifactPrefix}-{rid}.{version}"; - } - else - { - string osname = GetOSShortName(); - var arch = CurrentArchitecture.Current.ToString(); - return $"{artifactPrefix}-{osname}-{arch}.{version}"; - } - } - public static string GetBadgeMoniker() { switch (RuntimeEnvironment.GetRuntimeIdentifier()) @@ -55,12 +39,7 @@ namespace Microsoft.DotNet.Cli.Build { return $"dotnet-sharedframework-{SharedFrameworkName}-{sharedFrameworkNugetVersion}".ToLower(); } - - public static string GetDebianSharedHostPackageName(BuildTargetContext c) - { - return $"dotnet-host".ToLower(); - } - + public static string GetOSShortName() { string osname = ""; diff --git a/build_projects/shared-build-targets-utils/Utils/SharedFrameworkPublisher.cs b/build_projects/shared-build-targets-utils/Utils/SharedFrameworkPublisher.cs deleted file mode 100644 index 67e522557..000000000 --- a/build_projects/shared-build-targets-utils/Utils/SharedFrameworkPublisher.cs +++ /dev/null @@ -1,219 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Newtonsoft.Json.Linq; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.Cli.Build.Framework; -using Newtonsoft.Json; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; -using static Microsoft.DotNet.Cli.Build.FS; - -namespace Microsoft.DotNet.Cli.Build -{ - public class SharedFrameworkPublisher - { - public static string s_sharedFrameworkName = "Microsoft.NETCore.App"; - - private string _sharedFrameworkTemplateSourceRoot; - private string _sharedFrameworkNugetVersion; - private string _sharedFrameworkRid; - private string _sharedFrameworkSourceRoot; - private string _repoRoot; - private string _corehostLockedDirectory; - private string _corehostLatestDirectory; - - private Crossgen _crossgenUtil = new Crossgen(DependencyVersions.CoreCLRVersion, DependencyVersions.JitVersion); - private string _corehostPackageSource; - - public SharedFrameworkPublisher( - string repoRoot, - string corehostLockedDirectory, - string corehostLatestDirectory, - string corehostPackageSource, - string sharedFrameworkNugetVersion) - { - _repoRoot = repoRoot; - _corehostLockedDirectory = corehostLockedDirectory; - _corehostLatestDirectory = corehostLatestDirectory; - _corehostPackageSource = corehostPackageSource; - - _sharedFrameworkTemplateSourceRoot = Path.Combine(repoRoot, "src", "sharedframework", "framework"); - _sharedFrameworkNugetVersion = sharedFrameworkNugetVersion; - - _sharedFrameworkRid = ComputeSharedFrameworkRid(); - - _sharedFrameworkSourceRoot = GenerateSharedFrameworkProject( - _sharedFrameworkNugetVersion, - _sharedFrameworkTemplateSourceRoot, - _sharedFrameworkRid); - } - - public static string GetSharedFrameworkPublishPath(string outputRootDirectory, string sharedFrameworkNugetVersion) - { - return Path.Combine( - outputRootDirectory, - "shared", - s_sharedFrameworkName, - sharedFrameworkNugetVersion); - } - - private string ComputeSharedFrameworkRid() - { - return RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows - ? $"win7-{RuntimeEnvironment.RuntimeArchitecture}" - : RuntimeEnvironment.GetRuntimeIdentifier(); - } - - public void CopySharedHostArtifacts(string sharedFrameworkPublishRoot) - { - File.Copy( - Path.Combine(_corehostLockedDirectory, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sharedFrameworkPublishRoot, HostArtifactNames.DotnetHostBaseName), true); - - File.Copy( - Path.Combine(_corehostLockedDirectory, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sharedFrameworkPublishRoot, HostArtifactNames.DotnetHostFxrBaseName), true); - - } - - public void PublishSharedFramework(string outputRootDirectory, string commitHash, DotNetCli dotnetCli) - { - dotnetCli.Restore( - "--verbosity", "verbose", - "--disable-parallel", - "--infer-runtimes", - "--fallbacksource", _corehostPackageSource) - .WorkingDirectory(_sharedFrameworkSourceRoot) - .Execute() - .EnsureSuccessful(); - - // We publish to a sub folder of the PublishRoot so tools like heat and zip can generate folder structures easier. - string sharedFrameworkNameAndVersionRoot = GetSharedFrameworkPublishPath(outputRootDirectory, _sharedFrameworkNugetVersion); - if (Directory.Exists(sharedFrameworkNameAndVersionRoot)) - { - Utils.DeleteDirectory(sharedFrameworkNameAndVersionRoot); - } - - dotnetCli.Publish( - "--output", sharedFrameworkNameAndVersionRoot, - "-r", _sharedFrameworkRid, - _sharedFrameworkSourceRoot) - .Execute() - .EnsureSuccessful(); - - // Clean up artifacts that dotnet-publish generates which we don't need - PublishMutationUtilties.CleanPublishOutput( - sharedFrameworkNameAndVersionRoot, - "framework", - deleteRuntimeConfigJson: true, - deleteDepsJson: false); - - // Rename the .deps file - var destinationDeps = Path.Combine(sharedFrameworkNameAndVersionRoot, $"{s_sharedFrameworkName}.deps.json"); - File.Move(Path.Combine(sharedFrameworkNameAndVersionRoot, "framework.deps.json"), destinationDeps); - PublishMutationUtilties.ChangeEntryPointLibraryName(destinationDeps, null); - - // Generate RID fallback graph - GenerateRuntimeGraph(dotnetCli, destinationDeps); - - CopyHostArtifactsToSharedFramework(sharedFrameworkNameAndVersionRoot); - - if (File.Exists(Path.Combine(sharedFrameworkNameAndVersionRoot, "mscorlib.ni.dll"))) - { - // Publish already places the crossgen'd version of mscorlib into the output, so we can - // remove the IL version - File.Delete(Path.Combine(sharedFrameworkNameAndVersionRoot, "mscorlib.dll")); - } - - _crossgenUtil.CrossgenDirectory(sharedFrameworkNameAndVersionRoot, sharedFrameworkNameAndVersionRoot); - - // Generate .version file for sharedfx - var version = _sharedFrameworkNugetVersion; - var content = $@"{commitHash}{Environment.NewLine}{version}{Environment.NewLine}"; - File.WriteAllText(Path.Combine(sharedFrameworkNameAndVersionRoot, ".version"), content); - - return; - } - - private void GenerateRuntimeGraph(DotNetCli dotnetCli, string destinationDeps) - { - string runtimeGraphGeneratorRuntime = null; - switch (RuntimeEnvironment.OperatingSystemPlatform) - { - case Platform.Windows: - runtimeGraphGeneratorRuntime = "win"; - break; - case Platform.Linux: - runtimeGraphGeneratorRuntime = "linux"; - break; - case Platform.Darwin: - runtimeGraphGeneratorRuntime = "osx"; - break; - } - if (!string.IsNullOrEmpty(runtimeGraphGeneratorRuntime)) - { - var runtimeGraphGeneratorName = "RuntimeGraphGenerator"; - var runtimeGraphGeneratorProject = Path.Combine(Dirs.RepoRoot, "tools", "independent", runtimeGraphGeneratorName); - var runtimeGraphGeneratorOutput = Path.Combine(Dirs.Output, "tools", "independent", runtimeGraphGeneratorName); - - dotnetCli.Publish( - "--output", runtimeGraphGeneratorOutput, - runtimeGraphGeneratorProject).Execute().EnsureSuccessful(); - var runtimeGraphGeneratorExe = Path.Combine(runtimeGraphGeneratorOutput, $"{runtimeGraphGeneratorName}{Constants.ExeSuffix}"); - - Cmd(runtimeGraphGeneratorExe, "--project", _sharedFrameworkSourceRoot, "--deps", destinationDeps, runtimeGraphGeneratorRuntime) - .Execute() - .EnsureSuccessful(); - } - else - { - throw new Exception($"Could not determine rid graph generation runtime for platform {RuntimeEnvironment.OperatingSystemPlatform}"); - } - } - - private void CopyHostArtifactsToSharedFramework(string sharedFrameworkNameAndVersionRoot) - { - File.Copy( - Path.Combine(_corehostLockedDirectory, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sharedFrameworkNameAndVersionRoot, HostArtifactNames.DotnetHostBaseName), true); - File.Copy( - Path.Combine(_corehostLockedDirectory, HostArtifactNames.DotnetHostBaseName), - Path.Combine(sharedFrameworkNameAndVersionRoot, $"corehost{Constants.ExeSuffix}"), true); - File.Copy( - Path.Combine(_corehostLockedDirectory, HostArtifactNames.DotnetHostFxrBaseName), - Path.Combine(sharedFrameworkNameAndVersionRoot, HostArtifactNames.DotnetHostFxrBaseName), true); - - // Hostpolicy should be the latest and not the locked version as it is supposed to evolve for - // the framework and has a tight coupling with coreclr's API in the framework. - File.Copy( - Path.Combine(_corehostLatestDirectory, HostArtifactNames.HostPolicyBaseName), - Path.Combine(sharedFrameworkNameAndVersionRoot, HostArtifactNames.HostPolicyBaseName), true); - } - - private string GenerateSharedFrameworkProject( - string sharedFrameworkNugetVersion, - string sharedFrameworkTemplatePath, - string rid) - { - string sharedFrameworkProjectPath = Path.Combine(Dirs.Intermediate, "sharedFramework", "framework"); - Utils.DeleteDirectory(sharedFrameworkProjectPath); - CopyRecursive(sharedFrameworkTemplatePath, sharedFrameworkProjectPath, true); - - string templateFile = Path.Combine(sharedFrameworkProjectPath, "project.json.template"); - JObject sharedFrameworkProject = JsonUtils.ReadProject(templateFile); - sharedFrameworkProject["dependencies"]["Microsoft.NETCore.App"] = sharedFrameworkNugetVersion; - ((JObject)sharedFrameworkProject["runtimes"]).RemoveAll(); - sharedFrameworkProject["runtimes"][rid] = new JObject(); - - string projectJsonPath = Path.Combine(sharedFrameworkProjectPath, "project.json"); - JsonUtils.WriteProject(sharedFrameworkProject, projectJsonPath); - - Rm(templateFile); - - return sharedFrameworkProjectPath; - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/Utils.cs b/build_projects/shared-build-targets-utils/Utils/Utils.cs index 05e9f0aa6..e10011106 100644 --- a/build_projects/shared-build-targets-utils/Utils/Utils.cs +++ b/build_projects/shared-build-targets-utils/Utils/Utils.cs @@ -90,18 +90,5 @@ namespace Microsoft.DotNet.Cli.Build { return $@"{commitHash}{Environment.NewLine}{version}{Environment.NewLine}"; } - - public static string GetSharedFrameworkVersionFileContent(BuildTargetContext c) - { - string SharedFrameworkNugetVersion = c.BuildContext.Get("SharedFrameworkNugetVersion"); - return $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{SharedFrameworkNugetVersion}{Environment.NewLine}"; - } - - public static string GetCliVersionFileContent(BuildTargetContext c) - { - var buildVersion = c.BuildContext.Get("BuildVersion"); - var version = buildVersion.NuGetVersion; - return $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}"; - } } } diff --git a/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs b/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs index 480c6ce40..0b025bda1 100644 --- a/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs +++ b/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs @@ -13,7 +13,6 @@ namespace Microsoft.DotNet.Cli.Build var result = Command.Create("yum", "list", "installed", packageName) .CaptureStdOut() .CaptureStdErr() - .QuietBuildReporter() .Execute(); return result.ExitCode == 0; From 9446a81a2572e17be43cd741c0d1fa6ad942f6f9 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 20 Jul 2016 23:42:23 -0400 Subject: [PATCH 076/165] Move CheckPrereqs to MSBuild (#3895) * Move CheckPrereqs to MSBuild * Tabs to Spaces * PR feedback --- build/Microsoft.DotNet.Cli.Prepare.targets | 26 ++-- .../CentosCoreclrAndCoreFxDependencies.props | 12 ++ build/prepare/CheckPrereqs.targets | 41 ++++++ .../DebianPackageBuildDependencies.props | 8 ++ .../UbuntuCoreclrAndCoreFxDependencies.props | 49 +++++++ .../dotnet-cli-build/CheckPrereqs.cs | 127 ------------------ .../PackageDependencies.cs | 96 ------------- .../Utils/AptDependencyUtility.cs | 24 ---- .../Utils/YumDependencyUtility.cs | 21 --- 9 files changed, 126 insertions(+), 278 deletions(-) create mode 100644 build/prepare/CentosCoreclrAndCoreFxDependencies.props create mode 100644 build/prepare/CheckPrereqs.targets create mode 100644 build/prepare/DebianPackageBuildDependencies.props create mode 100644 build/prepare/UbuntuCoreclrAndCoreFxDependencies.props delete mode 100644 build_projects/dotnet-cli-build/CheckPrereqs.cs delete mode 100644 build_projects/shared-build-targets-utils/PackageDependencies.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/AptDependencyUtility.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 94bb4e491..5730f7979 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -2,7 +2,6 @@ - @@ -12,11 +11,20 @@ + + + DependsOnTargets="InitializeCommonProps; + BuildDotnetCliBuildFramework; + CheckPrereqs;"> + + + + @@ -41,7 +49,7 @@ $(Stage2Directory)/ $(BaseOutputDirectory)/stage2compilation $(BaseOutputDirectory)/intermediate - $(BaseOutputDirectory)/packages + $(BaseOutputDirectory)/packages $(IntermediateDirectory)/sharedFrameworkPublish @@ -64,7 +72,7 @@ $(BaseOutputDirectory)/$(VersionBadgeMoniker)_$(Configuration)_version_badge.svg $(NugetVersion) - + $(VersionMajor).$(VersionMinor).$(VersionPatch)-preview3-$(CommitCount) $(VersionMajor).$(VersionMinor).$(VersionPatch)-rc4-$(CommitCount) $(VersionMajor).$(VersionMinor).1-beta-$(CommitCount) @@ -106,8 +114,6 @@ dotnet-$(ProductMonikerRid).$(SharedFrameworkVersion)$(ArchiveExtension) - - @@ -164,7 +170,7 @@ InputFile="%(_DownloadAndExtractItem.DownloadFileName)" DestinationDirectory="%(_DownloadAndExtractItem.ExtractDestintation)" /> - + - + @@ -196,7 +202,7 @@ - + @@ -206,7 +212,7 @@ DependsOnTargets="SetupZipTemplatesInputsOutputs" Inputs="@(ZipTemplatesInput)" Outputs="@(ZipTemplatesOutput)"> - + + + + + + + + + + + + diff --git a/build/prepare/CheckPrereqs.targets b/build/prepare/CheckPrereqs.targets new file mode 100644 index 000000000..0dfbe5bcf --- /dev/null +++ b/build/prepare/CheckPrereqs.targets @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/prepare/DebianPackageBuildDependencies.props b/build/prepare/DebianPackageBuildDependencies.props new file mode 100644 index 000000000..fd8890447 --- /dev/null +++ b/build/prepare/DebianPackageBuildDependencies.props @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/build/prepare/UbuntuCoreclrAndCoreFxDependencies.props b/build/prepare/UbuntuCoreclrAndCoreFxDependencies.props new file mode 100644 index 000000000..4d7dd66f1 --- /dev/null +++ b/build/prepare/UbuntuCoreclrAndCoreFxDependencies.props @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build_projects/dotnet-cli-build/CheckPrereqs.cs b/build_projects/dotnet-cli-build/CheckPrereqs.cs deleted file mode 100644 index 9678b199d..000000000 --- a/build_projects/dotnet-cli-build/CheckPrereqs.cs +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using System.Linq; -using System.Text; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CheckPrereqs : Task - { - public override bool Execute() - { - return CheckCoreclrPlatformDependencies() && - CheckInstallerBuildPlatformDependencies() && - LocateStage0(); - } - - private bool CheckCoreclrPlatformDependencies() - { - return CheckUbuntuCoreclrAndCoreFxDependencies() && - CheckCentOSCoreclrAndCoreFxDependencies(); - } - - private bool CheckInstallerBuildPlatformDependencies() - { - return CheckUbuntuDebianPackageBuildDependencies(); - } - - private bool CheckUbuntuCoreclrAndCoreFxDependencies() - { - bool isSuccessful = true; - - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) - { - var stage0 = DotNetCli.Stage0.BinPath; - - foreach (var package in PackageDependencies.UbuntuCoreclrAndCoreFxDependencies) - { - if (!AptDependencyUtility.PackageIsInstalled(package)) - { - isSuccessful = false; - - Log.LogError($"Coreclr package dependency {package} missing. Install with `apt-get install {package}`"); - } - } - } - - return isSuccessful; - } - - private bool CheckCentOSCoreclrAndCoreFxDependencies() - { - var isSuccessful = true; - - if (CurrentPlatform.IsPlatform(BuildPlatform.CentOS)) - { - foreach (var package in PackageDependencies.CentosCoreclrAndCoreFxDependencies) - { - if (!YumDependencyUtility.PackageIsInstalled(package)) - { - isSuccessful = false; - - Log.LogError($"Coreclr package dependency {package} missing. Install with yum install {package}"); - } - } - } - - return isSuccessful; - } - - private bool CheckUbuntuDebianPackageBuildDependencies() - { - var isSuccessful = true; - - if (CurrentPlatform.IsPlatform(BuildPlatform.Ubuntu, "14.04")) - { - var aptDependencyUtility = new AptDependencyUtility(); - - foreach (var package in PackageDependencies.DebianPackageBuildDependencies) - { - if (!AptDependencyUtility.PackageIsInstalled(package)) - { - isSuccessful = false; - - Log.LogError($"Debian package build dependency {package} missing. Install with apt-get install {package}"); - } - } - } - - return isSuccessful; - } - - private bool LocateStage0() - { - // We should have been run in the repo root, so locate the stage 0 relative to current directory - var stage0 = DotNetCli.Stage0.BinPath; - - if (!Directory.Exists(stage0)) - { - Log.LogError($"Stage 0 directory does not exist: {stage0}"); - - return false; - } - - // Identify the version - string versionFile = Directory.GetFiles(stage0, ".version", SearchOption.AllDirectories).FirstOrDefault(); - - if (string.IsNullOrEmpty(versionFile)) - { - Log.LogError($"'.version' file not found in '{stage0}' folder"); - - return false; - } - - var version = File.ReadAllLines(versionFile); - - Log.LogMessage($"Using Stage 0 Version: {version[1]}"); - - return true; - } - } -} - diff --git a/build_projects/shared-build-targets-utils/PackageDependencies.cs b/build_projects/shared-build-targets-utils/PackageDependencies.cs deleted file mode 100644 index e66e52592..000000000 --- a/build_projects/shared-build-targets-utils/PackageDependencies.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build -{ - public class PackageDependencies - { - public static string[] DebianPackageBuildDependencies - { - get - { - return new string[] - { - "devscripts", - "debhelper", - "build-essential" - }; - - } - } - - public static string[] UbuntuCoreclrAndCoreFxDependencies - { - get - { - return new string[] - { - "libc6", - "libedit2", - "libffi6", - "libgcc1", - "libicu52", - "liblldb-3.6", - "libllvm3.6", - "liblttng-ust0", - "liblzma5", - "libncurses5", - "libpython2.7", - "libstdc++6", - "libtinfo5", - "libunwind8", - "liburcu1", - "libuuid1", - "zlib1g", - "libasn1-8-heimdal", - "libcomerr2", - "libcurl3", - "libgcrypt11", - "libgnutls26", - "libgpg-error0", - "libgssapi3-heimdal", - "libgssapi-krb5-2", - "libhcrypto4-heimdal", - "libheimbase1-heimdal", - "libheimntlm0-heimdal", - "libhx509-5-heimdal", - "libidn11", - "libk5crypto3", - "libkeyutils1", - "libkrb5-26-heimdal", - "libkrb5-3", - "libkrb5support0", - "libldap-2.4-2", - "libp11-kit0", - "libroken18-heimdal", - "librtmp0", - "libsasl2-2", - "libsqlite3-0", - "libssl1.0.0", - "libtasn1-6", - "libwind0-heimdal" - }; - } - } - - public static string[] CentosCoreclrAndCoreFxDependencies - { - get - { - return new string[] - { - "unzip", - "libunwind", - "gettext", - "libcurl-devel", - "openssl-devel", - "zlib", - "libicu-devel" - }; - } - } - - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/AptDependencyUtility.cs b/build_projects/shared-build-targets-utils/Utils/AptDependencyUtility.cs deleted file mode 100644 index c8343c615..000000000 --- a/build_projects/shared-build-targets-utils/Utils/AptDependencyUtility.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using System.Text.RegularExpressions; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public class AptDependencyUtility - { - public static bool PackageIsInstalled(string packageName) - { - var result = Command.Create("dpkg", "-s", packageName) - .CaptureStdOut() - .CaptureStdErr() - .QuietBuildReporter() - .Execute(); - - return result.ExitCode == 0; - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs b/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs deleted file mode 100644 index 0b025bda1..000000000 --- a/build_projects/shared-build-targets-utils/Utils/YumDependencyUtility.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.DotNet.Cli.Build.Framework; - -namespace Microsoft.DotNet.Cli.Build -{ - public class YumDependencyUtility - { - public static bool PackageIsInstalled(string packageName) - { - var result = Command.Create("yum", "list", "installed", packageName) - .CaptureStdOut() - .CaptureStdErr() - .Execute(); - - return result.ExitCode == 0; - } - } -} From 30712966cc66fe633984fbb399d4b127fdb5ead9 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 18 Jul 2016 11:50:36 -0500 Subject: [PATCH 077/165] Prototype round #1 of .NET Core MSBuild .props and .targets. --- Microsoft.DotNet.Cli.sln | 38 ++++++++ .../MSBuildPrototype/MSBuildPrototype.csproj | 17 ++++ .../TestProjects/MSBuildPrototype/Program.cs | 12 +++ .../MSBuildPrototype/project.json | 19 ++++ TestAssets/TestProjects/NuGet.Config | 3 +- TestAssets/TestProjects/global.json | 2 +- .../Executable.cs | 61 ++++++++++++- .../MakeNetCoreRunnable.cs | 89 +++++++++++++++++++ .../Microsoft.DotNet.Core.Build.Tasks.xproj | 18 ++++ .../project.json | 34 +++++++ .../Microsoft.DotNet.Core.MSBuild.xproj | 19 ++++ .../Microsoft.DotNet.Core.MSBuild.props | 87 ++++++++++++++++++ .../Microsoft.DotNet.Core.MSBuild.targets | 79 ++++++++++++++++ .../project.json | 19 ++++ src/Microsoft.DotNet.ProjectModel/Project.cs | 4 +- 15 files changed, 494 insertions(+), 7 deletions(-) create mode 100644 TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj create mode 100644 TestAssets/TestProjects/MSBuildPrototype/Program.cs create mode 100644 TestAssets/TestProjects/MSBuildPrototype/project.json create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/project.json create mode 100644 src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj create mode 100644 src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props create mode 100644 src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets create mode 100644 src/Microsoft.DotNet.Core.MSBuild/project.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 49097a51a..51b4b1340 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -147,6 +147,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2 build\test\TestPackageProjects.props = build\test\TestPackageProjects.props EndProjectSection EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.MSBuild", "src\Microsoft.DotNet.Core.MSBuild\Microsoft.DotNet.Core.MSBuild.xproj", "{556554CA-6EC9-4007-A2C3-AB03DCF8F741}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks", "src\Microsoft.DotNet.Core.Build.Tasks\Microsoft.DotNet.Core.Build.Tasks.xproj", "{E8E7D24B-4830-4662-80A8-255D6FE3B0BE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -895,6 +899,38 @@ Global {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|x64.ActiveCfg = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|x64.Build.0 = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|Any CPU.Build.0 = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|x64.ActiveCfg = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|x64.Build.0 = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -954,5 +990,7 @@ Global {FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108} {8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108} {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} + {556554CA-6EC9-4007-A2C3-AB03DCF8F741} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} + {E8E7D24B-4830-4662-80A8-255D6FE3B0BE} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} EndGlobalSection EndGlobal diff --git a/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj b/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj new file mode 100644 index 000000000..596307f6e --- /dev/null +++ b/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj @@ -0,0 +1,17 @@ + + + + + Exe + .NETCoreApp + v1.0 + + + + + + + + + + diff --git a/TestAssets/TestProjects/MSBuildPrototype/Program.cs b/TestAssets/TestProjects/MSBuildPrototype/Program.cs new file mode 100644 index 000000000..8dae6dd9e --- /dev/null +++ b/TestAssets/TestProjects/MSBuildPrototype/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace MSBuildTestApp +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/TestAssets/TestProjects/MSBuildPrototype/project.json b/TestAssets/TestProjects/MSBuildPrototype/project.json new file mode 100644 index 000000000..5005f8118 --- /dev/null +++ b/TestAssets/TestProjects/MSBuildPrototype/project.json @@ -0,0 +1,19 @@ +{ + "dependencies": { + "Microsoft.NETCore.App": { + "version": "1.0.0", + "type": "platform" + }, + "Microsoft.DotNet.Core.MSBuild": "1.0.0-preview3" + }, + "frameworks": { + "netcoreapp1.0": { + } + }, + "runtimes": { + "win-x64": {}, + "win-x86": {}, + "win10-x64": {}, + "win10-x86": {} + } +} \ No newline at end of file diff --git a/TestAssets/TestProjects/NuGet.Config b/TestAssets/TestProjects/NuGet.Config index 4a43c6b88..c2e84f266 100644 --- a/TestAssets/TestProjects/NuGet.Config +++ b/TestAssets/TestProjects/NuGet.Config @@ -1,6 +1,7 @@ - + + diff --git a/TestAssets/TestProjects/global.json b/TestAssets/TestProjects/global.json index 09f20328d..c92e10596 100644 --- a/TestAssets/TestProjects/global.json +++ b/TestAssets/TestProjects/global.json @@ -1,3 +1,3 @@ { - "projects": [ ".", "../../src" ] + "projects": [ "." ] } \ No newline at end of file diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index 52ebbe924..2c07d5505 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -97,13 +97,12 @@ namespace Microsoft.DotNet.Cli.Compiler.Common { WriteDepsFileAndCopyProjectDependencies(_exporter); - var emitEntryPoint = _compilerOptions.EmitEntryPoint ?? false; + var isRunnable = _compilerOptions.EmitEntryPoint ?? _context.ProjectFile.OverrideIsRunnable; - if (emitEntryPoint && !_context.IsPortable) + if (isRunnable && !_context.IsPortable) { - // TODO: Pick a host based on the RID VerifyCoreClrPresenceInPackageGraph(); - CoreHost.CopyTo(_runtimeOutputPath, _compilerOptions.OutputName + Constants.ExeSuffix); + RenamePublishedHost(_context, _runtimeOutputPath, _compilerOptions); } } @@ -333,5 +332,59 @@ namespace Microsoft.DotNet.Cli.Compiler.Common exporter.GetAllExports().GenerateBindingRedirects(configFiles); } + + private static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) + { + if (context.TargetFramework.IsDesktop()) + { + return 0; + } + + var publishedHostFile = ResolvePublishedHostFile(outputPath); + if (publishedHostFile == null) + { + Reporter.Output.WriteLine($"publish: warning: host executable not available in dependencies, using host for current platform"); + // TODO should this be an error? + + CoreHost.CopyTo(outputPath, compilationOptions.OutputName + Constants.ExeSuffix); + return 0; + } + + var publishedHostExtension = Path.GetExtension(publishedHostFile); + var renamedHostName = compilationOptions.OutputName + publishedHostExtension; + var renamedHostFile = Path.Combine(outputPath, renamedHostName); + + try + { + Reporter.Verbose.WriteLine($"publish: renaming published host {publishedHostFile} to {renamedHostFile}"); + File.Copy(publishedHostFile, renamedHostFile, true); + File.Delete(publishedHostFile); + } + catch (Exception e) + { + Reporter.Error.WriteLine($"publish: Failed to rename {publishedHostFile} to {renamedHostFile}: {e.Message}"); + return 1; + } + + return 0; + } + + private static string ResolvePublishedHostFile(string outputPath) + { + var tryExtensions = new string[] { "", ".exe" }; + + foreach (var extension in tryExtensions) + { + var hostFile = Path.Combine(outputPath, Constants.PublishedHostExecutableName + extension); + if (File.Exists(hostFile)) + { + Reporter.Verbose.WriteLine($"resolved published host: {hostFile}"); + return hostFile; + } + } + + Reporter.Verbose.WriteLine($"failed to resolve published host in: {outputPath}"); + return null; + } } } diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs b/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs new file mode 100644 index 000000000..020ee5409 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs @@ -0,0 +1,89 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Compiler.Common; +using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.ProjectModel; +using Microsoft.DotNet.ProjectModel.Compilation; +using NuGet.Frameworks; + +namespace Microsoft.DotNet.Cli.Tasks +{ + public class MakeNetCoreRunnable : Task + { + [Required] + public string ProjectPath { get; set; } + + [Required] + public string Configuration { get; set; } + + [Required] + public string OutputPath { get; set; } + + [Required] + public string OutputType { get; set; } + + public string Runtime { get; set; } + + private bool HasRuntimeOutput + { + get { return string.Equals("Exe", OutputType, StringComparison.OrdinalIgnoreCase); } + } + + public override bool Execute() + { + BuildWorkspace workspace = BuildWorkspace.Create(); + + string framework = null; //TODO: should we take a NuGet framework ? + + IEnumerable projectContexts = GetProjectContexts(workspace, + framework == null ? null : NuGetFramework.Parse(framework), + Runtime); + + if (!projectContexts.Any()) + { + Log.LogError($"'{ProjectPath}' cannot be made runnable for '{framework ?? ""}' '{Runtime ?? ""}'"); + return false; + } + + foreach (ProjectContext projectContext in projectContexts) + { + string buildBasePath = null; // TODO: Is there an "Intermediate Directory" property we can take? + + projectContext.ProjectFile.OverrideIsRunnable = HasRuntimeOutput; + + OutputPaths outputPaths = projectContext.GetOutputPaths(Configuration, buildBasePath, OutputPath); + LibraryExporter libraryExporter = projectContext.CreateExporter(Configuration, buildBasePath); + + Executable executable = new Executable(projectContext, outputPaths, libraryExporter, Configuration); + executable.MakeCompilationOutputRunnable(); + } + + return true; + } + + private IEnumerable GetProjectContexts(BuildWorkspace workspace, NuGetFramework framework, string runtime) + { + var contexts = workspace.GetProjectContextCollection(ProjectPath) + .EnsureValid(ProjectPath) + .FrameworkOnlyContexts; + + contexts = framework == null ? + contexts : + contexts.Where(c => Equals(c.TargetFramework, framework)); + + var rids = string.IsNullOrEmpty(runtime) ? + RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers() : + new[] { runtime }; + + return contexts.Select(c => workspace.GetRuntimeContext(c, rids)); + } + } +} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj b/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj new file mode 100644 index 000000000..b53580d76 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj @@ -0,0 +1,18 @@ + + + + 14.0.25420 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + e8e7d24b-4830-4662-80a8-255d6fe3b0be + Microsoft.DotNet.Core.MSBuild + ..\..\artifacts\obj\$(MSBuildProjectName) + ..\..\artifacts\bin + + + 2.0 + + + \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json new file mode 100644 index 000000000..8a917ab5c --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -0,0 +1,34 @@ +{ + "version": "1.0.0-preview3-*", + "buildOptions": { + "keyFile": "../../tools/Key.snk", + "warningsAsErrors": true + }, + "dependencies": { + "Microsoft.DotNet.Compiler.Common": { + "target": "project" + } + }, + "frameworks": { + "net451": { + "frameworkAssemblies": { + "Microsoft.Build.Utilities.v4.0": { + "type": "build" + }, + "Microsoft.Build.Framework": { + "type": "build" + } + } + }, + "netstandard1.6": { + "imports": [ + "portable-net45+wp80+win8+wpa81+dnxcore50" + ], + "dependencies": { + "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" + } + } + } +} diff --git a/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj b/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj new file mode 100644 index 000000000..bc4dab08e --- /dev/null +++ b/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj @@ -0,0 +1,19 @@ + + + + 14.0.25420 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 556554ca-6ec9-4007-a2c3-ab03dcf8f741 + Microsoft.DotNet.Core.MSBuild + .\obj + .\bin\ + + + + 2.0 + + + \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props new file mode 100644 index 000000000..4edfef47f --- /dev/null +++ b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props @@ -0,0 +1,87 @@ + + + + + + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + Debug + AnyCPU + + 512 + bin\**;obj\**; + + + + + AnyCPU + prompt + 4 + $(NoWarn);1701 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + + + pdbonly + true + bin\Release\ + TRACE + + + + true + + + + + + + x64 + + + true + + + $(DotnetHostPath) + + + diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets new file mode 100644 index 000000000..50df9b056 --- /dev/null +++ b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets @@ -0,0 +1,79 @@ + + + $(MSBuildThisFileDirectory)../../lib/ + netstandard1.6 + net451 + $(MicrosoftDotNetCoreBuildTasksDirectoryRoot)$(MicrosoftDotNetCoreBuildTasksTFM)/ + + + + + + <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) + <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) + + + + + + + + NetCorePreCoreBuild; + $(CoreBuildDependsOn); + NetCorePostCoreBuild + + + + + + + + + + + + + + + + + + + + NetCorePublishPreBuild; + Build; + NetCorePublishPostBuild + + + + + + + $(OutDir)publish\ + + + + + + + + diff --git a/src/Microsoft.DotNet.Core.MSBuild/project.json b/src/Microsoft.DotNet.Core.MSBuild/project.json new file mode 100644 index 000000000..e17fd8c6a --- /dev/null +++ b/src/Microsoft.DotNet.Core.MSBuild/project.json @@ -0,0 +1,19 @@ +{ + "version": "1.0.0-preview3-*", + "packOptions": { + "files": { + "include": [ + "build/**/*", + "../../artifacts/bin/src/Microsoft.DotNet.Core.Build.Tasks/bin/Debug/netstandard1.6/*.dll", + "../../artifacts/bin/src/Microsoft.DotNet.Core.Build.Tasks/bin/Debug/net451/*.dll" + ], + "mappings": { + "lib/netstandard1.6/": "../../artifacts/bin/src/Microsoft.DotNet.Core.Build.Tasks/bin/Debug/netstandard1.6/*.dll", + "lib/net451/": "../../artifacts/bin/src/Microsoft.DotNet.Core.Build.Tasks/bin/Debug/net451/*.dll" + } + } + }, + "frameworks": { + "netstandard1.0": {} + } +} diff --git a/src/Microsoft.DotNet.ProjectModel/Project.cs b/src/Microsoft.DotNet.ProjectModel/Project.cs index 3aba2a6ac..b6994f2d3 100644 --- a/src/Microsoft.DotNet.ProjectModel/Project.cs +++ b/src/Microsoft.DotNet.ProjectModel/Project.cs @@ -84,6 +84,8 @@ namespace Microsoft.DotNet.ProjectModel public bool IsTestProject => !string.IsNullOrEmpty(TestRunner); + public bool OverrideIsRunnable { get; set; } + public IEnumerable GetTargetFrameworks() { return _targetFrameworks.Values; @@ -128,7 +130,7 @@ namespace Microsoft.DotNet.ProjectModel var compilerOptions = GetCompilerOptions(targetFramework: null, configurationName: configuration); // TODO: Make this opt in via another mechanism - return compilerOptions.EmitEntryPoint.GetValueOrDefault() || IsTestProject; + return compilerOptions.EmitEntryPoint.GetValueOrDefault() || IsTestProject || OverrideIsRunnable; } private CommonCompilerOptions GetCompilerOptions() From bccff16c183821fde3a75aa7fa51cdb82fe41654 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Wed, 20 Jul 2016 13:53:57 -0500 Subject: [PATCH 078/165] Round 2: rename the SDK NuGet package and add ImportBeforeAfter files to load them. --- Microsoft.DotNet.Cli.sln | 2 +- ....xproj => Microsoft.DotNet.Core.Sdk.xproj} | 0 ....props => Microsoft.DotNet.Core.Sdk.props} | 38 +++++-------------- ...gets => Microsoft.DotNet.Core.Sdk.targets} | 34 ++++++++--------- .../Microsoft.NETCore.ImportBefore.props | 17 +++++++++ .../Microsoft.NETCore.ImportAfter.targets | 17 +++++++++ src/dotnet/project.json | 7 +++- 7 files changed, 66 insertions(+), 49 deletions(-) rename src/Microsoft.DotNet.Core.MSBuild/{Microsoft.DotNet.Core.MSBuild.xproj => Microsoft.DotNet.Core.Sdk.xproj} (100%) rename src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/{Microsoft.DotNet.Core.MSBuild.props => Microsoft.DotNet.Core.Sdk.props} (64%) rename src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/{Microsoft.DotNet.Core.MSBuild.targets => Microsoft.DotNet.Core.Sdk.targets} (79%) create mode 100644 src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props create mode 100644 src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 51b4b1340..bab871a95 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -147,7 +147,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2 build\test\TestPackageProjects.props = build\test\TestPackageProjects.props EndProjectSection EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.MSBuild", "src\Microsoft.DotNet.Core.MSBuild\Microsoft.DotNet.Core.MSBuild.xproj", "{556554CA-6EC9-4007-A2C3-AB03DCF8F741}" +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Sdk", "src\Microsoft.DotNet.Core.MSBuild\Microsoft.DotNet.Core.Sdk.xproj", "{556554CA-6EC9-4007-A2C3-AB03DCF8F741}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks", "src\Microsoft.DotNet.Core.Build.Tasks\Microsoft.DotNet.Core.Build.Tasks.xproj", "{E8E7D24B-4830-4662-80A8-255D6FE3B0BE}" EndProject diff --git a/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj b/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.Sdk.xproj similarity index 100% rename from src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.MSBuild.xproj rename to src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.Sdk.xproj diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props similarity index 64% rename from src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props rename to src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props index 4edfef47f..03ea8f6f0 100644 --- a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.props +++ b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props @@ -1,32 +1,3 @@ - - - - - - @@ -64,6 +35,15 @@ TRACE + + + true + true + + + + + true diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets similarity index 79% rename from src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets rename to src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets index 50df9b056..41ef7ce7a 100644 --- a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.MSBuild.targets +++ b/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets @@ -19,15 +19,15 @@ - - NetCorePreCoreBuild; $(CoreBuildDependsOn); - NetCorePostCoreBuild + GenerateDependencyFile; + GenerateRuntimeConfigurationFiles - + @@ -42,10 +42,12 @@ OutputType="$(OutputType)" /> - + - + + + diff --git a/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props new file mode 100644 index 000000000..77f2e496a --- /dev/null +++ b/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\NETCore\Microsoft.DotNet.Core.Sdk.props + + + diff --git a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets new file mode 100644 index 000000000..10dd74d67 --- /dev/null +++ b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\NETCore\Microsoft.DotNet.Core.Sdk.targets + + + diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 54a202a67..347ea9532 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -24,7 +24,12 @@ } }, "publishOptions": { - "include": "14.1/**" + "include": [ + "14.1/**" + ], + "mappings": { + "NETCore/": "../Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/*" + } }, "dependencies": { "NuGet.Commands": { From b068687413a9c72a926eaeb65b6f2003e0d83212 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 11:46:12 -0500 Subject: [PATCH 079/165] Implement 'run3' command which will execute the MSBuild project. Also create a 'dotnet new -t msbuild' template. --- Microsoft.DotNet.Cli.sln | 38 ++--- .../MSBuildPrototype/project.json | 3 +- .../Microsoft.DotNet.Core.Build.Tasks.xproj | 2 +- .../Microsoft.DotNet.Core.Sdk.xproj | 6 +- .../Microsoft.DotNet.Core.Sdk.props | 0 .../Microsoft.DotNet.Core.Sdk.targets | 28 +++- .../project.json | 0 src/dotnet/Program.cs | 3 +- .../CSharp_MSBuild/$projectName$.csproj | 17 +++ .../dotnet-new/CSharp_MSBuild/Program.cs | 12 ++ .../CSharp_MSBuild/project.json.template | 16 +++ src/dotnet/commands/dotnet-new/Program.cs | 41 +++++- src/dotnet/commands/dotnet-run3/Program.cs | 60 ++++++++ .../commands/dotnet-run3/Run3Command.cs | 132 ++++++++++++++++++ src/dotnet/project.json | 10 +- 15 files changed, 331 insertions(+), 37 deletions(-) rename src/{Microsoft.DotNet.Core.MSBuild => Microsoft.DotNet.Core.Sdk}/Microsoft.DotNet.Core.Sdk.xproj (79%) rename src/{Microsoft.DotNet.Core.MSBuild => Microsoft.DotNet.Core.Sdk}/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props (100%) rename src/{Microsoft.DotNet.Core.MSBuild => Microsoft.DotNet.Core.Sdk}/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets (73%) rename src/{Microsoft.DotNet.Core.MSBuild => Microsoft.DotNet.Core.Sdk}/project.json (100%) create mode 100644 src/dotnet/commands/dotnet-new/CSharp_MSBuild/$projectName$.csproj create mode 100644 src/dotnet/commands/dotnet-new/CSharp_MSBuild/Program.cs create mode 100644 src/dotnet/commands/dotnet-new/CSharp_MSBuild/project.json.template create mode 100644 src/dotnet/commands/dotnet-run3/Program.cs create mode 100644 src/dotnet/commands/dotnet-run3/Run3Command.cs diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index bab871a95..51da728ce 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -147,10 +147,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2 build\test\TestPackageProjects.props = build\test\TestPackageProjects.props EndProjectSection EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Sdk", "src\Microsoft.DotNet.Core.MSBuild\Microsoft.DotNet.Core.Sdk.xproj", "{556554CA-6EC9-4007-A2C3-AB03DCF8F741}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks", "src\Microsoft.DotNet.Core.Build.Tasks\Microsoft.DotNet.Core.Build.Tasks.xproj", "{E8E7D24B-4830-4662-80A8-255D6FE3B0BE}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Sdk", "src\Microsoft.DotNet.Core.Sdk\Microsoft.DotNet.Core.Sdk.xproj", "{556554CA-6EC9-4007-A2C3-AB03DCF8F741}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -899,22 +899,6 @@ Global {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.Build.0 = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.ActiveCfg = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.Build.0 = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.ActiveCfg = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.Build.0 = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.ActiveCfg = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.Build.0 = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.Build.0 = Debug|Any CPU {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -931,6 +915,22 @@ Global {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|Any CPU.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Debug|x64.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|Any CPU.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.Release|x64.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {556554CA-6EC9-4007-A2C3-AB03DCF8F741}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -990,7 +990,7 @@ Global {FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108} {8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108} {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} - {556554CA-6EC9-4007-A2C3-AB03DCF8F741} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {E8E7D24B-4830-4662-80A8-255D6FE3B0BE} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} + {556554CA-6EC9-4007-A2C3-AB03DCF8F741} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} EndGlobalSection EndGlobal diff --git a/TestAssets/TestProjects/MSBuildPrototype/project.json b/TestAssets/TestProjects/MSBuildPrototype/project.json index 5005f8118..fdaea910a 100644 --- a/TestAssets/TestProjects/MSBuildPrototype/project.json +++ b/TestAssets/TestProjects/MSBuildPrototype/project.json @@ -3,8 +3,7 @@ "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" - }, - "Microsoft.DotNet.Core.MSBuild": "1.0.0-preview3" + } }, "frameworks": { "netcoreapp1.0": { diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj b/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj index b53580d76..91bee27d0 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj +++ b/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj @@ -7,7 +7,7 @@ e8e7d24b-4830-4662-80a8-255d6fe3b0be - Microsoft.DotNet.Core.MSBuild + Microsoft.DotNet.Core.Build.Tasks ..\..\artifacts\obj\$(MSBuildProjectName) ..\..\artifacts\bin diff --git a/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.Sdk.xproj b/src/Microsoft.DotNet.Core.Sdk/Microsoft.DotNet.Core.Sdk.xproj similarity index 79% rename from src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.Sdk.xproj rename to src/Microsoft.DotNet.Core.Sdk/Microsoft.DotNet.Core.Sdk.xproj index bc4dab08e..eac88f097 100644 --- a/src/Microsoft.DotNet.Core.MSBuild/Microsoft.DotNet.Core.Sdk.xproj +++ b/src/Microsoft.DotNet.Core.Sdk/Microsoft.DotNet.Core.Sdk.xproj @@ -7,9 +7,9 @@ 556554ca-6ec9-4007-a2c3-ab03dcf8f741 - Microsoft.DotNet.Core.MSBuild - .\obj - .\bin\ + Microsoft.DotNet.Core.Sdk + ..\..\artifacts\obj\$(MSBuildProjectName) + ..\..\artifacts\bin diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props b/src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props similarity index 100% rename from src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props rename to src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props diff --git a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets b/src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets similarity index 73% rename from src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets rename to src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets index 41ef7ce7a..09cf15d25 100644 --- a/src/Microsoft.DotNet.Core.MSBuild/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets +++ b/src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets @@ -4,7 +4,9 @@ netstandard1.6 net451 $(MicrosoftDotNetCoreBuildTasksDirectoryRoot)$(MicrosoftDotNetCoreBuildTasksTFM)/ - + + + $(MSBuildToolsPath)/ @@ -16,7 +18,7 @@ <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) - + @@ -49,6 +51,28 @@ + + + + + + + + + dotnet + exec;$(TargetDir)/$(AssemblyName).dll + + + + - $(MSBuildExtensionsPath)\NETCore\Microsoft.DotNet.Core.Sdk.props + $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.props diff --git a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets index 10dd74d67..7f2fab3de 100644 --- a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets +++ b/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets @@ -11,7 +11,7 @@ Copyright (c) .NET Foundation. All rights reserved. --> - $(MSBuildExtensionsPath)\NETCore\Microsoft.DotNet.Core.Sdk.targets + $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.targets diff --git a/src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props b/src/dotnet/Microsoft.DotNet.Core.Sdk.props similarity index 100% rename from src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.props rename to src/dotnet/Microsoft.DotNet.Core.Sdk.props diff --git a/src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets similarity index 100% rename from src/Microsoft.DotNet.Core.Sdk/build/netstandard1.0/Microsoft.DotNet.Core.Sdk.targets rename to src/dotnet/Microsoft.DotNet.Core.Sdk.targets diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 6d6866718..76898db1a 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -27,11 +27,10 @@ }, "publishOptions": { "include": [ - "14.1/**" - ], - "mappings": { - "NETCore/": "../Microsoft.DotNet.Core.Sdk/build/netstandard1.0/*" - } + "14.1/**", + "*.props", + "*.targets" + ] }, "dependencies": { "NuGet.Commands": { From 0eeb58f4ebea8d8800896c3554eba438ff74ccd7 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 12:23:51 -0500 Subject: [PATCH 081/165] Clean up the temporary TestAsset changes. --- .../MSBuildPrototype/MSBuildPrototype.csproj | 17 ----------------- .../TestProjects/MSBuildPrototype/Program.cs | 12 ------------ .../TestProjects/MSBuildPrototype/project.json | 18 ------------------ TestAssets/TestProjects/NuGet.Config | 1 - TestAssets/TestProjects/global.json | 2 +- 5 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj delete mode 100644 TestAssets/TestProjects/MSBuildPrototype/Program.cs delete mode 100644 TestAssets/TestProjects/MSBuildPrototype/project.json diff --git a/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj b/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj deleted file mode 100644 index 596307f6e..000000000 --- a/TestAssets/TestProjects/MSBuildPrototype/MSBuildPrototype.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Exe - .NETCoreApp - v1.0 - - - - - - - - - - diff --git a/TestAssets/TestProjects/MSBuildPrototype/Program.cs b/TestAssets/TestProjects/MSBuildPrototype/Program.cs deleted file mode 100644 index 8dae6dd9e..000000000 --- a/TestAssets/TestProjects/MSBuildPrototype/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace MSBuildTestApp -{ - public class Program - { - public static void Main(string[] args) - { - Console.WriteLine("Hello World!"); - } - } -} diff --git a/TestAssets/TestProjects/MSBuildPrototype/project.json b/TestAssets/TestProjects/MSBuildPrototype/project.json deleted file mode 100644 index fdaea910a..000000000 --- a/TestAssets/TestProjects/MSBuildPrototype/project.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.App": { - "version": "1.0.0", - "type": "platform" - } - }, - "frameworks": { - "netcoreapp1.0": { - } - }, - "runtimes": { - "win-x64": {}, - "win-x86": {}, - "win10-x64": {}, - "win10-x86": {} - } -} \ No newline at end of file diff --git a/TestAssets/TestProjects/NuGet.Config b/TestAssets/TestProjects/NuGet.Config index c2e84f266..b03d4d16c 100644 --- a/TestAssets/TestProjects/NuGet.Config +++ b/TestAssets/TestProjects/NuGet.Config @@ -2,6 +2,5 @@ - diff --git a/TestAssets/TestProjects/global.json b/TestAssets/TestProjects/global.json index c92e10596..09f20328d 100644 --- a/TestAssets/TestProjects/global.json +++ b/TestAssets/TestProjects/global.json @@ -1,3 +1,3 @@ { - "projects": [ "." ] + "projects": [ ".", "../../src" ] } \ No newline at end of file From f0afc7eb7973e8a037a2238a49c596e0982d9af7 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 12:41:20 -0500 Subject: [PATCH 082/165] Minor cleanup. --- .../Executable.cs | 2 +- src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 3 +- .../commands/dotnet-publish/PublishCommand.cs | 66 +------------------ 3 files changed, 3 insertions(+), 68 deletions(-) diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index 2c07d5505..9b34ed680 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -333,7 +333,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common exporter.GetAllExports().GenerateBindingRedirects(configFiles); } - private static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) + public static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) { if (context.TargetFramework.IsDesktop()) { diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 09cf15d25..106ab2063 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -95,7 +95,6 @@ DependsOnTargets="$(PublishDependsOn)" /> - - + diff --git a/src/dotnet/commands/dotnet-publish/PublishCommand.cs b/src/dotnet/commands/dotnet-publish/PublishCommand.cs index eebf24f66..0f2076e1f 100644 --- a/src/dotnet/commands/dotnet-publish/PublishCommand.cs +++ b/src/dotnet/commands/dotnet-publish/PublishCommand.cs @@ -12,7 +12,6 @@ using Microsoft.DotNet.InternalAbstractions; using Microsoft.DotNet.ProjectModel; using Microsoft.DotNet.ProjectModel.Compilation; using Microsoft.DotNet.ProjectModel.Files; -using Microsoft.DotNet.ProjectModel.Graph; using Microsoft.DotNet.ProjectModel.Utilities; using Microsoft.DotNet.Tools.Common; using NuGet.Frameworks; @@ -200,7 +199,7 @@ namespace Microsoft.DotNet.Tools.Publish if (options.EmitEntryPoint.GetValueOrDefault() && !string.IsNullOrEmpty(context.RuntimeIdentifier)) { Reporter.Verbose.WriteLine($"publish: Renaming native host in output to create fully standalone output."); - RenamePublishedHost(context, outputPath, options); + Executable.RenamePublishedHost(context, outputPath, options); } RunScripts(context, ScriptNames.PostPublish, contextVariables); @@ -288,69 +287,6 @@ namespace Microsoft.DotNet.Tools.Publish } } - private static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) - { - if (context.TargetFramework.IsDesktop()) - { - return 0; - } - - var publishedHostFile = ResolvePublishedHostFile(outputPath); - if (publishedHostFile == null) - { - Reporter.Output.WriteLine($"publish: warning: host executable not available in dependencies, using host for current platform"); - // TODO should this be an error? - - CoreHost.CopyTo(outputPath, compilationOptions.OutputName + Constants.ExeSuffix); - return 0; - } - - var publishedHostExtension = Path.GetExtension(publishedHostFile); - var renamedHostName = compilationOptions.OutputName + publishedHostExtension; - var renamedHostFile = Path.Combine(outputPath, renamedHostName); - - try - { - Reporter.Verbose.WriteLine($"publish: renaming published host {publishedHostFile} to {renamedHostFile}"); - File.Copy(publishedHostFile, renamedHostFile, true); - File.Delete(publishedHostFile); - } - catch (Exception e) - { - Reporter.Error.WriteLine($"publish: Failed to rename {publishedHostFile} to {renamedHostFile}: {e.Message}"); - return 1; - } - - return 0; - } - - private static string ResolvePublishedHostFile(string outputPath) - { - var tryExtensions = new string[] { "", ".exe" }; - - foreach (var extension in tryExtensions) - { - var hostFile = Path.Combine(outputPath, Constants.PublishedHostExecutableName + extension); - if (File.Exists(hostFile)) - { - Reporter.Verbose.WriteLine($"resolved published host: {hostFile}"); - return hostFile; - } - } - - Reporter.Verbose.WriteLine($"failed to resolve published host in: {outputPath}"); - return null; - } - - private static void PublishFiles(IEnumerable files, string outputPath) - { - foreach (var file in files) - { - var targetPath = Path.Combine(outputPath, Path.GetFileName(file)); - File.Copy(file, targetPath, overwrite: true); - } - } - private void PublishAssetGroups(IEnumerable groups, string outputPath, bool nativeSubdirectories, bool includeRuntimeGroups) { foreach (var group in groups.Where(g => includeRuntimeGroups || string.IsNullOrEmpty(g.Runtime))) From 72c59c4d05d09b4bdb3fa76abfcf3a01b4ad5362 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 15:04:05 -0500 Subject: [PATCH 083/165] Add test for MSBuild End to End. --- .../MSBuildTestApp/MSBuildTestApp.csproj | 34 ++------------ test/EndToEnd/GivenDotNetUsesMSBuild.cs | 46 +++++++++++++++++++ .../Commands/Build3Command.cs | 30 ++++++++++++ .../Commands/Run3Command.cs | 30 ++++++++++++ .../TempFileSystem/TempRoot.cs | 2 +- 5 files changed, 111 insertions(+), 31 deletions(-) create mode 100644 test/EndToEnd/GivenDotNetUsesMSBuild.cs create mode 100644 test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Build3Command.cs create mode 100644 test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Run3Command.cs diff --git a/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj index ed112f20e..5df78bcbd 100644 --- a/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj +++ b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj @@ -1,44 +1,18 @@ - - - + + - Debug - x64 - x64 Exe - MSBuildTestApp - $(MSBuildThisFileName) - NETCoreApp + .NETCoreApp v1.0 bin\$(Configuration)\netcoreapp1.0 - false - true - true - true - .NETCoreApp,Version=v1.0 - - win7 - false - none + - - - $(DotnetHostPath) - - - - - - - - - \ No newline at end of file diff --git a/test/EndToEnd/GivenDotNetUsesMSBuild.cs b/test/EndToEnd/GivenDotNetUsesMSBuild.cs new file mode 100644 index 000000000..24a85fa11 --- /dev/null +++ b/test/EndToEnd/GivenDotNetUsesMSBuild.cs @@ -0,0 +1,46 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Tools.Test.Utilities; +using Xunit; + +namespace Microsoft.DotNet.Tests.EndToEnd +{ + public class GivenDotNetUsesMSBuild : TestBase + { + [Fact] + public void ItCanNewRestoreBuildRunMSBuildProject() + { + using (DisposableDirectory directory = Temp.CreateDirectory()) + { + string projectDirectory = directory.Path; + + new NewCommand() + .WithWorkingDirectory(projectDirectory) + .Execute("-t msbuild") + .Should() + .Pass(); + + new RestoreCommand() + .WithWorkingDirectory(projectDirectory) + .Execute() + .Should() + .Pass(); + + new Build3Command() + .WithWorkingDirectory(projectDirectory) + .Execute() + .Should() + .Pass(); + + new Run3Command() + .WithWorkingDirectory(projectDirectory) + .ExecuteWithCapturedOutput() + .Should() + .Pass() + .And + .HaveStdOutContaining("Hello World!"); + } + } + } +} diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Build3Command.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Build3Command.cs new file mode 100644 index 000000000..39eb4a415 --- /dev/null +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Build3Command.cs @@ -0,0 +1,30 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using Microsoft.DotNet.Cli.Utils; +using System.Runtime.InteropServices; +using Microsoft.DotNet.ProjectModel; + +namespace Microsoft.DotNet.Tools.Test.Utilities +{ + public sealed class Build3Command : TestCommand + { + public Build3Command() + : base("dotnet") + { + } + + public override CommandResult Execute(string args = "") + { + args = $"build3 {args}"; + return base.Execute(args); + } + + public override CommandResult ExecuteWithCapturedOutput(string args = "") + { + args = $"build3 {args}"; + return base.ExecuteWithCapturedOutput(args); + } + } +} diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Run3Command.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Run3Command.cs new file mode 100644 index 000000000..0d1bb39fa --- /dev/null +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/Run3Command.cs @@ -0,0 +1,30 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using Microsoft.DotNet.Cli.Utils; +using System.Runtime.InteropServices; +using Microsoft.DotNet.ProjectModel; + +namespace Microsoft.DotNet.Tools.Test.Utilities +{ + public sealed class Run3Command : TestCommand + { + public Run3Command() + : base("dotnet") + { + } + + public override CommandResult Execute(string args = "") + { + args = $"run3 {args}"; + return base.Execute(args); + } + + public override CommandResult ExecuteWithCapturedOutput(string args = "") + { + args = $"run3 {args}"; + return base.ExecuteWithCapturedOutput(args); + } + } +} diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/TempFileSystem/TempRoot.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/TempFileSystem/TempRoot.cs index 0cff5cb32..58e426b47 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/TempFileSystem/TempRoot.cs +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/TempFileSystem/TempRoot.cs @@ -55,7 +55,7 @@ namespace Microsoft.DotNet.Tools.Test.Utilities } } - public TempDirectory CreateDirectory() + public DisposableDirectory CreateDirectory() { var dir = new DisposableDirectory(this); _temps.Add(dir); From 69619c0716bdf13b2a4cf35b4d7c1eb9ba762fe5 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 18:17:20 -0500 Subject: [PATCH 084/165] PR feedback. --- .../Executable.cs | 57 +---------------- src/dotnet/Microsoft.DotNet.Core.Sdk.props | 2 +- src/dotnet/commands/dotnet-new/Program.cs | 63 +++++++++++-------- .../commands/dotnet-publish/PublishCommand.cs | 55 +++++++++++++++- 4 files changed, 93 insertions(+), 84 deletions(-) diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index 9b34ed680..eb4255239 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -101,8 +101,9 @@ namespace Microsoft.DotNet.Cli.Compiler.Common if (isRunnable && !_context.IsPortable) { + // TODO: Pick a host based on the RID VerifyCoreClrPresenceInPackageGraph(); - RenamePublishedHost(_context, _runtimeOutputPath, _compilerOptions); + CoreHost.CopyTo(_runtimeOutputPath, _compilerOptions.OutputName + Constants.ExeSuffix); } } @@ -332,59 +333,5 @@ namespace Microsoft.DotNet.Cli.Compiler.Common exporter.GetAllExports().GenerateBindingRedirects(configFiles); } - - public static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) - { - if (context.TargetFramework.IsDesktop()) - { - return 0; - } - - var publishedHostFile = ResolvePublishedHostFile(outputPath); - if (publishedHostFile == null) - { - Reporter.Output.WriteLine($"publish: warning: host executable not available in dependencies, using host for current platform"); - // TODO should this be an error? - - CoreHost.CopyTo(outputPath, compilationOptions.OutputName + Constants.ExeSuffix); - return 0; - } - - var publishedHostExtension = Path.GetExtension(publishedHostFile); - var renamedHostName = compilationOptions.OutputName + publishedHostExtension; - var renamedHostFile = Path.Combine(outputPath, renamedHostName); - - try - { - Reporter.Verbose.WriteLine($"publish: renaming published host {publishedHostFile} to {renamedHostFile}"); - File.Copy(publishedHostFile, renamedHostFile, true); - File.Delete(publishedHostFile); - } - catch (Exception e) - { - Reporter.Error.WriteLine($"publish: Failed to rename {publishedHostFile} to {renamedHostFile}: {e.Message}"); - return 1; - } - - return 0; - } - - private static string ResolvePublishedHostFile(string outputPath) - { - var tryExtensions = new string[] { "", ".exe" }; - - foreach (var extension in tryExtensions) - { - var hostFile = Path.Combine(outputPath, Constants.PublishedHostExecutableName + extension); - if (File.Exists(hostFile)) - { - Reporter.Verbose.WriteLine($"resolved published host: {hostFile}"); - return hostFile; - } - } - - Reporter.Verbose.WriteLine($"failed to resolve published host in: {outputPath}"); - return null; - } } } diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.props b/src/dotnet/Microsoft.DotNet.Core.Sdk.props index 03ea8f6f0..ec6be8197 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.props +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.props @@ -55,7 +55,7 @@ This will be set to false during "build", but set to true during "publish" --> - x64 + x64 true diff --git a/src/dotnet/commands/dotnet-new/Program.cs b/src/dotnet/commands/dotnet-new/Program.cs index a3d27fbe7..53ec355e4 100644 --- a/src/dotnet/commands/dotnet-new/Program.cs +++ b/src/dotnet/commands/dotnet-new/Program.cs @@ -69,33 +69,8 @@ namespace Microsoft.DotNet.Tools.New archive.ExtractToDirectory(projectDirectory); - string projectJsonFile = Path.Combine(projectDirectory, "project.json"); - - File.Move( - Path.Combine(projectDirectory, "project.json.template"), - projectJsonFile); - - string originalProjectJsonText = File.ReadAllText(projectJsonFile); - string replacedProjectJsonText = originalProjectJsonText - .Replace("$currentruntime$", RuntimeEnvironment.GetRuntimeIdentifier()); - - if (replacedProjectJsonText != originalProjectJsonText) - { - File.WriteAllText(projectJsonFile, replacedProjectJsonText); - } - - string projectName = new DirectoryInfo(projectDirectory).Name; - foreach (string file in Directory.GetFiles(projectDirectory, "*", SearchOption.AllDirectories)) - { - if (Path.GetFileNameWithoutExtension(file) == "$projectName$") - { - string extension = Path.GetExtension(file); - - File.Move( - file, - Path.Combine(Path.GetDirectoryName(file), $"{projectName}{extension}")); - } - } + ReplaceProjectJsonTemplateValues(projectDirectory); + ReplaceFileTemplateNames(projectDirectory); } catch (IOException ex) { @@ -116,6 +91,40 @@ namespace Microsoft.DotNet.Tools.New return 0; } + private static void ReplaceProjectJsonTemplateValues(string projectDirectory) + { + string projectJsonFile = Path.Combine(projectDirectory, "project.json"); + + File.Move( + Path.Combine(projectDirectory, "project.json.template"), + projectJsonFile); + + string originalProjectJsonText = File.ReadAllText(projectJsonFile); + string replacedProjectJsonText = originalProjectJsonText + .Replace("$currentruntime$", RuntimeEnvironment.GetRuntimeIdentifier()); + + if (replacedProjectJsonText != originalProjectJsonText) + { + File.WriteAllText(projectJsonFile, replacedProjectJsonText); + } + } + + private static void ReplaceFileTemplateNames(string projectDirectory) + { + string projectName = new DirectoryInfo(projectDirectory).Name; + foreach (string file in Directory.GetFiles(projectDirectory, "*", SearchOption.AllDirectories)) + { + if (Path.GetFileNameWithoutExtension(file) == "$projectName$") + { + string extension = Path.GetExtension(file); + + File.Move( + file, + Path.Combine(Path.GetDirectoryName(file), $"{projectName}{extension}")); + } + } + } + public static int Run(string[] args) { DebugHelper.HandleDebugSwitch(ref args); diff --git a/src/dotnet/commands/dotnet-publish/PublishCommand.cs b/src/dotnet/commands/dotnet-publish/PublishCommand.cs index 0f2076e1f..f7e02f13b 100644 --- a/src/dotnet/commands/dotnet-publish/PublishCommand.cs +++ b/src/dotnet/commands/dotnet-publish/PublishCommand.cs @@ -199,7 +199,7 @@ namespace Microsoft.DotNet.Tools.Publish if (options.EmitEntryPoint.GetValueOrDefault() && !string.IsNullOrEmpty(context.RuntimeIdentifier)) { Reporter.Verbose.WriteLine($"publish: Renaming native host in output to create fully standalone output."); - Executable.RenamePublishedHost(context, outputPath, options); + RenamePublishedHost(context, outputPath, options); } RunScripts(context, ScriptNames.PostPublish, contextVariables); @@ -287,6 +287,59 @@ namespace Microsoft.DotNet.Tools.Publish } } + private static int RenamePublishedHost(ProjectContext context, string outputPath, CommonCompilerOptions compilationOptions) + { + if (context.TargetFramework.IsDesktop()) + { + return 0; + } + + var publishedHostFile = ResolvePublishedHostFile(outputPath); + if (publishedHostFile == null) + { + Reporter.Output.WriteLine($"publish: warning: host executable not available in dependencies, using host for current platform"); + // TODO should this be an error? + + CoreHost.CopyTo(outputPath, compilationOptions.OutputName + Constants.ExeSuffix); + return 0; + } + + var publishedHostExtension = Path.GetExtension(publishedHostFile); + var renamedHostName = compilationOptions.OutputName + publishedHostExtension; + var renamedHostFile = Path.Combine(outputPath, renamedHostName); + + try + { + Reporter.Verbose.WriteLine($"publish: renaming published host {publishedHostFile} to {renamedHostFile}"); + File.Copy(publishedHostFile, renamedHostFile, true); + File.Delete(publishedHostFile); + } + catch (Exception e) + { + Reporter.Error.WriteLine($"publish: Failed to rename {publishedHostFile} to {renamedHostFile}: {e.Message}"); + return 1; + } + + return 0; + } + + private static string ResolvePublishedHostFile(string outputPath) + { + var tryExtensions = new string[] { "", ".exe" }; + + foreach (var extension in tryExtensions) + { + var hostFile = Path.Combine(outputPath, Constants.PublishedHostExecutableName + extension); + if (File.Exists(hostFile)) + { + Reporter.Verbose.WriteLine($"resolved published host: {hostFile}"); + return hostFile; + } + } + + Reporter.Verbose.WriteLine($"failed to resolve published host in: {outputPath}"); + return null; + } private void PublishAssetGroups(IEnumerable groups, string outputPath, bool nativeSubdirectories, bool includeRuntimeGroups) { foreach (var group in groups.Where(g => includeRuntimeGroups || string.IsNullOrEmpty(g.Runtime))) From e908ffec917c6e003f03af037ae73bdaf4a1e310 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 18:29:35 -0500 Subject: [PATCH 085/165] Fix build3 tests. --- TestAssets/TestProjects/MSBuildTestApp/project.json | 3 ++- test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TestAssets/TestProjects/MSBuildTestApp/project.json b/TestAssets/TestProjects/MSBuildTestApp/project.json index 90bc28bca..57bb1cf54 100644 --- a/TestAssets/TestProjects/MSBuildTestApp/project.json +++ b/TestAssets/TestProjects/MSBuildTestApp/project.json @@ -3,7 +3,8 @@ "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { - "version": "1.0.0" + "version": "1.0.0", + "type": "platform" } } } diff --git a/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs b/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs index 58ab13aa7..a9e70e3c5 100644 --- a/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs +++ b/test/dotnet-build3.Tests/GivenDotnetBuild3BuildsCsproj.cs @@ -21,10 +21,9 @@ namespace Microsoft.DotNet.Cli.Build3.Tests var testProjectDirectory = testInstance.TestRoot; - var build3Command = new TestCommand("dotnet"); - build3Command.WorkingDirectory = testProjectDirectory; - - build3Command.ExecuteWithCapturedOutput("build3") + new Build3Command() + .WithWorkingDirectory(testProjectDirectory) + .Execute() .Should() .Pass(); From 5296b28db7602b5a28b7e97130acb512c5931b39 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 19:36:09 -0500 Subject: [PATCH 086/165] Removing all PlatformTarget setting in the default Sdk.props file. This value is passed in by the CLI. --- src/dotnet/Microsoft.DotNet.Core.Sdk.props | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.props b/src/dotnet/Microsoft.DotNet.Core.Sdk.props index ec6be8197..0215bdb56 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.props +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.props @@ -15,7 +15,8 @@ - AnyCPU + + prompt 4 $(NoWarn);1701 @@ -54,8 +55,6 @@ false This will be set to false during "build", but set to true during "publish" --> - - x64 true From 3a446ec5d4c80d8d16bac18aa68d9d4253364176 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 21:12:39 -0500 Subject: [PATCH 087/165] Fixing the Sdk.props to work correctly for Release config and xplat pdb creation. --- src/dotnet/Microsoft.DotNet.Core.Sdk.props | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.props b/src/dotnet/Microsoft.DotNet.Core.Sdk.props index 0215bdb56..3d3d75126 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.props +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.props @@ -6,7 +6,7 @@ - Debug + Debug AnyCPU 512 @@ -59,6 +59,9 @@ true + + portable + $(DotnetHostPath) From c317c926919fc724f69620ea693b6ee9e3f66d4c Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 21 Jul 2016 23:02:51 -0500 Subject: [PATCH 088/165] Correcting the casing of Microsoft.Common.targets directory --- .../ImportAfter/Microsoft.NETCore.ImportAfter.targets | 0 .../ImportAfter/Microsoft.NuGet.ImportAfter.targets | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/dotnet/14.1/{Microsoft.Common.Targets => Microsoft.Common.targets}/ImportAfter/Microsoft.NETCore.ImportAfter.targets (100%) rename src/dotnet/14.1/{Microsoft.Common.Targets => Microsoft.Common.targets}/ImportAfter/Microsoft.NuGet.ImportAfter.targets (100%) diff --git a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets similarity index 100% rename from src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets rename to src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets diff --git a/src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets similarity index 100% rename from src/dotnet/14.1/Microsoft.Common.Targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets rename to src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets From 1f8facc7c5308c6621443b406bc84cbd4efb00f0 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Fri, 22 Jul 2016 00:45:23 -0500 Subject: [PATCH 089/165] Fix TestSdkDeb to run tests against the installed dotnet. --- .../Microsoft.DotNet.Cli.Installer.DEB.targets | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index ee4de25ad..68b4c1234 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -31,10 +31,14 @@ $(IntermediateDirectory)/debian/sdk $(SdkDebianIntermediateDirectory)/debian-testResults.xml - /usr/share/dotnet/dotnet + /usr/share/dotnet $(RepoRoot)/test/EndToEnd + + + + @@ -89,8 +93,10 @@ - + From 1bf97953742deee117aeef92329756e031c9c4e7 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Fri, 22 Jul 2016 19:01:32 -0400 Subject: [PATCH 090/165] Replaces custom archiving tasks with build_tools implementation (#3905) * TarGzFileCreateFromDirectory * Replace ArchiveDirectory with BuildTools implementation * Fix archive naming * Because sometimes XML cares about whitespace... * Create Packages Directory * Cleanup --- build/Microsoft.DotNet.Cli.Prepare.targets | 12 +- build/Microsoft.DotNet.Cli.Publish.targets | 10 +- .../Microsoft.DotNet.Cli.Archive.targets | 54 ++++--- .../dotnet-cli-build/ArchiveDirectory.cs | 96 ------------ .../TarGzFileCreateFromDirectory.cs | 143 ++++++++++++++++++ 5 files changed, 189 insertions(+), 126 deletions(-) delete mode 100644 build_projects/dotnet-cli-build/ArchiveDirectory.cs create mode 100644 build_projects/dotnet-cli-build/TarGzFileCreateFromDirectory.cs diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index 5730f7979..a55a0da7f 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -9,7 +9,7 @@ - + @@ -213,10 +213,10 @@ Inputs="@(ZipTemplatesInput)" Outputs="@(ZipTemplatesOutput)"> - + - \ No newline at end of file + diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets index 0ac2783a7..653a3b223 100644 --- a/build/Microsoft.DotNet.Cli.Publish.targets +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -16,10 +16,10 @@ FinishBuild" /> - @@ -40,7 +40,7 @@ $(STORAGE_KEY) $(STORAGE_ACCOUNT) https://$(CloudDropAccountName).blob.core.windows.net/$(ContainerName) - + @@ -51,10 +51,10 @@ - $(Product)/$(NugetVersion)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/')) + $(Product)/$(NugetVersion)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/')) - + diff --git a/build/package/Microsoft.DotNet.Cli.Archive.targets b/build/package/Microsoft.DotNet.Cli.Archive.targets index bd8a78d59..51fa11f4e 100644 --- a/build/package/Microsoft.DotNet.Cli.Archive.targets +++ b/build/package/Microsoft.DotNet.Cli.Archive.targets @@ -1,16 +1,44 @@ - - - + + + + + + + $(ArchiveOutputDirectory)/%(GenerateArchivesInputsOutputs.OutFileName)$(ArchiveExtension) + + + + + + + + + + + + + $(PackagesDirectory) - - %(LayoutDefinition.OutputFiles) $(ArchiveOutputDirectory)/%(LayoutDefinition.NameWithVersion)$(ArchiveExtension) @@ -20,20 +48,8 @@ - - - - - - - + + diff --git a/build_projects/dotnet-cli-build/ArchiveDirectory.cs b/build_projects/dotnet-cli-build/ArchiveDirectory.cs deleted file mode 100644 index 7c8f95e15..000000000 --- a/build_projects/dotnet-cli-build/ArchiveDirectory.cs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; -using System.IO.Compression; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class ArchiveDirectory : Task - { - [Required] - public string FileName { get; set; } - - [Required] - public string OutputDirectory { get; set; } - - [Required] - public string InputDirectory { get; set; } - - public bool ForceZipArchive { get; set; } - - [Output] - public string OutputArchive { get; set; } - - public override bool Execute() - { - if (!Directory.Exists(InputDirectory)) - { - return true; - } - - if (CurrentPlatform.IsPlatform(BuildPlatform.Windows) || ForceZipArchive) - { - OutputArchive = GenerateZip(); - } - else - { - OutputArchive = GenerateTarGz(); - } - - Log.LogMessage($"Created Archive '{OutputArchive}'"); - - return true; - } - - public string GenerateZip() - { - var extension = ".zip"; - var outFile = Path.Combine(OutputDirectory, FileName + extension); - - CreateZipFromDirectory(InputDirectory, outFile); - - return outFile; - } - - public string GenerateTarGz() - { - var extension = ".tar.gz"; - var outFile = Path.Combine(OutputDirectory, FileName + extension); - - CreateTarGzFromDirectory(InputDirectory, outFile); - - return outFile; - } - - private static void CreateZipFromDirectory(string directory, string outputArchivePath) - { - FS.Mkdirp(Path.GetDirectoryName(outputArchivePath)); - - if (File.Exists(outputArchivePath)) - { - File.Delete(outputArchivePath); - } - - ZipFile.CreateFromDirectory(directory, outputArchivePath, CompressionLevel.Optimal, false); - } - - private static void CreateTarGzFromDirectory(string directory, string outputArchivePath) - { - FS.Mkdirp(Path.GetDirectoryName(outputArchivePath)); - - if (File.Exists(outputArchivePath)) - { - File.Delete(outputArchivePath); - } - - Cmd("tar", "-czf", outputArchivePath, "-C", directory, ".") - .Execute() - .EnsureSuccessful(); - } - } -} diff --git a/build_projects/dotnet-cli-build/TarGzFileCreateFromDirectory.cs b/build_projects/dotnet-cli-build/TarGzFileCreateFromDirectory.cs new file mode 100644 index 000000000..5dfdb71a6 --- /dev/null +++ b/build_projects/dotnet-cli-build/TarGzFileCreateFromDirectory.cs @@ -0,0 +1,143 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Build.Tasks +{ + public sealed class TarGzFileCreateFromDirectory : ToolTask + { + /// + /// The path to the directory to be archived. + /// + [Required] + public string SourceDirectory { get; set; } + + /// + /// The path of the archive to be created. + /// + [Required] + public string DestinationArchive { get; set; } + + /// + /// Indicates if the destination archive should be overwritten if it already exists. + /// + public bool OverwriteDestination { get; set; } + + /// + /// If zipping an entire folder without exclusion patterns, whether to include the folder in the archive. + /// + public bool IncludeBaseDirectory { get; set; } + + /// + /// An item group of regular expressions for content to exclude from the archive. + /// + public ITaskItem[] ExcludePatterns { get; set; } + + protected override bool ValidateParameters() + { + base.ValidateParameters(); + + var retVal = true; + + if (File.Exists(DestinationArchive)) + { + if (OverwriteDestination == true) + { + Log.LogMessage(MessageImportance.Low, $"{DestinationArchive} will be overwritten"); + } + else + { + Log.LogError($"'{DestinationArchive}' already exists. Did you forget to set '{nameof(OverwriteDestination)}' to true?"); + + retVal = false; + } + } + + SourceDirectory = Path.GetFullPath(SourceDirectory); + + SourceDirectory = SourceDirectory.EndsWith(Path.DirectorySeparatorChar.ToString()) + ? SourceDirectory + : SourceDirectory + Path.DirectorySeparatorChar; + + if (!Directory.Exists(SourceDirectory)) + { + Log.LogError($"SourceDirectory '{SourceDirectory} does not exist."); + + retVal = false; + } + + return retVal; + } + + public override bool Execute() + { + return base.Execute(); + } + + protected override string ToolName + { + get { return "tar"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + return "tar"; + } + + protected override string GenerateCommandLineCommands() + { + return $"{GetDestinationArchive()} {GetSourceSpecification()}"; + } + + private string GetSourceSpecification() + { + if (IncludeBaseDirectory) + { + var parentDirectory = Directory.GetParent(SourceDirectory).Parent.FullName; + + var sourceDirectoryName = Path.GetFileName(Path.GetDirectoryName(SourceDirectory)); + + return $"--directory {parentDirectory} {sourceDirectoryName} {GetExcludes()}"; + } + else + { + return $"--directory {SourceDirectory} {GetExcludes()} \".\""; + } + } + + private string GetDestinationArchive() + { + return $"-czf {DestinationArchive}"; + } + + private string GetExcludes() + { + var excludes = String.Empty; + + if (ExcludePatterns != null) + { + foreach (var excludeTaskItem in ExcludePatterns) + { + excludes += $" --exclude {excludeTaskItem.ItemSpec}"; + } + } + + return excludes; + } + + protected override void LogToolCommand(string message) + { + base.LogToolCommand($"{base.GetWorkingDirectory()}> {message}"); + } + } +} From fe5119fde4e1a689a9196777543c9a4bc3dce54b Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Sat, 23 Jul 2016 13:38:31 -0400 Subject: [PATCH 091/165] Piotrp msft/merge2msbuild (#3923) * Add Test for removing readonly flag when copying readonly library assets * change namespace * PR Feedback * Update README.md (#3904) * Update README.md * Responding to PR feedback * Responding to PR feedback --- README.md | 11 +++ ...Tests.cs => GivenCommonCompilerOptions.cs} | 4 +- .../GivenThatICopyLibraryAssets.cs | 68 +++++++++++++++++++ 3 files changed, 81 insertions(+), 2 deletions(-) rename test/Microsoft.DotNet.Compiler.Common.Tests/{Tests.cs => GivenCommonCompilerOptions.cs} (91%) create mode 100644 test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs diff --git a/README.md b/README.md index 6cf4f8630..ec99858a2 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,17 @@ check out our [Getting started page](http://go.microsoft.com/fwlink/?LinkID=7983 Also, don't forget to check out [the documentation](https://aka.ms/dotnet-cli-docs). +Changes in issue triaging +------------------------- +We are making significant changes to the CLI tooling by supporting MSBuild as the build engine and `csproj` as the project format. You can read ["Changes to project.json" blog post](https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/) for more context. We've realized that this also means that many of the shortcomings of the current tooling will be solved by this move so we've decided to introduce two new labels to indicate that in the issues: + +* `msbuild-mitigated` - this label indicates the issue will be mitigated via move to MSBuild. +* `msbuild-notapplicable` - this label indicates the issue will not be applicable after moving to MSBuild. + +We will close issues that are labelled with one of these labels. Proactive triaging will help us reduce the number of issues and enable us to focus on issues that require fixing independent of the move to msbuild. + +Please feel free to re-open and comment on any issue that you believe was triaged incorrectly. + Found an issue? --------------- You can consult the [known issues page](https://github.com/dotnet/core/blob/master/cli/known-issues.md) to find out the current issues and diff --git a/test/Microsoft.DotNet.Compiler.Common.Tests/Tests.cs b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenCommonCompilerOptions.cs similarity index 91% rename from test/Microsoft.DotNet.Compiler.Common.Tests/Tests.cs rename to test/Microsoft.DotNet.Compiler.Common.Tests/GivenCommonCompilerOptions.cs index b678464b1..6757af610 100644 --- a/test/Microsoft.DotNet.Compiler.Common.Tests/Tests.cs +++ b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenCommonCompilerOptions.cs @@ -5,9 +5,9 @@ using Microsoft.DotNet.ProjectModel; using Microsoft.DotNet.Tools.Test.Utilities; using Xunit; -namespace Microsoft.DotNet.Cli.Compiler.Common +namespace Microsoft.DotNet.Cli.Compiler.Common.Tests { - public class Tests : TestBase + public class GivenCommonCompilerOptions : TestBase { [Fact] public void SimpleSerialize() diff --git a/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs new file mode 100644 index 000000000..b8421c27b --- /dev/null +++ b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs @@ -0,0 +1,68 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using FluentAssertions; +using Xunit; +using Microsoft.DotNet.Cli.Compiler.Common; +using Microsoft.DotNet.ProjectModel.Compilation; +using System.IO; +using System; +using System.Linq; +using System.Collections.Generic; + +namespace Microsoft.DotNet.Cli.Compiler.Common.Tests +{ + public class GivenThatICopyLibraryAssets + { + [Fact] + public void LibraryAsset_CopyTo_Clears_Readonly() + { + var libraryAsset = GetMockLibraryAsset(nameof(LibraryAsset_CopyTo_Clears_Readonly)); + MakeFileReadonly(libraryAsset.ResolvedPath); + + IEnumerable assets = new LibraryAsset[] { libraryAsset }; + + var outputDirectory = Path.Combine(AppContext.BaseDirectory,$"{nameof(LibraryAsset_CopyTo_Clears_Readonly)}_out"); + assets.CopyTo(outputDirectory); + + var copiedFile = Directory.EnumerateFiles(outputDirectory, Path.GetFileName(libraryAsset.RelativePath)).First(); + IsFileReadonly(copiedFile).Should().BeFalse(); + } + + [Fact] + public void LibraryAsset_StructuredCopyTo_Clears_Readonly() + { + var libraryAsset = GetMockLibraryAsset(nameof(LibraryAsset_StructuredCopyTo_Clears_Readonly)); + MakeFileReadonly(libraryAsset.ResolvedPath); + + IEnumerable assets = new LibraryAsset[] { libraryAsset }; + + var intermediateDirectory = Path.Combine(AppContext.BaseDirectory,$"{nameof(LibraryAsset_StructuredCopyTo_Clears_Readonly)}_obj"); + var outputDirectory = Path.Combine(AppContext.BaseDirectory,$"{nameof(LibraryAsset_StructuredCopyTo_Clears_Readonly)}_out"); + assets.StructuredCopyTo(outputDirectory, intermediateDirectory); + + var copiedFile = Directory.EnumerateFiles(outputDirectory, Path.GetFileName(libraryAsset.RelativePath)).First(); + IsFileReadonly(copiedFile).Should().BeFalse(); + } + + private void MakeFileReadonly(string file) + { + File.SetAttributes(file, File.GetAttributes(file) | FileAttributes.ReadOnly); + } + + private bool IsFileReadonly(string file) + { + return (File.GetAttributes(file) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly; + } + + private LibraryAsset GetMockLibraryAsset(string mockedLibraryAssetName) + { + var mockedLibraryAssetFileName = $"{mockedLibraryAssetName}.dll"; + + var fakeFile = Path.Combine(AppContext.BaseDirectory, mockedLibraryAssetFileName); + File.WriteAllText(fakeFile, mockedLibraryAssetName); + + return new LibraryAsset(mockedLibraryAssetName, mockedLibraryAssetFileName, fakeFile); + } + } +} From 5d96412b149ebb327d903a4d5d8a72c68516aa34 Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Fri, 22 Jul 2016 16:15:43 -0700 Subject: [PATCH 092/165] change feature-msbuild branch versions --- branchinfo.txt | 2 +- src/Microsoft.DotNet.Archive/project.json | 2 +- src/Microsoft.DotNet.Cli.Utils/project.json | 2 +- src/Microsoft.DotNet.Compiler.Common/project.json | 2 +- src/Microsoft.DotNet.Files/project.json | 2 +- src/Microsoft.DotNet.ProjectModel.Loader/project.json | 2 +- src/Microsoft.DotNet.ProjectModel.Workspaces/project.json | 2 +- src/Microsoft.DotNet.TestFramework/project.json | 2 +- src/Microsoft.Extensions.Testing.Abstractions/project.json | 2 +- src/dotnet-compile-fsc/project.json | 2 +- src/dotnet/project.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/branchinfo.txt b/branchinfo.txt index 9e36018b1..e546fb55d 100644 --- a/branchinfo.txt +++ b/branchinfo.txt @@ -4,6 +4,6 @@ MAJOR_VERSION=1 MINOR_VERSION=0 PATCH_VERSION=0 -RELEASE_SUFFIX=feature-msbuild +RELEASE_SUFFIX=featmsbuild CHANNEL=feature-msbuild BRANCH_NAME=feature/msbuild diff --git a/src/Microsoft.DotNet.Archive/project.json b/src/Microsoft.DotNet.Archive/project.json index b5a9fe4d6..4fbca90cf 100644 --- a/src/Microsoft.DotNet.Archive/project.json +++ b/src/Microsoft.DotNet.Archive/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk" }, diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index ddb6ce425..0383c274c 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk", "warningsAsErrors": true diff --git a/src/Microsoft.DotNet.Compiler.Common/project.json b/src/Microsoft.DotNet.Compiler.Common/project.json index d4d1be608..892ced477 100644 --- a/src/Microsoft.DotNet.Compiler.Common/project.json +++ b/src/Microsoft.DotNet.Compiler.Common/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk" }, diff --git a/src/Microsoft.DotNet.Files/project.json b/src/Microsoft.DotNet.Files/project.json index 6da11cd64..2de9879f5 100644 --- a/src/Microsoft.DotNet.Files/project.json +++ b/src/Microsoft.DotNet.Files/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk" }, diff --git a/src/Microsoft.DotNet.ProjectModel.Loader/project.json b/src/Microsoft.DotNet.ProjectModel.Loader/project.json index 3d0d43789..600d06a07 100644 --- a/src/Microsoft.DotNet.ProjectModel.Loader/project.json +++ b/src/Microsoft.DotNet.ProjectModel.Loader/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk" }, diff --git a/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json b/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json index b0bc6db57..27f9ff6b2 100644 --- a/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json +++ b/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk" }, diff --git a/src/Microsoft.DotNet.TestFramework/project.json b/src/Microsoft.DotNet.TestFramework/project.json index 76fc4473d..b5bdc316d 100644 --- a/src/Microsoft.DotNet.TestFramework/project.json +++ b/src/Microsoft.DotNet.TestFramework/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "description": "Microsoft.DotNet.TestFramework Class Library", "buildOptions": { "keyFile": "../../tools/Key.snk" diff --git a/src/Microsoft.Extensions.Testing.Abstractions/project.json b/src/Microsoft.Extensions.Testing.Abstractions/project.json index c106c21ab..9ce938ef9 100644 --- a/src/Microsoft.Extensions.Testing.Abstractions/project.json +++ b/src/Microsoft.Extensions.Testing.Abstractions/project.json @@ -1,6 +1,6 @@ { "description": "Abstractions for test runners to communicate to a tool, such as Visual Studio.", - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "warningsAsErrors": true, "allowUnsafe": true, diff --git a/src/dotnet-compile-fsc/project.json b/src/dotnet-compile-fsc/project.json index a593e7795..acaacfc49 100644 --- a/src/dotnet-compile-fsc/project.json +++ b/src/dotnet-compile-fsc/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "emitEntryPoint": true, "compile": { diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 76898db1a..6a2713eb8 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "emitEntryPoint": true, "embed": { From 7c71af8db52fb33ad1fc8f907889415802874cdb Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Mon, 25 Jul 2016 14:06:46 -0700 Subject: [PATCH 093/165] get Eric's change --- src/Microsoft.DotNet.Core.Build.Tasks/project.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json index 8a917ab5c..10a8dba04 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-preview3-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "keyFile": "../../tools/Key.snk", "warningsAsErrors": true From 5ebc6a1ceb9ace1fbdda05a3e7788a3da9cfabbe Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 26 Jul 2016 00:29:59 -0400 Subject: [PATCH 094/165] Decompose Crossgen, remove CleanPublishOutput, replace ExtractArchive with *FileExtractToDirectory (#3927) * Eliminate CleanPublishOutput * Decompose Crossgen Task * WiP * TarGzFileExtractToDirectory * FixModeFlags --> CHMod Also various eliminations of dead code * Tasks cleanup Move all tasks to .tasks file. There is little value in keepint them in each source file as they are already being used assumptively by files that happen to get executed later. Also eliminating uses of for DotNet invocations * Move to BuildTools implementation of TarGzCreateFromDirectory * Eliminate Command.cs and helpers * Remove dead code * Revert TarGz from BuildTools Latest build tools package has not picked up the task, though it is checked in. * Disable ChMod on Windows * Windows bug fix * PR Feedback * Finish changing Chmod caps --- BuildToolsVersion.txt | 2 +- build.proj | 11 +- build/Microsoft.DotNet.Cli.Compile.targets | 122 +++++-- build/Microsoft.DotNet.Cli.Prepare.targets | 47 ++- build/Microsoft.DotNet.Cli.tasks | 29 ++ .../Microsoft.DotNet.Cli.LzmaArchive.targets | 15 +- .../Microsoft.DotNet.Cli.Crossgen.targets | 24 ++ .../Microsoft.DotNet.Cli.Archive.targets | 6 +- ...Microsoft.DotNet.Cli.Installer.DEB.targets | 17 +- ...Microsoft.DotNet.Cli.Installer.MSI.targets | 25 +- ...Microsoft.DotNet.Cli.Installer.PKG.targets | 22 +- .../Microsoft.DotNet.Cli.Layout.targets | 11 +- .../Microsoft.DotNet.Cli.Nupkg.targets | 14 +- .../CentosCoreclrAndCoreFxDependencies.props | 14 +- .../ArgumentEscaper.cs | 206 ----------- .../BuildHelpers.cs | 46 --- .../Command.cs | 331 ------------------ .../CommandResult.cs | 50 --- .../Constants.cs | 10 - .../dotnet-cli-build/AddMetadataIsPE.cs | 65 ++++ .../ChangeEntryPointLibraryName.cs | 2 - build_projects/dotnet-cli-build/Chmod.cs | 73 ++++ .../dotnet-cli-build/CleanPublishOutput.cs | 32 -- .../dotnet-cli-build/CliDependencyVersions.cs | 16 - build_projects/dotnet-cli-build/Crossgen.cs | 134 +++++++ .../dotnet-cli-build/CrossgenDirectory.cs | 34 -- build_projects/dotnet-cli-build/DotNetNew.cs | 18 + .../dotnet-cli-build/DotNetPublish.cs | 102 ++++++ .../dotnet-cli-build/DotNetRestore.cs | 14 +- build_projects/dotnet-cli-build/DotNetTool.cs | 4 +- .../dotnet-cli-build/ExtractArchive.cs | 38 -- .../dotnet-cli-build/FixModeFlags.cs | 23 -- .../GenerateBuildVersionInfo.cs | 40 ++- .../dotnet-cli-build/GetCommitHash.cs | 42 +++ .../TarGzFileExtractToDirectory.cs | 112 ++++++ .../DependencyVersions.cs | 13 - .../HostArtifactNames.cs | 15 - .../Publishing/DebRepoPublisher.cs | 55 --- .../Utils/BranchInfo.cs | 2 - .../Utils/Crossgen.cs | 209 ----------- .../shared-build-targets-utils/Utils/Dirs.cs | 33 -- .../Utils/DotNetCli.cs | 63 ---- .../shared-build-targets-utils/Utils/FS.cs | 87 ----- .../Utils/GitUtils.cs | 27 -- .../Utils/HostVersion.cs | 48 --- .../Utils/JsonUtils.cs | 28 -- .../Utils/Monikers.cs | 16 - .../Utils/PEUtils.cs | 27 -- .../Utils/PublishMutationUtilties.cs | 21 -- .../shared-build-targets-utils/Utils/Utils.cs | 77 ---- 50 files changed, 827 insertions(+), 1645 deletions(-) create mode 100644 build/Microsoft.DotNet.Cli.tasks create mode 100644 build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/ArgumentEscaper.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildHelpers.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs delete mode 100644 build_projects/Microsoft.DotNet.Cli.Build.Framework/CommandResult.cs create mode 100644 build_projects/dotnet-cli-build/AddMetadataIsPE.cs create mode 100644 build_projects/dotnet-cli-build/Chmod.cs delete mode 100644 build_projects/dotnet-cli-build/CleanPublishOutput.cs delete mode 100644 build_projects/dotnet-cli-build/CliDependencyVersions.cs create mode 100644 build_projects/dotnet-cli-build/Crossgen.cs delete mode 100644 build_projects/dotnet-cli-build/CrossgenDirectory.cs create mode 100644 build_projects/dotnet-cli-build/DotNetNew.cs create mode 100644 build_projects/dotnet-cli-build/DotNetPublish.cs delete mode 100644 build_projects/dotnet-cli-build/ExtractArchive.cs delete mode 100644 build_projects/dotnet-cli-build/FixModeFlags.cs create mode 100644 build_projects/dotnet-cli-build/GetCommitHash.cs create mode 100644 build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs delete mode 100644 build_projects/shared-build-targets-utils/DependencyVersions.cs delete mode 100644 build_projects/shared-build-targets-utils/HostArtifactNames.cs delete mode 100644 build_projects/shared-build-targets-utils/Publishing/DebRepoPublisher.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/Crossgen.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/DotNetCli.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/GitUtils.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/HostVersion.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/JsonUtils.cs delete mode 100644 build_projects/shared-build-targets-utils/Utils/PEUtils.cs diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index 045389f0b..a49ec9c45 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -1.0.26-prerelease-00607-01 +1.0.26-prerelease-00621-06 diff --git a/build.proj b/build.proj index c07c89edc..a4890106a 100644 --- a/build.proj +++ b/build.proj @@ -1,7 +1,7 @@ - + - + - + - + + + + + u=rw,g=r,o=r + - + + + u=rwx,g=rx,o=rx + + + + + u=rwx,g=rx,o=rx + + + + + + @@ -112,7 +142,7 @@ - @@ -124,10 +154,7 @@ AssetPath="$(BinaryToCorehostifyRelDir)/%(BinariesToRemove.Identity).exe" /> - + - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + $(NUGET_PACKAGES) + $(RepoRoot)/.nuget/packages + + False True - $(Stage0Path) + $(Stage0Directory) $(RepoRoot)/artifacts/$(Rid) $(BaseOutputDirectory)/tools @@ -53,11 +49,14 @@ $(IntermediateDirectory)/sharedFrameworkPublish + + + + - @@ -91,6 +90,12 @@ $(Rid) $(OSName)-$(Architecture) + lib + + .so + .dll + .dylib + dotnet-sdk dotnet-sdk-debug dotnet-dev @@ -133,14 +138,14 @@ Condition="!Exists('$(CombinedSharedHostAndFrameworkArchive)')"> $(SharedFrameworkArchiveBlobRootUrl)/$(CombinedFrameworkHostCompressedFileName) $(CombinedSharedHostAndFrameworkArchive) - $(SharedFrameworkPublishDirectory) + $(SharedFrameworkPublishDirectory) <_DownloadAndExtractItem Include="DownloadedSharedFrameworkInstallerFile" Condition="!Exists('$(DownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''"> $(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(DownloadedSharedFrameworkInstallerFileName) $(DownloadedSharedFrameworkInstallerFile) - + <_DownloadAndExtractItem Include="DownloadedSharedHostInstallerFile" @@ -166,9 +171,15 @@ Uri="%(_DownloadAndExtractItem.Url)" DestinationPath="%(_DownloadAndExtractItem.DownloadFileName)" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets index 47873c488..cfdd1ffde 100644 --- a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets +++ b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets @@ -13,15 +13,20 @@ - - + + - + + diff --git a/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets b/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets new file mode 100644 index 000000000..0409b9a73 --- /dev/null +++ b/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets @@ -0,0 +1,24 @@ + + + + + $(Rid) + win7-$(Architecture) + osx.10.10-x64 + rhel.7-x64 + + runtime.$(CoreCLRRid).Microsoft.NETCore.Runtime.CoreCLR + runtime.$(CoreCLRRid).Microsoft.NETCore.Jit + runtime.$(CoreCLRRid).Microsoft.NETCore.Runtime.CoreCLR + + $(NuGetPackagesDir)/$(CoreCLRPackageName)/$(CoreCLRVersion)/runtimes/$(CoreCLRRid)/lib/netstandard1.0 + $(NuGetPackagesDir)/$(CrossGenPackageName)/$(CoreCLRVersion)/tools/crossgen$(ExeExtension) + $(NuGetPackagesDir)/$(LibCLRJitPackageName)/$(CoreCLRVersion)/runtimes/$(CoreCLRRid)/native/$(DynamicLibPrefix)clrjit$(DynamicLibExtension) + + + + + + + diff --git a/build/package/Microsoft.DotNet.Cli.Archive.targets b/build/package/Microsoft.DotNet.Cli.Archive.targets index 51fa11f4e..ac24fe8c2 100644 --- a/build/package/Microsoft.DotNet.Cli.Archive.targets +++ b/build/package/Microsoft.DotNet.Cli.Archive.targets @@ -1,9 +1,5 @@ - - - - $(PackagesDirectory) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets index 68b4c1234..8dad18c11 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.DEB.targets @@ -1,13 +1,12 @@ - - @@ -17,10 +16,10 @@ $(RepoRoot)/scripts/package/package-debian.sh $(RepoRoot)/Documentation/manpages - + $(PackagesDirectory) $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) - + dotnet-dev-$(SdkVersion) dotnet-sharedframework-$(SharedFrameworkName)-$(SharedFrameworkVersion) $(SharedFrameworkDebianPackageName.ToLower()) @@ -29,7 +28,7 @@ dotnet-host $(IntermediateDirectory)/debian/sdk - + $(SdkDebianIntermediateDirectory)/debian-testResults.xml /usr/share/dotnet $(RepoRoot)/test/EndToEnd @@ -42,14 +41,14 @@ - + - @@ -78,7 +77,7 @@ - - - - - - - @@ -50,7 +45,7 @@ - @@ -62,14 +57,14 @@ Lines="$(WixVersion)" Overwrite="true" Encoding="Unicode"/> - + - @@ -118,7 +113,7 @@ '$(Architecture)'" /> - - - - diff --git a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets index 8823537d0..8e4ffd67d 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.PKG.targets @@ -1,7 +1,5 @@ - - $(PackagesDirectory) @@ -9,23 +7,23 @@ $(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension) $(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension) - + com.microsoft.dotnet.sharedhost.component.osx.x64 com.microsoft.dotnet.hostfxr.component.osx.x64 com.microsoft.dotnet.sharedframework.$(SharedFrameworkNugetName).$(SharedFrameworkVersion).component.osx.x64 com.microsoft.dotnet.dev.$(SdkVersion).component.osx.x64 com.microsoft.dotnet.dev.$(SdkVersion).osx.x64 - + /usr/local/share/dotnet $(RepoRoot)/packaging/osx/clisdk $(SdkPkgSourcesRootDirectory)/scripts $(SdkPkgSourcesRootDirectory)/resources - + $(SdkPkgSourcesRootDirectory)/Distribution-Template $(PkgIntermediateDirectory)/CLI-SDK-Formatted-Distribution-Template.xml - + $(PkgIntermediateDirectory)/$(SdkComponentId).pkg $(PkgIntermediateDirectory)/$(SharedFrameworkComponentId).pkg $(PkgIntermediateDirectory)/$(SharedHostComponentId).pkg @@ -80,12 +78,12 @@ - - + - - + - + - - - - $(IntermediateDirectory)/layouts @@ -61,7 +58,7 @@ @(CombinedHostHostFxrFrameworkSdkInput) - @(CombinedHostHostFxrFrameworkSdkRelativeOutputFiles -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/%(Identity)') + @(CombinedHostHostFxrFrameworkSdkRelativeOutputFiles -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/%(Identity)') $(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk) $(ArtifactNameCombinedHostHostFxrFrameworkSdk) @@ -76,13 +73,13 @@ - - diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index b6045364c..0edffbed6 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ $(Stage2CompilationDirectory)/forPackaging $(PackagesDirectory) - + Microsoft.DotNet.Cli.Utils @@ -74,13 +74,13 @@ - + diff --git a/build/prepare/CentosCoreclrAndCoreFxDependencies.props b/build/prepare/CentosCoreclrAndCoreFxDependencies.props index 48de6d900..1b9f08b19 100644 --- a/build/prepare/CentosCoreclrAndCoreFxDependencies.props +++ b/build/prepare/CentosCoreclrAndCoreFxDependencies.props @@ -1,12 +1,12 @@ - - - - - - - + + + + + + + diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/ArgumentEscaper.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/ArgumentEscaper.cs deleted file mode 100644 index 7b1958057..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/ArgumentEscaper.cs +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class ArgumentEscaper - { - /// - /// Undo the processing which took place to create string[] args in Main, - /// so that the next process will receive the same string[] args - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - public static string EscapeAndConcatenateArgArrayForProcessStart(IEnumerable args) - { - return string.Join(" ", EscapeArgArray(args)); - } - - /// - /// Undo the processing which took place to create string[] args in Main, - /// so that the next process will receive the same string[] args - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - public static string EscapeAndConcatenateArgArrayForCmdProcessStart(IEnumerable args) - { - return string.Join(" ", EscapeArgArrayForCmd(args)); - } - - /// - /// Undo the processing which took place to create string[] args in Main, - /// so that the next process will receive the same string[] args - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - private static IEnumerable EscapeArgArray(IEnumerable args) - { - var escapedArgs = new List(); - - foreach (var arg in args) - { - escapedArgs.Add(EscapeArg(arg)); - } - - return escapedArgs; - } - - /// - /// This prefixes every character with the '^' character to force cmd to - /// interpret the argument string literally. An alternative option would - /// be to do this only for cmd metacharacters. - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - private static IEnumerable EscapeArgArrayForCmd(IEnumerable arguments) - { - var escapedArgs = new List(); - - foreach (var arg in arguments) - { - escapedArgs.Add(EscapeArgForCmd(arg)); - } - - return escapedArgs; - } - - private static string EscapeArg(string arg) - { - var sb = new StringBuilder(); - - var quoted = ShouldSurroundWithQuotes(arg); - if (quoted) sb.Append("\""); - - for (int i = 0; i < arg.Length; ++i) - { - var backslashCount = 0; - - // Consume All Backslashes - while (i < arg.Length && arg[i] == '\\') - { - backslashCount++; - i++; - } - - // Escape any backslashes at the end of the arg - // This ensures the outside quote is interpreted as - // an argument delimiter - if (i == arg.Length) - { - sb.Append('\\', 2 * backslashCount); - } - - // Escape any preceding backslashes and the quote - else if (arg[i] == '"') - { - sb.Append('\\', (2 * backslashCount) + 1); - sb.Append('"'); - } - - // Output any consumed backslashes and the character - else - { - sb.Append('\\', backslashCount); - sb.Append(arg[i]); - } - } - - if (quoted) sb.Append("\""); - - return sb.ToString(); - } - - /// - /// Prepare as single argument to - /// roundtrip properly through cmd. - /// - /// This prefixes every character with the '^' character to force cmd to - /// interpret the argument string literally. An alternative option would - /// be to do this only for cmd metacharacters. - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - private static string EscapeArgForCmd(string argument) - { - var sb = new StringBuilder(); - - var quoted = ShouldSurroundWithQuotes(argument); - - if (quoted) sb.Append("^\""); - - foreach (var character in argument) - { - - if (character == '"') - { - - sb.Append('^'); - sb.Append('"'); - sb.Append('^'); - sb.Append(character); - } - else - { - sb.Append("^"); - sb.Append(character); - } - } - - if (quoted) sb.Append("^\""); - - return sb.ToString(); - } - - /// - /// Prepare as single argument to - /// roundtrip properly through cmd. - /// - /// This prefixes every character with the '^' character to force cmd to - /// interpret the argument string literally. An alternative option would - /// be to do this only for cmd metacharacters. - /// - /// See here for more info: - /// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx - /// - /// - /// - internal static bool ShouldSurroundWithQuotes(string argument) - { - // Don't quote already quoted strings - if (argument.StartsWith("\"", StringComparison.Ordinal) && - argument.EndsWith("\"", StringComparison.Ordinal)) - { - return false; - } - - // Only quote if whitespace exists in the string - if (argument.Contains(" ") || argument.Contains("\t") || argument.Contains("\n")) - { - return true; - } - - return true; - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildHelpers.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildHelpers.cs deleted file mode 100644 index 8a6a5e4d8..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/BuildHelpers.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Collections.Generic; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public static class BuildHelpers - { - public static int ExecInSilent(string workingDirectory, string command, params string[] args) => ExecInSilent(workingDirectory, command, (IEnumerable)args); - public static int ExecInSilent(string workingDirectory, string command, IEnumerable args) => ExecCore(command, args, workingDirectory, silent: true, env: null); - - public static int ExecIn(string workingDirectory, string command, params string[] args) => ExecIn(workingDirectory, command, (IEnumerable)args); - public static int ExecIn(string workingDirectory, string command, IEnumerable args) => ExecCore(command, args, workingDirectory, silent: false, env: null); - - public static int ExecSilent(string command, params string[] args) => ExecSilent(command, (IEnumerable)args); - public static int ExecSilent(string command, IEnumerable args) => ExecSilent(command, args, env: null); - public static int ExecSilent(string command, IEnumerable args, IDictionary env) => ExecCore(command, args, workingDirectory: null, silent: true, env: env); - - public static int Exec(string command, params string[] args) => Exec(command, (IEnumerable)args); - public static int Exec(string command, IEnumerable args) => ExecCore(command, args, workingDirectory: null, silent: false, env: null); - - public static Command Cmd(string command, params string[] args) => Cmd(command, (IEnumerable)args); - public static Command Cmd(string command, IEnumerable args) - { - return Command.Create(command, args); - } - - internal static int ExecCore(string command, IEnumerable args, string workingDirectory, bool silent, IDictionary env) - { - var cmd = Cmd(command, args); - if (!string.IsNullOrEmpty(workingDirectory)) - { - cmd.WorkingDirectory(workingDirectory); - } - - if (silent) - { - cmd.CaptureStdErr().CaptureStdOut(); - } - - var result = cmd.Environment(env).Execute(); - - result.EnsureSuccessful(); - return result.ExitCode; - } - - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs deleted file mode 100644 index 310adb4f1..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Command.cs +++ /dev/null @@ -1,331 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public class Command - { - private Process _process; - - private StringWriter _stdOutCapture; - private StringWriter _stdErrCapture; - - private Action _stdOutForward; - private Action _stdErrForward; - - private Action _stdOutHandler; - private Action _stdErrHandler; - - private bool _running = false; - private bool _quietBuildReporter = false; - - private Command(string executable, string args) - { - // Set the things we need - var psi = new ProcessStartInfo() - { - FileName = executable, - Arguments = args - }; - - _process = new Process() - { - StartInfo = psi - }; - } - - public static Command Create(string executable, params string[] args) - { - return Create(executable, ArgumentEscaper.EscapeAndConcatenateArgArrayForProcessStart(args)); - } - - public static Command Create(string executable, IEnumerable args) - { - return Create(executable, ArgumentEscaper.EscapeAndConcatenateArgArrayForProcessStart(args)); - } - - public static Command Create(string executable, string args) - { - ResolveExecutablePath(ref executable, ref args); - - return new Command(executable, args); - } - - private static void ResolveExecutablePath(ref string executable, ref string args) - { - foreach (string suffix in Constants.RunnableSuffixes) - { - var fullExecutable = Path.GetFullPath(Path.Combine( - AppContext.BaseDirectory, executable + suffix)); - - if (File.Exists(fullExecutable)) - { - executable = fullExecutable; - - // In priority order we've found the best runnable extension, so break. - break; - } - } - - // On Windows, we want to avoid using "cmd" if possible (it mangles the colors, and a bunch of other things) - // So, do a quick path search to see if we can just directly invoke it - var useCmd = ShouldUseCmd(executable); - - if (useCmd) - { - var comSpec = System.Environment.GetEnvironmentVariable("ComSpec"); - - // cmd doesn't like "foo.exe ", so we need to ensure that if - // args is empty, we just run "foo.exe" - if (!string.IsNullOrEmpty(args)) - { - executable = (executable + " " + args).Replace("\"", "\\\""); - } - args = $"/C \"{executable}\""; - executable = comSpec; - } - } - - private static bool ShouldUseCmd(string executable) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - var extension = Path.GetExtension(executable); - if (!string.IsNullOrEmpty(extension)) - { - return !string.Equals(extension, ".exe", StringComparison.Ordinal); - } - else if (executable.Contains(Path.DirectorySeparatorChar)) - { - // It's a relative path without an extension - if (File.Exists(executable + ".exe")) - { - // It refers to an exe! - return false; - } - } - else - { - // Search the path to see if we can find it - foreach (var path in System.Environment.GetEnvironmentVariable("PATH").Split(Path.PathSeparator)) - { - var candidate = Path.Combine(path, executable + ".exe"); - if (File.Exists(candidate)) - { - // We found an exe! - return false; - } - } - } - - // It's a non-exe :( - return true; - } - - // Non-windows never uses cmd - return false; - } - - public Command Environment(IDictionary env) - { - if (env == null) - { - return this; - } - - foreach (var item in env) - { - _process.StartInfo.Environment[item.Key] = item.Value; - } - return this; - } - - public Command Environment(string key, string value) - { - _process.StartInfo.Environment[key] = value; - return this; - } - - public Command QuietBuildReporter() - { - _quietBuildReporter = true; - return this; - } - - public CommandResult Execute() - { - ThrowIfRunning(); - _running = true; - - if (_process.StartInfo.RedirectStandardOutput) - { - _process.OutputDataReceived += (sender, args) => - { - ProcessData(args.Data, _stdOutCapture, _stdOutForward, _stdOutHandler); - }; - } - - if (_process.StartInfo.RedirectStandardError) - { - _process.ErrorDataReceived += (sender, args) => - { - ProcessData(args.Data, _stdErrCapture, _stdErrForward, _stdErrHandler); - }; - } - - _process.EnableRaisingEvents = true; - - var sw = Stopwatch.StartNew(); - ReportExecBegin(); - - _process.Start(); - - if (_process.StartInfo.RedirectStandardOutput) - { - _process.BeginOutputReadLine(); - } - - if (_process.StartInfo.RedirectStandardError) - { - _process.BeginErrorReadLine(); - } - - _process.WaitForExit(); - - var exitCode = _process.ExitCode; - - ReportExecEnd(exitCode); - - return new CommandResult( - _process.StartInfo, - exitCode, - _stdOutCapture?.GetStringBuilder()?.ToString(), - _stdErrCapture?.GetStringBuilder()?.ToString()); - } - - public Command WorkingDirectory(string projectDirectory) - { - _process.StartInfo.WorkingDirectory = projectDirectory; - return this; - } - - public Command EnvironmentVariable(string name, string value) - { - _process.StartInfo.Environment[name] = value; - return this; - } - - public Command CaptureStdOut() - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardOutput = true; - _stdOutCapture = new StringWriter(); - return this; - } - - public Command CaptureStdErr() - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardError = true; - _stdErrCapture = new StringWriter(); - return this; - } - - public Command OnOutputLine(Action handler) - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardOutput = true; - if (_stdOutHandler != null) - { - throw new InvalidOperationException("Already handling stdout!"); - } - _stdOutHandler = handler; - return this; - } - - public Command OnErrorLine(Action handler) - { - ThrowIfRunning(); - _process.StartInfo.RedirectStandardError = true; - if (_stdErrHandler != null) - { - throw new InvalidOperationException("Already handling stderr!"); - } - _stdErrHandler = handler; - return this; - } - - private string FormatProcessInfo(ProcessStartInfo info, bool includeWorkingDirectory) - { - string prefix = includeWorkingDirectory ? - $"{info.WorkingDirectory}> {info.FileName}" : - info.FileName; - - if (string.IsNullOrWhiteSpace(info.Arguments)) - { - return prefix; - } - - return prefix + " " + info.Arguments; - } - - private void ReportExecBegin() - { - if (!_quietBuildReporter) - { - Console.WriteLine($"[> EXEC] {FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: false)}"); - } - } - - private void ReportExecEnd(int exitCode) - { - if (!_quietBuildReporter) - { - bool success = exitCode == 0; - - var message = $"{FormatProcessInfo(_process.StartInfo, includeWorkingDirectory: !success)} exited with {exitCode}"; - - Console.WriteLine("[< EXEC] {message}"); - } - } - - private void ThrowIfRunning([CallerMemberName] string memberName = null) - { - if (_running) - { - throw new InvalidOperationException($"Unable to invoke {memberName} after the command has been run"); - } - } - - private void ProcessData(string data, StringWriter capture, Action forward, Action handler) - { - if (data == null) - { - return; - } - - if (capture != null) - { - capture.WriteLine(data); - } - - if (forward != null) - { - forward(data); - } - - if (handler != null) - { - handler(data); - } - } - } -} diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/CommandResult.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/CommandResult.cs deleted file mode 100644 index e93320453..000000000 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/CommandResult.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Text; -using System.Diagnostics; - -namespace Microsoft.DotNet.Cli.Build.Framework -{ - public struct CommandResult - { - public static readonly CommandResult Empty = new CommandResult(); - - public ProcessStartInfo StartInfo { get; } - public int ExitCode { get; } - public string StdOut { get; } - public string StdErr { get; } - - public CommandResult(ProcessStartInfo startInfo, int exitCode, string stdOut, string stdErr) - { - StartInfo = startInfo; - ExitCode = exitCode; - StdOut = stdOut; - StdErr = stdErr; - } - - public void EnsureSuccessful(bool suppressOutput = false) - { - if(ExitCode != 0) - { - StringBuilder message = new StringBuilder($"Command failed with exit code {ExitCode}: {StartInfo.FileName} {StartInfo.Arguments}"); - - if (!suppressOutput) - { - if (!string.IsNullOrEmpty(StdOut)) - { - message.AppendLine($"{Environment.NewLine}Standard Output:{Environment.NewLine}{StdOut}"); - } - - if (!string.IsNullOrEmpty(StdErr)) - { - message.AppendLine($"{Environment.NewLine}Standard Error:{Environment.NewLine}{StdErr}"); - } - } - - throw new BuildFailureException(message.ToString()); - } - } - } -} \ No newline at end of file diff --git a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Constants.cs b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Constants.cs index 66bbb9000..263c35c00 100644 --- a/build_projects/Microsoft.DotNet.Cli.Build.Framework/Constants.cs +++ b/build_projects/Microsoft.DotNet.Cli.Build.Framework/Constants.cs @@ -9,15 +9,5 @@ namespace Microsoft.DotNet.Cli.Build.Framework { //public static readonly string ProjectFileName = "project.json"; public static readonly string ExeSuffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : string.Empty; - - // Priority order of runnable suffixes to look for and run - public static readonly string[] RunnableSuffixes = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) - ? new string[] { ".exe", ".cmd", ".bat" } - : new string[] { string.Empty }; - - public static readonly string DynamicLibPrefix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "" : "lib"; - - public static readonly string DynamicLibSuffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".dll" : - RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? ".dylib" : ".so"; } } diff --git a/build_projects/dotnet-cli-build/AddMetadataIsPE.cs b/build_projects/dotnet-cli-build/AddMetadataIsPE.cs new file mode 100644 index 000000000..aa003114d --- /dev/null +++ b/build_projects/dotnet-cli-build/AddMetadataIsPE.cs @@ -0,0 +1,65 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System; +using System.IO; +using System.Reflection.PortableExecutable; +using System.Collections.Generic; + +namespace Microsoft.DotNet.Cli.Build +{ + public class AddMetadataIsPE : Task + { + [Required] + public ITaskItem[] Items { get; set; } + + [Output] + public ITaskItem[] ResultItems { get; set; } + + public override bool Execute() + { + var resultItemsList = new List(); + + foreach (var item in Items) + { + var resultItem = new TaskItem(item); + item.CopyMetadataTo(resultItem); + + if (File.Exists(resultItem.GetMetadata("FullPath")) && + HasMetadata(resultItem.GetMetadata("FullPath"))) + { + resultItem.SetMetadata("IsPE", "True"); + } + else + { + resultItem.SetMetadata("IsPE", "False"); + } + + resultItemsList.Add(resultItem); + } + + ResultItems = resultItemsList.ToArray(); + + return true; + } + + private static bool HasMetadata(string pathToFile) + { + try + { + using (var inStream = File.OpenRead(pathToFile)) + { + using (var peReader = new PEReader(inStream)) + { + return peReader.HasMetadata; + } + } + } + catch (BadImageFormatException) { } + + return false; + } + } +} diff --git a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs index f7feff6da..d60d51a6a 100644 --- a/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs +++ b/build_projects/dotnet-cli-build/ChangeEntryPointLibraryName.cs @@ -4,8 +4,6 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - namespace Microsoft.DotNet.Cli.Build { public class ChangeEntryPointLibraryName : Task diff --git a/build_projects/dotnet-cli-build/Chmod.cs b/build_projects/dotnet-cli-build/Chmod.cs new file mode 100644 index 000000000..736c60c34 --- /dev/null +++ b/build_projects/dotnet-cli-build/Chmod.cs @@ -0,0 +1,73 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class Chmod : ToolTask + { + [Required] + public string File { get; set; } + + [Required] + public string Mode { get; set; } + + public bool Recursive { get; set; } + + protected override bool ValidateParameters() + { + base.ValidateParameters(); + + if (!System.IO.File.Exists(File)) + { + Log.LogError($"File '{File} does not exist."); + + return false; + } + + return true; + } + + protected override string ToolName + { + get { return "chmod"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + return "chmod"; + } + + protected override string GenerateCommandLineCommands() + { + return $"{GetRecursive()} {GetMode()} {GetFilePath()}"; + } + + private string GetFilePath() + { + return File; + } + + private string GetMode() + { + return Mode; + } + + private string GetRecursive() + { + if(Recursive) + { + return "--recursive"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/CleanPublishOutput.cs b/build_projects/dotnet-cli-build/CleanPublishOutput.cs deleted file mode 100644 index 2ffdca6a9..000000000 --- a/build_projects/dotnet-cli-build/CleanPublishOutput.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CleanPublishOutput : Task - { - [Required] - public string Path { get; set; } - - [Required] - public string Name { get; set; } - - [Required] - public bool DeleteRuntimeConfigJson { get; set; } - - [Required] - public bool DeleteDepsJson { get; set; } - - public override bool Execute() - { - PublishMutationUtilties.CleanPublishOutput(Path, Name, DeleteRuntimeConfigJson, DeleteDepsJson); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/CliDependencyVersions.cs b/build_projects/dotnet-cli-build/CliDependencyVersions.cs deleted file mode 100644 index a692b074d..000000000 --- a/build_projects/dotnet-cli-build/CliDependencyVersions.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.Cli.Build -{ - public class CliDependencyVersions - { - public static readonly string SharedFrameworkVersion = "1.0.0"; - public static readonly string SharedHostVersion = "1.0.1"; - public static readonly string HostFxrVersion = "1.0.1"; - - public static readonly string SharedFrameworkChannel = "preview"; - public static readonly string SharedHostChannel = "preview"; - public static readonly string HostFxrChannel = "preview"; - } -} diff --git a/build_projects/dotnet-cli-build/Crossgen.cs b/build_projects/dotnet-cli-build/Crossgen.cs new file mode 100644 index 000000000..aa0339914 --- /dev/null +++ b/build_projects/dotnet-cli-build/Crossgen.cs @@ -0,0 +1,134 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Build.Tasks +{ + public sealed class Crossgen : ToolTask + { + [Required] + public string SourceAssembly { get;set; } + + [Required] + public string DestinationPath { get; set; } + + [Required] + public string JITPath { get; set; } + + public string CrossgenPath { get; set; } + + public bool ReadyToRun { get; set; } + + public ITaskItem[] PlatformAssemblyPaths { get; set; } + + private string TempOutputPath { get; set; } + + protected override bool ValidateParameters() + { + base.ValidateParameters(); + + if (!File.Exists(SourceAssembly)) + { + Log.LogError($"SourceAssembly '{SourceAssembly}' does not exist."); + + return false; + } + + return true; + } + + public override bool Execute() + { + TempOutputPath = Path.GetTempFileName(); + + var toolResult = base.Execute(); + + if (toolResult) + { + File.Copy(TempOutputPath, DestinationPath, overwrite: true); + } + + if (File.Exists(TempOutputPath)) + { + File.Delete(TempOutputPath); + } + + return toolResult; + } + + protected override string ToolName + { + get { return "crossgen"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + if (CrossgenPath != null) + { + return CrossgenPath; + } + + return "crossgen"; + } + + protected override string GenerateCommandLineCommands() + { + return $"{GetReadyToRun()} {GetInPath()} {GetOutPath()} {GetPlatformAssemblyPaths()} {GetJitPath()}"; + } + + private string GetReadyToRun() + { + if (ReadyToRun) + { + return "-readytorun"; + } + + return null; + } + + private string GetInPath() + { + return $"-in {SourceAssembly}"; + } + + private string GetOutPath() + { + return $"-out {TempOutputPath}"; + } + + private string GetPlatformAssemblyPaths() + { + var platformAssemblyPaths = String.Empty; + + if (PlatformAssemblyPaths != null) + { + foreach (var excludeTaskItem in PlatformAssemblyPaths) + { + platformAssemblyPaths += $"{excludeTaskItem.ItemSpec}{Path.PathSeparator}"; + } + } + + return $" -platform_assemblies_paths {platformAssemblyPaths.Trim(':')}"; + } + + private string GetJitPath() + { + return $"-JITPath {JITPath}"; + } + + protected override void LogToolCommand(string message) + { + base.LogToolCommand($"{base.GetWorkingDirectory()}> {message}"); + } + } +} diff --git a/build_projects/dotnet-cli-build/CrossgenDirectory.cs b/build_projects/dotnet-cli-build/CrossgenDirectory.cs deleted file mode 100644 index 504690777..000000000 --- a/build_projects/dotnet-cli-build/CrossgenDirectory.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class CrossgenDirectory : Task - { - [Required] - public string CoreCLRVersion { get; set; } - - [Required] - public string JitVersion { get; set; } - - [Required] - public string SharedFrameworkNameVersionPath { get; set; } - - [Required] - public string SdkOutputDirectory { get; set; } - - public override bool Execute() - { - var crossgenUtil = new Crossgen(CoreCLRVersion, JitVersion); - - crossgenUtil.CrossgenDirectory(SharedFrameworkNameVersionPath, SdkOutputDirectory); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/DotNetNew.cs b/build_projects/dotnet-cli-build/DotNetNew.cs new file mode 100644 index 000000000..1d87963f3 --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetNew.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetNew : DotNetTool + { + protected override string Command + { + get { return "new"; } + } + + protected override string Args + { + get { return $""; } + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetPublish.cs b/build_projects/dotnet-cli-build/DotNetPublish.cs new file mode 100644 index 000000000..a98ad46a9 --- /dev/null +++ b/build_projects/dotnet-cli-build/DotNetPublish.cs @@ -0,0 +1,102 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.DotNet.Cli.Build +{ + public class DotNetPublish : DotNetTool + { + protected override string Command + { + get { return "publish"; } + } + + protected override string Args + { + get { return $"{GetProjectPath()} {GetConfiguration()} {GetFramework()} {GetNativeSubdirectory()} {GetBuildBasePath()} {GetOutput()} {GetVersionSuffix()}"; } + } + + public string BuildBasePath { get; set; } + + public string Configuration { get; set; } + + public string Framework { get; set; } + + public bool NativeSubDirectory { get; set; } + + public string Output { get; set; } + + public string ProjectPath { get; set; } + + public string VersionSuffix { get; set; } + + private string GetBuildBasePath() + { + if (!string.IsNullOrEmpty(BuildBasePath)) + { + return $"--build-base-path {BuildBasePath}"; + } + + return null; + } + + private string GetConfiguration() + { + if (!string.IsNullOrEmpty(Configuration)) + { + return $"--configuration {Configuration}"; + } + + return null; + } + + private string GetFramework() + { + if (!string.IsNullOrEmpty(Framework)) + { + return $"--framework {Framework}"; + } + + return null; + } + + private string GetNativeSubdirectory() + { + if (NativeSubDirectory) + { + return $"--native-subdirectory"; + } + + return null; + } + + private string GetOutput() + { + if (!string.IsNullOrEmpty(Output)) + { + return $"--output {Output}"; + } + + return null; + } + + private string GetProjectPath() + { + if (!string.IsNullOrEmpty(ProjectPath)) + { + return $"{ProjectPath}"; + } + + return null; + } + + private string GetVersionSuffix() + { + if (!string.IsNullOrEmpty(VersionSuffix)) + { + return $"--version-suffix {VersionSuffix}"; + } + + return null; + } + } +} diff --git a/build_projects/dotnet-cli-build/DotNetRestore.cs b/build_projects/dotnet-cli-build/DotNetRestore.cs index e29bc914b..234bb5835 100644 --- a/build_projects/dotnet-cli-build/DotNetRestore.cs +++ b/build_projects/dotnet-cli-build/DotNetRestore.cs @@ -12,11 +12,13 @@ namespace Microsoft.DotNet.Cli.Build protected override string Args { - get { return $"{GetVerbosity()} {GetFallbackSource()}"; } + get { return $"{GetVerbosity()} {GetFallbackSource()} {GetPackages()}"; } } public string FallbackSource { get; set; } + public string Packages { get; set; } + public string Verbosity { get; set; } private string GetFallbackSource() @@ -29,6 +31,16 @@ namespace Microsoft.DotNet.Cli.Build return null; } + private string GetPackages() + { + if (!string.IsNullOrEmpty(Packages)) + { + return $"--packages {Packages}"; + } + + return null; + } + private string GetVerbosity() { if (!string.IsNullOrEmpty(Verbosity)) diff --git a/build_projects/dotnet-cli-build/DotNetTool.cs b/build_projects/dotnet-cli-build/DotNetTool.cs index e9a070ab5..d074856b0 100644 --- a/build_projects/dotnet-cli-build/DotNetTool.cs +++ b/build_projects/dotnet-cli-build/DotNetTool.cs @@ -4,6 +4,8 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; + namespace Microsoft.DotNet.Cli.Build { public abstract class DotNetTool : ToolTask @@ -20,7 +22,7 @@ namespace Microsoft.DotNet.Cli.Build protected override string ToolName { - get { return HostArtifactNames.DotnetHostBaseName; } + get { return $"dotnet{Constants.ExeSuffix}"; } } protected override MessageImportance StandardOutputLoggingImportance diff --git a/build_projects/dotnet-cli-build/ExtractArchive.cs b/build_projects/dotnet-cli-build/ExtractArchive.cs deleted file mode 100644 index 7ac9fc83e..000000000 --- a/build_projects/dotnet-cli-build/ExtractArchive.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO.Compression; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Build.Framework; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class ExtractArchive : Task - { - [Required] - public string InputFile { get; set; } - - [Required] - public string DestinationDirectory { get; set; } - - public override bool Execute() - { - FS.Mkdirp(DestinationDirectory); - - Log.LogMessage($"Extracting Archive '{InputFile}' to '{DestinationDirectory}'"); - - if (CurrentPlatform.IsWindows) - { - ZipFile.ExtractToDirectory(InputFile, DestinationDirectory); - } - else - { - Exec("tar", "xf", InputFile, "-C", DestinationDirectory); - } - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/FixModeFlags.cs b/build_projects/dotnet-cli-build/FixModeFlags.cs deleted file mode 100644 index 4f4ec93dd..000000000 --- a/build_projects/dotnet-cli-build/FixModeFlags.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class FixModeFlags : Task - { - [Required] - public string Dir { get; set; } - - public override bool Execute() - { - FS.FixModeFlags(Dir); - - return true; - } - } -} diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs index d8aa28fe9..933e1c9f7 100644 --- a/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs +++ b/build_projects/dotnet-cli-build/GenerateBuildVersionInfo.cs @@ -6,7 +6,7 @@ using Microsoft.Build.Utilities; namespace Microsoft.DotNet.Cli.Build { - public class GenerateBuildVersionInfo : Task + public class GenerateBuildVersionInfo : ToolTask { [Required] public string RepoRoot { get; set; } @@ -20,9 +20,6 @@ namespace Microsoft.DotNet.Cli.Build [Output] public int VersionPatch { get; set; } - [Output] - public string CommitHash { get; set; } - [Output] public string CommitCount { get; set; } @@ -50,12 +47,13 @@ namespace Microsoft.DotNet.Cli.Build [Output] public string BranchName { get; set; } + private int _commitCount; + public override bool Execute() { - var branchInfo = new BranchInfo(RepoRoot); + base.Execute(); - var commitCount = GitUtils.GetCommitCount(); - var commitHash = GitUtils.GetCommitHash(); + var branchInfo = new BranchInfo(RepoRoot); var buildVersion = new BuildVersion() { @@ -63,13 +61,12 @@ namespace Microsoft.DotNet.Cli.Build Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], - CommitCount = commitCount + CommitCount = _commitCount }; VersionMajor = buildVersion.Major; VersionMinor = buildVersion.Minor; VersionPatch = buildVersion.Patch; - CommitHash = commitHash; CommitCount = buildVersion.CommitCountString; ReleaseSuffix = buildVersion.ReleaseSuffix; VersionSuffix = buildVersion.VersionSuffix; @@ -82,5 +79,30 @@ namespace Microsoft.DotNet.Cli.Build return true; } + + protected override string ToolName + { + get { return "git"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + return "git"; + } + + protected override string GenerateCommandLineCommands() + { + return $"rev-list --count HEAD"; + } + + protected override void LogEventsFromTextOutput(string line, MessageImportance importance) + { + _commitCount = int.Parse(line); + } } } \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/GetCommitHash.cs b/build_projects/dotnet-cli-build/GetCommitHash.cs new file mode 100644 index 000000000..8eb18b07c --- /dev/null +++ b/build_projects/dotnet-cli-build/GetCommitHash.cs @@ -0,0 +1,42 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GetCommitHash : ToolTask + { + [Required] + public string RepoRoot { get; set; } + + [Output] + public string CommitHash { get; set; } + + protected override string ToolName + { + get { return "git"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + return "git"; + } + + protected override string GenerateCommandLineCommands() + { + return $"rev-parse HEAD"; + } + + protected override void LogEventsFromTextOutput(string line, MessageImportance importance) + { + CommitHash = line; + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs new file mode 100644 index 000000000..b2575a22e --- /dev/null +++ b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs @@ -0,0 +1,112 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System; +using System.IO; +using System.IO.Compression; + +namespace Microsoft.DotNet.Build.Tasks +{ + public sealed class TarGzFileExtractToDirectory : ToolTask + { + /// + /// The path to the archive to extract. + /// + [Required] + public string SourceArchive { get; set; } + + /// + /// The path of the directory to which the archive should be extracted. + /// + [Required] + public string DestinationDirectory { get; set; } + + /// + /// Indicates if the destination directory should be cleaned if it already exists. + /// + public bool OverwriteDestination { get; set; } + + protected override bool ValidateParameters() + { + base.ValidateParameters(); + + var retVal = true; + + if (Directory.Exists(DestinationDirectory)) + { + if (OverwriteDestination == true) + { + Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory); + Directory.Delete(DestinationDirectory, recursive: true); + } + else + { + Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination)); + + retVal = false; + } + } + + if (!File.Exists(SourceArchive)) + { + Log.LogError($"SourceArchive '{SourceArchive} does not exist."); + + retVal = false; + } + + if (retVal) + { + Log.LogMessage($"Creating Directory {DestinationDirectory}"); + Directory.CreateDirectory(DestinationDirectory); + } + + return retVal; + } + + public override bool Execute() + { + bool retVal = base.Execute(); + + if (!retVal) + { + Log.LogMessage($"Deleting Directory {DestinationDirectory}"); + Directory.Delete(DestinationDirectory); + } + + return retVal; + } + + protected override string ToolName + { + get { return "tar"; } + } + + protected override MessageImportance StandardOutputLoggingImportance + { + get { return MessageImportance.High; } // or else the output doesn't get logged by default + } + + protected override string GenerateFullPathToTool() + { + return "tar"; + } + + protected override string GenerateCommandLineCommands() + { + return $"xf {GetSourceArchive()} -C {GetDestinationDirectory()}"; + } + + private string GetSourceArchive() + { + return SourceArchive; + } + + private string GetDestinationDirectory() + { + return DestinationDirectory; + } + } +} diff --git a/build_projects/shared-build-targets-utils/DependencyVersions.cs b/build_projects/shared-build-targets-utils/DependencyVersions.cs deleted file mode 100644 index 2a43aa7f8..000000000 --- a/build_projects/shared-build-targets-utils/DependencyVersions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build -{ - public class DependencyVersions - { - public static readonly string CoreCLRVersion = "1.0.2"; - public static readonly string JitVersion = "1.0.2"; - } -} diff --git a/build_projects/shared-build-targets-utils/HostArtifactNames.cs b/build_projects/shared-build-targets-utils/HostArtifactNames.cs deleted file mode 100644 index c0e9a3cb1..000000000 --- a/build_projects/shared-build-targets-utils/HostArtifactNames.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.DotNet.Cli.Build.Framework; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.Cli.Build -{ - public class HostArtifactNames - { - public static string DotnetHostBaseName => $"dotnet{Constants.ExeSuffix}"; - public static string DotnetHostFxrBaseName => $"{Constants.DynamicLibPrefix}hostfxr{Constants.DynamicLibSuffix}"; - public static string HostPolicyBaseName => $"{Constants.DynamicLibPrefix}hostpolicy{Constants.DynamicLibSuffix}"; - } -} diff --git a/build_projects/shared-build-targets-utils/Publishing/DebRepoPublisher.cs b/build_projects/shared-build-targets-utils/Publishing/DebRepoPublisher.cs deleted file mode 100644 index b5203609f..000000000 --- a/build_projects/shared-build-targets-utils/Publishing/DebRepoPublisher.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.IO; -using System.Net.Http; -using System.Text; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.WindowsAzure.Storage; -using Microsoft.WindowsAzure.Storage.Blob; - -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class DebRepoPublisher - { - private const string _debianRevisionNumber = "1"; - private string _repoID; - private string _uploadJsonDirectory; - - public DebRepoPublisher(string uploadJsonDirectory) - { - _uploadJsonDirectory = uploadJsonDirectory; - _repoID = Environment.GetEnvironmentVariable("REPO_ID"); - } - - public void PublishDebFileToDebianRepo(string packageName, string packageVersion, string uploadUrl) - { - var uploadJson = GenerateUploadJsonFile(packageName, packageVersion, uploadUrl); - - Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "publish", "repoapi_client.sh"), "-addpkg", uploadJson) - .Execute() - .EnsureSuccessful(); - } - - private string GenerateUploadJsonFile(string packageName, string packageVersion, string uploadUrl) - { - var uploadJson = Path.Combine(_uploadJsonDirectory, "package_upload.json"); - File.Delete(uploadJson); - - using (var fileStream = File.Create(uploadJson)) - { - using (StreamWriter sw = new StreamWriter(fileStream)) - { - sw.WriteLine("{"); - sw.WriteLine($" \"name\":\"{packageName}\","); - sw.WriteLine($" \"version\":\"{packageVersion}-{_debianRevisionNumber}\","); - sw.WriteLine($" \"repositoryId\":\"{_repoID}\","); - sw.WriteLine($" \"sourceUrl\":\"{uploadUrl}\""); - sw.WriteLine("}"); - } - } - - return uploadJson; - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/BranchInfo.cs b/build_projects/shared-build-targets-utils/Utils/BranchInfo.cs index 7927b428a..8f8d11db9 100644 --- a/build_projects/shared-build-targets-utils/Utils/BranchInfo.cs +++ b/build_projects/shared-build-targets-utils/Utils/BranchInfo.cs @@ -8,8 +8,6 @@ using Microsoft.DotNet.Cli.Build.Framework; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - namespace Microsoft.DotNet.Cli.Build { public class BranchInfo diff --git a/build_projects/shared-build-targets-utils/Utils/Crossgen.cs b/build_projects/shared-build-targets-utils/Utils/Crossgen.cs deleted file mode 100644 index b60207e7c..000000000 --- a/build_projects/shared-build-targets-utils/Utils/Crossgen.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public class Crossgen - { - private string _coreClrVersion; - private string _jitVersion; - private string _crossGenPath; - private static readonly string[] s_excludedLibraries = - { - "mscorlib.dll", - "mscorlib.ni.dll", - "System.Private.CoreLib.dll", - "System.Private.CoreLib.ni.dll" - }; - - // This is not always correct. The version of crossgen we need to pick up is whatever one was restored as part - // of the Microsoft.NETCore.Runtime.CoreCLR package that is part of the shared library. For now, the version hardcoded - // in CompileTargets and the one in the shared library project.json match and are updated in lock step, but long term - // we need to be able to look at the project.lock.json file and figure out what version of Microsoft.NETCore.Runtime.CoreCLR - // was used, and then select that version. - public Crossgen(string coreClrVersion, string jitVersion) - { - _coreClrVersion = coreClrVersion; - _jitVersion = jitVersion; - _crossGenPath = GetCrossgenPathForVersion(); - } - - private string GetCrossgenPathForVersion() - { - var crossgenPackagePath = GetCrossGenPackagePathForVersion(); - - if (crossgenPackagePath == null) - { - return null; - } - - return Path.Combine( - crossgenPackagePath, - "tools", - $"crossgen{Constants.ExeSuffix}"); - } - - private string GetLibCLRJitPathForVersion() - { - var jitRid = GetCoreCLRRid(); - var jitPackagePath = GetJitPackagePathForVersion(); - - if (jitPackagePath == null) - { - return null; - } - - return Path.Combine( - jitPackagePath, - "runtimes", - jitRid, - "native", - $"{Constants.DynamicLibPrefix}clrjit{Constants.DynamicLibSuffix}"); - } - - private string GetJitPackagePathForVersion() - { - string jitRid = GetCoreCLRRid(); - - if (jitRid == null) - { - return null; - } - - string packageId = $"runtime.{jitRid}.Microsoft.NETCore.Jit"; - - return Path.Combine( - Dirs.NuGetPackages, - packageId, - _jitVersion); - } - - private string GetCoreLibsDirForVersion() - { - string coreclrRid = GetCoreCLRRid(); - - if (coreclrRid == null) - { - return null; - } - - string packageId = $"runtime.{coreclrRid}.Microsoft.NETCore.Runtime.CoreCLR"; - - return Path.Combine( - Dirs.NuGetPackages, - packageId, - _coreClrVersion, - "runtimes", - coreclrRid, - "lib", - "netstandard1.0"); - } - - private string GetCrossGenPackagePathForVersion() - { - string coreclrRid = GetCoreCLRRid(); - - if (coreclrRid == null) - { - return null; - } - - string packageId = $"runtime.{coreclrRid}.Microsoft.NETCore.Runtime.CoreCLR"; - - return Path.Combine( - Dirs.NuGetPackages, - packageId, - _coreClrVersion); - } - - private string GetCoreCLRRid() - { - string rid = null; - if (CurrentPlatform.IsWindows) - { - var arch = RuntimeEnvironment.RuntimeArchitecture; - rid = $"win7-{arch}"; - } - else if (CurrentPlatform.IsOSX) - { - rid = "osx.10.10-x64"; - } - else if (CurrentPlatform.IsCentOS || CurrentPlatform.IsRHEL) - { - // CentOS runtime is in the runtime.rhel.7-x64... package as are all - // versions of RHEL - rid = "rhel.7-x64"; - } - else if (CurrentPlatform.IsLinux) - { - rid = RuntimeEnvironment.GetRuntimeIdentifier(); - } - - return rid; - } - - public void CrossgenDirectory(string sharedFxPath, string pathToAssemblies) - { - // Check if we need to skip crossgen - if (string.Equals(Environment.GetEnvironmentVariable("DISABLE_CROSSGEN"), "1")) - { - var originalColor = Console.ForegroundColor; - Console.ForegroundColor = ConsoleColor.Yellow; - Console.WriteLine("Skipping crossgen for because DISABLE_CROSSGEN is set to 1"); - Console.ForegroundColor = originalColor; - return; - } - - // HACK - // The input directory can be a portable FAT app (example the CLI itself). - // In that case there can be RID specific managed dependencies which are not right next to the app binary (example System.Diagnostics.TraceSource). - // We need those dependencies during crossgen. For now we just pass all subdirectories of the input directory as input to crossgen. - // The right fix - - // If the assembly has deps.json then parse the json file to get all the dependencies, pass these dependencies as input to crossgen. - // else pass the current directory of assembly as input to crossgen. - var coreLibsDir = GetCoreLibsDirForVersion(); - var addtionalPaths = Directory.GetDirectories(pathToAssemblies, "*", SearchOption.AllDirectories).ToList(); - var paths = new List() { coreLibsDir, sharedFxPath, pathToAssemblies }; - paths.AddRange(addtionalPaths); - var platformAssembliesPaths = string.Join(Path.PathSeparator.ToString(), paths.Distinct()); - var jitPath = GetLibCLRJitPathForVersion(); - - var env = new Dictionary() - { - // disable partial ngen - { "COMPlus_PartialNGen", "0" } - }; - - foreach (var file in Directory.GetFiles(pathToAssemblies)) - { - string fileName = Path.GetFileName(file); - - if (s_excludedLibraries.Any(lib => String.Equals(lib, fileName, StringComparison.OrdinalIgnoreCase)) - || !PEUtils.HasMetadata(file)) - { - continue; - } - - string tempPathName = Path.ChangeExtension(file, "readytorun"); - - IList crossgenArgs = new List { - "-readytorun", "-in", file, "-out", tempPathName, - "-platform_assemblies_paths", platformAssembliesPaths - }; - - crossgenArgs.Add("-JITPath"); - crossgenArgs.Add(jitPath); - - ExecSilent(_crossGenPath, crossgenArgs, env); - - File.Copy(tempPathName, file, overwrite: true); - File.Delete(tempPathName); - } - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/Dirs.cs b/build_projects/shared-build-targets-utils/Utils/Dirs.cs index 5dfb0931e..5deee46e7 100644 --- a/build_projects/shared-build-targets-utils/Utils/Dirs.cs +++ b/build_projects/shared-build-targets-utils/Utils/Dirs.cs @@ -8,43 +8,10 @@ namespace Microsoft.DotNet.Cli.Build public static class Dirs { public static readonly string RepoRoot = Directory.GetCurrentDirectory(); - - public static readonly string DebPackagingConfig = Path.Combine(Dirs.RepoRoot, "packaging", "deb"); public static readonly string Output = Path.Combine( RepoRoot, "artifacts", RuntimeEnvironment.GetRuntimeIdentifier()); - - public static readonly string Intermediate = Path.Combine(Output, "intermediate"); - public static readonly string PackagesNoRID = Path.Combine(RepoRoot, "artifacts", "packages"); public static readonly string Packages = Path.Combine(Output, "packages"); - public static readonly string Stage1 = Path.Combine(Output, "stage1"); - public static readonly string Stage1Compilation = Path.Combine(Output, "stage1compilation"); - public static readonly string Stage1Symbols = Path.Combine(Output, "stage1symbols"); - public static readonly string Stage2 = Path.Combine(Output, "stage2"); - public static readonly string Stage2Compilation = Path.Combine(Output, "stage2compilation"); - public static readonly string Stage2Symbols = Path.Combine(Output, "stage2symbols"); - public static readonly string CorehostLatest = Path.Combine(Output, "corehost"); // Not using Path.Combine(Output, "corehost", "latest") to keep signing working. - public static readonly string CorehostLocked = Path.Combine(Output, "corehost", "locked"); - public static readonly string CorehostLocalPackages = Path.Combine(Output, "corehost"); - public static readonly string CorehostDummyPackages = Path.Combine(Output, "corehostdummypackages"); - public static readonly string SharedFrameworkPublish = Path.Combine(Intermediate, "sharedFrameworkPublish"); - public static readonly string TestOutput = Path.Combine(Output, "tests"); - public static readonly string TestArtifacts = Path.Combine(TestOutput, "artifacts"); - public static readonly string TestPackages = Path.Combine(TestOutput, "packages"); - public static readonly string TestPackagesBuild = Path.Combine(TestOutput, "packagesBuild"); - - - public static readonly string OSXReferenceAssembliesPath = "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks"; - public static readonly string UsrLocalReferenceAssembliesPath = "/usr/local/lib/mono/xbuild-frameworks"; - public static readonly string UsrReferenceAssembliesPath = "/usr/lib/mono/xbuild-frameworks"; - - - public static string NuGetPackages = Environment.GetEnvironmentVariable("NUGET_PACKAGES") ?? GetNuGetPackagesDir(); - - private static string GetNuGetPackagesDir() - { - return Path.Combine(Dirs.RepoRoot, ".nuget", "packages"); - } } } diff --git a/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs b/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs deleted file mode 100644 index 7e6451e98..000000000 --- a/build_projects/shared-build-targets-utils/Utils/DotNetCli.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using Microsoft.DotNet.Cli.Build.Framework; -using Microsoft.DotNet.InternalAbstractions; - -namespace Microsoft.DotNet.Cli.Build -{ - public class DotNetCli - { - public static readonly DotNetCli Stage0 = new DotNetCli(GetStage0Path()); - public static readonly DotNetCli Stage1 = new DotNetCli(Dirs.Stage1); - public static readonly DotNetCli Stage2 = new DotNetCli(Dirs.Stage2); - - public string BinPath { get; } - - public DotNetCli(string binPath) - { - BinPath = binPath; - } - - public Command Exec(string command, params string[] args) - { - var newArgs = args.ToList(); - newArgs.Insert(0, command); - - if (EnvVars.Verbose) - { - newArgs.Insert(0, "-v"); - } - - return Command.Create(Path.Combine(BinPath, $"dotnet{Constants.ExeSuffix}"), newArgs); - } - - public Command Restore(params string[] args) => Exec("restore", args); - public Command Build(params string[] args) => Exec("build", args); - public Command Pack(params string[] args) => Exec("pack", args); - public Command Test(params string[] args) => Exec("test", args); - public Command Publish(params string[] args) => Exec("publish", args); - public Command New(params string[] args) => Exec("new", args); - - public string GetRuntimeId() - { - string info = Exec("", "--info").CaptureStdOut().Execute().StdOut; - string rid = Array.Find(info.Split(Environment.NewLine.ToCharArray()), (e) => e.Contains("RID:"))?.Replace("RID:", "").Trim(); - - if (string.IsNullOrEmpty(rid)) - { - throw new BuildFailureException("Could not find the Runtime ID from Stage0 --info or --version"); - } - - return rid; - } - - private static string GetStage0Path() - { - return Path.Combine(Directory.GetCurrentDirectory(), - ".dotnet_stage0", - RuntimeEnvironment.RuntimeArchitecture); - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/FS.cs b/build_projects/shared-build-targets-utils/Utils/FS.cs index dc20ec859..132ca968a 100644 --- a/build_projects/shared-build-targets-utils/Utils/FS.cs +++ b/build_projects/shared-build-targets-utils/Utils/FS.cs @@ -4,8 +4,6 @@ using System; using Microsoft.DotNet.Cli.Build.Framework; -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - namespace Microsoft.DotNet.Cli.Build { public static class FS @@ -17,90 +15,5 @@ namespace Microsoft.DotNet.Cli.Build Directory.CreateDirectory(dir); } } - - public static void Rm(string file) - { - if(File.Exists(file)) - { - File.Delete(file); - } - } - - public static void Rmdir(string dir) - { - if(Directory.Exists(dir)) - { - Directory.Delete(dir, recursive: true); - } - } - - public static void RmFilesInDirRecursive(string dir, string filePattern) - { - var files = Directory.EnumerateFiles(dir, filePattern, SearchOption.AllDirectories); - foreach (var file in files) - { - FS.Rm(file); - } - } - - public static void Chmod(string file, string mode, bool recursive = false) - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - if (recursive) - { - Command.Create("chmod", "-R", mode, file).Execute().EnsureSuccessful(); - } - else - { - Command.Create("chmod", mode, file).Execute().EnsureSuccessful(); - } - } - } - - public static void ChmodAll(string searchDir, string pattern, string mode) - { - Exec("find", searchDir, "-type", "f", "-name", pattern, "-exec", "chmod", mode, "{}", ";"); - } - - public static void FixModeFlags(string dir) - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - // Managed code doesn't need 'x' - ChmodAll(dir, "*.dll", "644"); - ChmodAll(dir, "*.exe", "644"); - - // Generally, dylibs and sos have 'x' (no idea if it's required ;)) - // (No need to condition this on OS since there shouldn't be any dylibs on Linux, - // but even if they are we may as well set their mode flags :)) - ChmodAll(dir, "*.dylib", "755"); - ChmodAll(dir, "*.so", "755"); - - // Executables (those without dots) are executable :) - Exec("find", dir, "-type", "f", "!", "-name", "*.*", "-exec", "chmod", "755", "{}", ";"); - } - } - - public static void CopyRecursive(string sourceDirectory, string destinationDirectory, bool overwrite = false) - { - Mkdirp(destinationDirectory); - - foreach(var dir in Directory.EnumerateDirectories(sourceDirectory)) - { - CopyRecursive(dir, Path.Combine(destinationDirectory, Path.GetFileName(dir)), overwrite); - } - - foreach(var file in Directory.EnumerateFiles(sourceDirectory)) - { - var dest = Path.Combine(destinationDirectory, Path.GetFileName(file)); - if (!File.Exists(dest) || overwrite) - { - // We say overwrite true, because we only get here if the file didn't exist (thus it doesn't matter) or we - // wanted to overwrite :) - File.Copy(file, dest, overwrite: true); - } - } - } } } diff --git a/build_projects/shared-build-targets-utils/Utils/GitUtils.cs b/build_projects/shared-build-targets-utils/Utils/GitUtils.cs deleted file mode 100644 index bae5c67e6..000000000 --- a/build_projects/shared-build-targets-utils/Utils/GitUtils.cs +++ /dev/null @@ -1,27 +0,0 @@ -using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class GitUtils - { - public static int GetCommitCount() - { - return int.Parse(ExecuteGitCommand("rev-list", "--count", "HEAD")); - } - - public static string GetCommitHash() - { - return ExecuteGitCommand("rev-parse", "HEAD"); - } - - private static string ExecuteGitCommand(params string[] args) - { - var gitResult = Cmd("git", args) - .CaptureStdOut() - .Execute(); - gitResult.EnsureSuccessful(); - - return gitResult.StdOut.Trim(); - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/HostVersion.cs b/build_projects/shared-build-targets-utils/Utils/HostVersion.cs deleted file mode 100644 index b57ee8cd5..000000000 --- a/build_projects/shared-build-targets-utils/Utils/HostVersion.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Collections.Generic; - -namespace Microsoft.DotNet.Cli.Build -{ - public class HostVersion : Version - { - // ------------------------------------------HOST-VERSIONING------------------------------------------- - // - // Host versions are independent of CLI versions. Moreover, these version numbers - // are baked into the binary and is used to look up a serviced binary replacement. - // - - // - // Latest hosts for production of nupkgs. - // - - // Version constants without suffix - public override int Major => 1; - public override int Minor => 0; - public override int Patch => 1; - public override string ReleaseSuffix => "rc3"; - public string LatestHostVersionNoSuffix => $"{Major}.{Minor}.{Patch}"; - public string LatestHostFxrVersionNoSuffix => $"{Major}.{Minor}.{Patch}"; - public string LatestHostPolicyVersionNoSuffix => $"{Major}.{Minor}.{Patch}"; - public string LatestHostPrerelease => ReleaseSuffix; - public string LatestHostBuildMajor => $"{CommitCountString}"; - public string LatestHostBuildMinor => "00"; - public string LatestHostSuffix => $"{ReleaseSuffix}-{LatestHostBuildMajor}-{LatestHostBuildMinor}"; - - // Full versions and package information. - public string LatestHostVersion => $"{LatestHostVersionNoSuffix}-{LatestHostSuffix}"; - public string LatestHostFxrVersion => $"{LatestHostFxrVersionNoSuffix}-{LatestHostSuffix}"; - public string LatestHostPolicyVersion => $"{LatestHostPolicyVersionNoSuffix}-{LatestHostSuffix}"; - public Dictionary LatestHostPackages => new Dictionary() - { - { "Microsoft.NETCore.DotNetHost", LatestHostVersion }, - { "Microsoft.NETCore.DotNetHostResolver", LatestHostFxrVersion }, - { "Microsoft.NETCore.DotNetHostPolicy", LatestHostPolicyVersion } - }; - - // - // Locked muxer for consumption in CLI. - // - public bool IsLocked = false; // Set this variable to toggle muxer locking. - public string LockedHostFxrVersion => IsLocked ? "1.0.1-rc2-002468-00" : LatestHostFxrVersion; - public string LockedHostVersion => IsLocked ? "1.0.1-rc2-002468-00" : LatestHostVersion; - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/JsonUtils.cs b/build_projects/shared-build-targets-utils/Utils/JsonUtils.cs deleted file mode 100644 index 18fb5b22b..000000000 --- a/build_projects/shared-build-targets-utils/Utils/JsonUtils.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.IO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class JsonUtils - { - public static JObject ReadProject(string projectJsonPath) - { - using (TextReader projectFileReader = File.OpenText(projectJsonPath)) - { - var projectJsonReader = new JsonTextReader(projectFileReader); - - var serializer = new JsonSerializer(); - return serializer.Deserialize(projectJsonReader); - } - } - - public static void WriteProject(JObject projectRoot, string projectJsonPath) - { - string projectJson = JsonConvert.SerializeObject(projectRoot, Formatting.Indented); - - File.WriteAllText(projectJsonPath, projectJson + Environment.NewLine); - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/Monikers.cs b/build_projects/shared-build-targets-utils/Utils/Monikers.cs index 2553ccf44..4d89575d9 100644 --- a/build_projects/shared-build-targets-utils/Utils/Monikers.cs +++ b/build_projects/shared-build-targets-utils/Utils/Monikers.cs @@ -9,12 +9,6 @@ namespace Microsoft.DotNet.Cli.Build { public class Monikers { - public const string SharedFrameworkName = "Microsoft.NETCore.App"; - public const string CLISdkBrandName = "Microsoft .NET Core 1.0.0 - SDK Preview 2"; - public const string SharedFxBrandName = "Microsoft .NET Core 1.0.0 - Runtime"; - public const string SharedHostBrandName = "Microsoft .NET Core 1.0.0 - Host"; - public const string HostFxrBrandName = "Microsoft .NET Core 1.0.0 - Host FX Resolver"; - public static string GetBadgeMoniker() { switch (RuntimeEnvironment.GetRuntimeIdentifier()) @@ -29,16 +23,6 @@ namespace Microsoft.DotNet.Cli.Build return $"{CurrentPlatform.Current}_{CurrentArchitecture.Current}"; } - - public static string GetDebianHostFxrPackageName(string hostFxrNugetVersion) - { - return $"dotnet-hostfxr-{hostFxrNugetVersion}".ToLower(); - } - - public static string GetDebianSharedFrameworkPackageName(string sharedFrameworkNugetVersion) - { - return $"dotnet-sharedframework-{SharedFrameworkName}-{sharedFrameworkNugetVersion}".ToLower(); - } public static string GetOSShortName() { diff --git a/build_projects/shared-build-targets-utils/Utils/PEUtils.cs b/build_projects/shared-build-targets-utils/Utils/PEUtils.cs deleted file mode 100644 index 3899ade77..000000000 --- a/build_projects/shared-build-targets-utils/Utils/PEUtils.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection.PortableExecutable; - -namespace Microsoft.DotNet.Cli.Build -{ - public static class PEUtils - { - public static bool HasMetadata(string pathToFile) - { - try - { - using (var inStream = File.OpenRead(pathToFile)) - { - using (var peReader = new PEReader(inStream)) - { - return peReader.HasMetadata; - } - } - } - catch (BadImageFormatException) { } - - return false; - } - } -} diff --git a/build_projects/shared-build-targets-utils/Utils/PublishMutationUtilties.cs b/build_projects/shared-build-targets-utils/Utils/PublishMutationUtilties.cs index d54a82bdf..ccf17f9aa 100644 --- a/build_projects/shared-build-targets-utils/Utils/PublishMutationUtilties.cs +++ b/build_projects/shared-build-targets-utils/Utils/PublishMutationUtilties.cs @@ -11,27 +11,6 @@ namespace Microsoft.DotNet.Cli.Build { public class PublishMutationUtilties { - public static void CleanPublishOutput( - string path, - string name, - bool deleteRuntimeConfigJson=false, - bool deleteDepsJson=false) - { - File.Delete(Path.Combine(path, $"{name}{Constants.ExeSuffix}")); - File.Delete(Path.Combine(path, $"{name}.dll")); - File.Delete(Path.Combine(path, $"{name}.pdb")); - - if (deleteRuntimeConfigJson) - { - File.Delete(Path.Combine(path, $"{name}.runtimeconfig.json")); - } - - if (deleteDepsJson) - { - File.Delete(Path.Combine(path, $"{name}.deps.json")); - } - } - public static void ChangeEntryPointLibraryName(string depsFile, string newName) { JToken deps; diff --git a/build_projects/shared-build-targets-utils/Utils/Utils.cs b/build_projects/shared-build-targets-utils/Utils/Utils.cs index e10011106..e23d08bcf 100644 --- a/build_projects/shared-build-targets-utils/Utils/Utils.cs +++ b/build_projects/shared-build-targets-utils/Utils/Utils.cs @@ -9,83 +9,6 @@ namespace Microsoft.DotNet.Cli.Build { public static class Utils { - public static void CleanNuGetTempCache() - { - // Clean NuGet Temp Cache on Linux (seeing some issues on Linux) - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && Directory.Exists("/tmp/NuGet")) - { - Directory.Delete("/tmp/NuGet", recursive: true); - } - } - - public static string GetOSName() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return "win"; - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - return "osx"; - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - throw new NotImplementedException(); - } - else - { - throw new PlatformNotSupportedException(); - } - } - - public static void DeleteDirectory(string path) - { - if (Directory.Exists(path)) - { - string[] files = Directory.GetFiles(path, "*", SearchOption.AllDirectories); - foreach (string file in files) - { - File.SetAttributes(file, FileAttributes.Normal); - File.Delete(file); - } - var retry = 5; - while (retry >= 0) - { - try - { - Directory.Delete(path, true); - return; - } - catch (IOException) - { - if (retry == 0) - { - throw; - } - System.Threading.Thread.Sleep(200); - retry--; - } - } - } - } - - public static void CopyDirectoryRecursively(string path, string destination, bool keepParentDir = false) - { - if (keepParentDir) - { - path = path.TrimEnd(Path.DirectorySeparatorChar); - destination = Path.Combine(destination, Path.GetFileName(path)); - Directory.CreateDirectory(destination); - } - - foreach (var file in Directory.GetFiles(path, "*", SearchOption.AllDirectories)) - { - string destFile = file.Replace(path, destination); - Directory.CreateDirectory(Path.GetDirectoryName(destFile)); - File.Copy(file, destFile, true); - } - } - public static string GetVersionFileContent(string commitHash, string version) { return $@"{commitHash}{Environment.NewLine}{version}{Environment.NewLine}"; From 3a6e15309e4d63ed25e359bdb5c3f91574babbc9 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Tue, 12 Jul 2016 15:42:27 -0700 Subject: [PATCH 095/165] Bringing run.exe into the repo and starting with the clean command --- BuildToolsCliVersion.txt | 1 + BuildToolsVersion.txt | 2 +- build.proj | 4 +- build/Microsoft.DotNet.Cli.Run.targets | 12 ++++ clean.cmd | 12 ++++ clean.sh | 22 +++++++ config.json | 83 ++++++++++++++++++++++++++ init-tools.ps1 | 19 ++++++ init-tools.sh | 9 ++- run-build.ps1 | 14 ++++- run-build.sh | 13 +++- run.cmd | 25 ++++++++ run.sh | 24 ++++++++ 13 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 BuildToolsCliVersion.txt create mode 100644 build/Microsoft.DotNet.Cli.Run.targets create mode 100644 clean.cmd create mode 100755 clean.sh create mode 100644 config.json create mode 100644 run.cmd create mode 100755 run.sh diff --git a/BuildToolsCliVersion.txt b/BuildToolsCliVersion.txt new file mode 100644 index 000000000..dd7bc318f --- /dev/null +++ b/BuildToolsCliVersion.txt @@ -0,0 +1 @@ +1.0.0-preview2-002733 \ No newline at end of file diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index a49ec9c45..fe0296b40 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -1.0.26-prerelease-00621-06 +1.0.26-prerelease-00621-06 \ No newline at end of file diff --git a/build.proj b/build.proj index a4890106a..88547f5a1 100644 --- a/build.proj +++ b/build.proj @@ -34,8 +34,8 @@ $(RepoRoot)/.dotnet_stage0/$(Architecture) $(Stage0Directory)/dotnet$(ExeExtension) - $(RepoRoot)/build_projects/dotnet-cli-build + $(RepoRoot)/.nuget @@ -85,4 +85,6 @@ + + diff --git a/build/Microsoft.DotNet.Cli.Run.targets b/build/Microsoft.DotNet.Cli.Run.targets new file mode 100644 index 000000000..d0f48571a --- /dev/null +++ b/build/Microsoft.DotNet.Cli.Run.targets @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/clean.cmd b/clean.cmd new file mode 100644 index 000000000..d6c44845f --- /dev/null +++ b/clean.cmd @@ -0,0 +1,12 @@ +@echo off + +REM Copyright (c) .NET Foundation and contributors. All rights reserved. +REM Licensed under the MIT license. See LICENSE file in the project root for full license information. + +if "%~1"=="" ( + @call run.cmd clean -? + @exit /b 1 +) else ( + @call run.cmd clean %* + @exit /b %ERRORLEVEL% +) diff --git a/clean.sh b/clean.sh new file mode 100755 index 000000000..4f56e5597 --- /dev/null +++ b/clean.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +set -e + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located +done +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +REPOROOT="$DIR" + +if [ "$#" -lt 1 ]; then + "$REPOROOT/run.sh" clean -? +else + "$REPOROOT/run.sh" clean "$@" +fi diff --git a/config.json b/config.json new file mode 100644 index 000000000..c98d5789f --- /dev/null +++ b/config.json @@ -0,0 +1,83 @@ +{ + "settings": { + "Project": { + "description": "Project where the commands are going to be applied.", + "valueType": "passThrough", + "values": [], + "defaultValue": "" + }, + "CleanArtifacts": { + "description": "MsBuild target that deletes the artifacts output directory.", + "valueType": "target", + "values": [], + "defaultValue": "" + }, + "CleanPackages": { + "description": "MsBuild target that deletes the repo-local nuget package directory.", + "valueType": "target", + "values": [], + "defaultValue": "" + }, + "CleanPackagesCache": { + "description": "MsBuild target that deletes the user-local nuget package cache.", + "valueType": "target", + "values": [], + "defaultValue": "" + }, + "CleanRepo": { + "description": "Cleans the entire repo of all non-git-added artifacts", + "valueType": "target", + "values": [], + "defaultValue": "" + }, + }, + "commands": { + "clean":{ + "alias":{ + "o":{ + "description": "Deletes the artifacts directory.", + "settings":{ + "CleanArtifacts": "default" + } + }, + "p":{ + "description": "Deletes the repo-local nuget package directory.", + "settings":{ + "CleanPackages": "default" + } + }, + "u": { + "description": "Deletes the user-local nuget package directory", + "settings": { + "CleanPackagesCache": "default" + } + }, + "a": { + "description": "Deletes all repo content that is not git-added", + "settings": { + "CleanRepo" : "default" + } + } + }, + "defaultValues":{ + "toolName": "msbuild", + "settings": { + "Project": "build.proj" + } + } + } + }, + "tools": { + "msbuild": { + "run": { + "windows": "build_tools\\msbuild.cmd", + "unix": "build_tools/msbuild.sh" + }, + "valueTypes": { + "property": "/p:{name}={value}", + "target": "/t:{name}", + "internal": "/{name}" + } + } + } +} diff --git a/init-tools.ps1 b/init-tools.ps1 index 909bab6e7..bb7f1e228 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -57,6 +57,25 @@ if (!(Test-Path "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd")) exit 1 } +# Bring down the CLI for build tools +$DOTNET_PATH=$BUILD_TOOLS_PATH + "\dotnetcli" + +Write-Host "Installing Build Tools CLI version..." +if (!(Test-Path "$DOTNET_PATH")) +{ + mkdir "$DOTNET_PATH" +} + +$DOTNET_VERSION = Get-Content "$RepoRoot\BuildToolsCliVersion.txt" +$DOTNET_LOCAL_PATH=$DOTNET_PATH +& "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel "rel-1.0.0" -Version "$DOTNET_VERSION" -InstallDir "$DOTNET_LOCAL_PATH" + +if (!(Test-Path "$DOTNET_LOCAL_PATH")) +{ + Write-Host "Could not install Build Tools CLI version correctly" + exit 1 +} + # Initialize build tools cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $env:DOTNET_INSTALL_DIR\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" Write-Host "Done initializing tools." diff --git a/init-tools.sh b/init-tools.sh index 661dd7b7f..13e113ff6 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -17,12 +17,14 @@ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" $DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose __init_tools_log=$DIR/init-tools.log -__DOTNET_CMD=$DOTNET_INSTALL_DIR/dotnet +__BUILD_TOOLS_CLI_VERSION=$(cat "$DIR/BuildToolsCliVersion.txt") __BUILD_TOOLS_DIR=$DIR/build_tools +__BUILD_TOOLS_CLI_DIR=$__BUILD_TOOLS_DIR/dotnetcli/ __BUILD_TOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json __BUILD_TOOLS_PACKAGE_VERSION=$(cat $DIR/BuildToolsVersion.txt) __BUILD_TOOLS_PATH=$NUGET_PACKAGES/Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION/lib __BUILD_TOOLS_SEMAPHORE=$__BUILD_TOOLS_DIR/init-tools.completed +__DOTNET_CMD=$DOTNET_INSTALL_DIR/dotnet __PROJECT_JSON_PATH=$__BUILD_TOOLS_DIR/$__BUILD_TOOLS_PACKAGE_VERSION __PROJECT_JSON_FILE=$__PROJECT_JSON_PATH/project.json __PROJECT_JSON_CONTENTS="{ \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \"$__BUILD_TOOLS_PACKAGE_VERSION\" }, \"frameworks\": { \"netcoreapp1.0\": { } } }" @@ -36,7 +38,11 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi + fi + if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then + echo "Installing Build Tools CLI Version: $__BUILD_TOOLS_CLI_VERSION" + "$DIR/scripts/obtain/dotnet-install.sh" --channel rel-1.0.0 --version "$__BUILD_TOOLS_CLI_VERSION" --install-dir "$__BUILD_TOOLS_CLI_DIR" fi echo "Initializing build tools..." @@ -46,3 +52,4 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then else echo "Tools are already initialized" fi + diff --git a/run-build.ps1 b/run-build.ps1 index 22b61f32a..55fb02d9c 100644 --- a/run-build.ps1 +++ b/run-build.ps1 @@ -9,6 +9,7 @@ param( # This is here just to eat away this parameter because CI still passes this in. [string]$Targets="Default", [switch]$NoPackage, + [switch]$NoBuild, [switch]$Help, [Parameter(Position=0, ValueFromRemainingArguments=$true)] $ExtraParameters) @@ -21,6 +22,7 @@ if($Help) Write-Host " -Configuration Build the specified Configuration (Debug or Release, default: Debug)" Write-Host " -Architecture Build the specified architecture (x64 or x86 (supported only on Windows), default: x64)" Write-Host " -NoPackage Skip packaging targets" + Write-Host " -NoBuild Skip building the product" Write-Host " -Help Display this help message" exit 0 } @@ -66,5 +68,13 @@ $env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH" # Disable first run since we want to control all package sources $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters -if($LASTEXITCODE -ne 0) { throw "Failed to build" } +if ($NoBuild) +{ + Write-Host "Not building due to --nobuild" + Write-Host "Command that would be run: 'dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters'" +} +else +{ + dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters + if($LASTEXITCODE -ne 0) { throw "Failed to build" } +} diff --git a/run-build.sh b/run-build.sh index 623e339af..df4282efe 100755 --- a/run-build.sh +++ b/run-build.sh @@ -19,6 +19,8 @@ OLDPATH="$PATH" ARCHITECTURE="x64" source "$REPOROOT/scripts/common/_prettyprint.sh" +BUILD=1 + # Set nuget package cache under the repo export NUGET_PACKAGES="$REPOROOT/.nuget/packages" @@ -42,6 +44,9 @@ while [[ $# > 0 ]]; do export DOTNET_INSTALL_SKIP_PREREQS=1 args=( "${args[@]/$1}" ) ;; + --nobuild) + BUILD=0 + ;; --architecture) ARCHITECTURE=$2 args=( "${args[@]/$1}" ) @@ -61,6 +66,7 @@ while [[ $# > 0 ]]; do echo " --configuration Build the specified Configuration (Debug or Release, default: Debug)" echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install" echo " --nopackage Skip packaging targets" + echo " --nobuild Skip building, showing the command that would be used to build" echo " --docker Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME" echo " --help Display this help message" exit 0 @@ -110,4 +116,9 @@ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 echo "${args[@]}" -dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" \ No newline at end of file +if [ $BUILD -eq 1 ]; then + dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" +else + echo "Not building due to --nobuild" + echo "Command that would be run is: 'dotnet build3 build.proj /p:Architecture=$ARCHITECTURE ${args[@]}'" +fi diff --git a/run.cmd b/run.cmd new file mode 100644 index 000000000..5c0284a7d --- /dev/null +++ b/run.cmd @@ -0,0 +1,25 @@ +@if "%_echo%" neq "on" echo off +setlocal + +if not defined VisualStudioVersion ( + if defined VS140COMNTOOLS ( + call "%VS140COMNTOOLS%\VsDevCmd.bat" + goto :Run + ) + echo Error: Visual Studio 2015 required. + echo Please see https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/developer-guide.md for build instructions. + exit /b 1 +) + +:Run +powershell -NoProfile -NoLogo -Command "%~dp0build.cmd -NoBuild; exit $LastExitCode;" +set _toolRuntime=%~dp0build_tools +set _dotnet=%_toolRuntime%\dotnetcli\dotnet.exe + +echo Running: %_dotnet% %_toolRuntime%\run.exe %* +call %_dotnet% %_toolRuntime%\run.exe %~dp0config.json %* +if NOT [%ERRORLEVEL%]==[0] ( + exit /b 1 +) + +exit /b 0 \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 000000000..fd709519d --- /dev/null +++ b/run.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +set -e + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located +done +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +REPOROOT="$DIR" + +$DIR/build.sh "--nobuild" + +__toolRuntime=$REPOROOT/build_tools +__dotnet=$__toolRuntime/dotnetcli/dotnet + +echo "Running: $__dotnet $__toolRuntime/run.exe $@" +$__dotnet $__toolRuntime/run.exe $DIR/config.json "$@" From dd43ccb688122d4c5ece6d784cb9a69354b13810 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 26 Jul 2016 19:22:12 -0400 Subject: [PATCH 096/165] Piotrp msft/merge2msbuild (#3941) * Add Test for removing readonly flag when copying readonly library assets * change namespace * PR Feedback * Fix newlines in the first run experience message The newlines in the first run experience were missing which made the text look a little squashed. Fixes #3909 * Update README.md (#3904) * Update README.md * Responding to PR feedback * Responding to PR feedback --- src/Microsoft.DotNet.Configurer/DotnetFirstTimeUseConfigurer.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Microsoft.DotNet.Configurer/DotnetFirstTimeUseConfigurer.cs b/src/Microsoft.DotNet.Configurer/DotnetFirstTimeUseConfigurer.cs index c2bfa1784..39a42f72b 100644 --- a/src/Microsoft.DotNet.Configurer/DotnetFirstTimeUseConfigurer.cs +++ b/src/Microsoft.DotNet.Configurer/DotnetFirstTimeUseConfigurer.cs @@ -38,11 +38,13 @@ namespace Microsoft.DotNet.Configurer const string firstTimeUseWelcomeMessage = @"Welcome to .NET Core! --------------------- Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs. + Telemetry -------------- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include commandline arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry. + Configuring... ------------------- A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once."; From 97bc5e3cb7d9f49ad07aefd09a8a50d159264820 Mon Sep 17 00:00:00 2001 From: PiotrP Date: Tue, 26 Jul 2016 18:22:58 -0700 Subject: [PATCH 097/165] Define build-tools required prop ToolsDir. --- build.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/build.proj b/build.proj index 88547f5a1..100ef7695 100644 --- a/build.proj +++ b/build.proj @@ -19,6 +19,7 @@ $(RepoRoot)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll $(RepoRoot)/build_tools + $(BuildToolsDir) preview Microsoft.NETCore.App From 6eabeb9be0f826696b76af351c9f3fb031bdd6f6 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 25 Jul 2016 19:07:23 -0500 Subject: [PATCH 098/165] Generate runtimeconfig.json and runtimeconfig.dev.json from MSBuild Moves generating the runtimeconfig files to a separate MSBuild target which is only dependent on project.lock.json. Also, moving up our NuGet dependency to 3.5.0-rc1-1653, since that brings in the LockFile.PackageFolders property, which is needed for runtimeconfig.dev.json. --- build_projects/dotnet-cli-build/project.json | 2 +- src/Microsoft.DotNet.Cli.Utils/project.json | 8 +- .../Executable.cs | 21 +-- .../GenerateRuntimeConfigurationFiles.cs | 128 ++++++++++++++++++ .../LockFileCache.cs | 37 +++++ .../MakeNetCoreRunnable.cs | 2 +- .../project.json | 4 +- src/dotnet/Microsoft.DotNet.Core.Sdk.props | 1 - src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 16 ++- .../TestDiscoveryStartMessageHandler.cs | 1 - src/dotnet/project.json | 4 +- .../project.json | 8 +- 12 files changed, 204 insertions(+), 28 deletions(-) create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 19e3ba844..9a9fae22c 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -20,7 +20,7 @@ "System.Runtime.Serialization.Primitives": "4.1.1", "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", - "NuGet.CommandLine.XPlat": "3.5.0-beta2-1484", + "NuGet.CommandLine.XPlat": "3.5.0-rc1-1653", "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" }, diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index 0383c274c..a76eba672 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -8,10 +8,10 @@ "Microsoft.DotNet.ProjectModel": { "target": "project" }, - "NuGet.Versioning": "3.5.0-beta2-1484", - "NuGet.Packaging": "3.5.0-beta2-1484", - "NuGet.Frameworks": "3.5.0-beta2-1484", - "NuGet.ProjectModel": "3.5.0-beta2-1484" + "NuGet.Versioning": "3.5.0-rc1-1653", + "NuGet.Packaging": "3.5.0-rc1-1653", + "NuGet.Frameworks": "3.5.0-rc1-1653", + "NuGet.ProjectModel": "3.5.0-rc1-1653" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index eb4255239..371b83b60 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -50,10 +50,10 @@ namespace Microsoft.DotNet.Cli.Compiler.Common _compilerOptions = _context.ProjectFile.GetCompilerOptions(_context.TargetFramework, configuration); } - public void MakeCompilationOutputRunnable() + public void MakeCompilationOutputRunnable(bool skipRuntimeConfig = false) { CopyContentFiles(); - ExportRuntimeAssets(); + ExportRuntimeAssets(skipRuntimeConfig); } private void VerifyCoreClrPresenceInPackageGraph() @@ -73,7 +73,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - private void ExportRuntimeAssets() + private void ExportRuntimeAssets(bool skipRuntimeConfig) { if (_context.TargetFramework.IsDesktop()) { @@ -81,7 +81,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } else { - MakeCompilationOutputRunnableForCoreCLR(); + MakeCompilationOutputRunnableForCoreCLR(skipRuntimeConfig); } } @@ -93,9 +93,9 @@ namespace Microsoft.DotNet.Cli.Compiler.Common GenerateBindingRedirects(_exporter); } - private void MakeCompilationOutputRunnableForCoreCLR() + private void MakeCompilationOutputRunnableForCoreCLR(bool skipRuntimeConfig) { - WriteDepsFileAndCopyProjectDependencies(_exporter); + WriteDepsFileAndCopyProjectDependencies(_exporter, skipRuntimeConfig); var isRunnable = _compilerOptions.EmitEntryPoint ?? _context.ProjectFile.OverrideIsRunnable; @@ -155,14 +155,14 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter) + private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter, bool skipRuntimeConfig) { var exports = exporter.GetAllExports().ToList(); var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name); var platformExclusionList = _context.GetPlatformExclusionList(exportsLookup); var filteredExports = exports.FilterExports(platformExclusionList); - WriteConfigurationFiles(exports, filteredExports, exports, includeDevConfig: true); + WriteConfigurationFiles(exports, filteredExports, exports, includeDevConfig: true, skipRuntimeConfig: skipRuntimeConfig); var projectExports = exporter.GetAllProjectTypeDependencies(); CopyAssemblies(projectExports); @@ -176,10 +176,11 @@ namespace Microsoft.DotNet.Cli.Compiler.Common IEnumerable allExports, IEnumerable depsRuntimeExports, IEnumerable depsCompilationExports, - bool includeDevConfig) + bool includeDevConfig, + bool skipRuntimeConfig = false) { WriteDeps(depsRuntimeExports, depsCompilationExports); - if (_context.ProjectFile.HasRuntimeOutput(_configuration)) + if (_context.ProjectFile.HasRuntimeOutput(_configuration) && !skipRuntimeConfig) { WriteRuntimeConfig(allExports); if (includeDevConfig) diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs new file mode 100644 index 000000000..ba87bb214 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -0,0 +1,128 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using System.Linq; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.ProjectModel; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using NuGet.ProjectModel; + +namespace Microsoft.DotNet.Cli.Tasks +{ + /// + /// Generates the $(project).runtimeconfig.json and optionally $(project).runtimeconfig.dev.json files + /// for a project. + /// + public class GenerateRuntimeConfigurationFiles : Task + { + [Required] + public string RuntimeOutputPath { get; set; } + + [Required] + public string OutputName { get; set; } + + [Required] + public string LockFilePath { get; set; } + + public string RawRuntimeOptions { get; set; } + + public bool IncludeDevConfig { get; set; } + + private LockFile LockFile { get; set; } + + public override bool Execute() + { + LockFile = LockFileCache.Instance.GetLockFile(LockFilePath); + + WriteRuntimeConfig(); + + if (IncludeDevConfig) + { + WriteDevRuntimeConfig(); + } + + return true; + } + + private void WriteRuntimeConfig() + { + var json = new JObject(); + var runtimeOptions = new JObject(); + json.Add("runtimeOptions", runtimeOptions); + + WriteFramework(runtimeOptions); + WriteRuntimeOptions(runtimeOptions); + + var runtimeConfigJsonFile = + Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigJson); + + using (var writer = new JsonTextWriter(new StreamWriter(File.Create(runtimeConfigJsonFile)))) + { + writer.Formatting = Formatting.Indented; + json.WriteTo(writer); + } + } + + private void WriteFramework(JObject runtimeOptions) + { + // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. + var packageName = "Microsoft.NETCore.App"; + + var redistExport = LockFile.Libraries.FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); + if (redistExport != null) + { + var framework = new JObject( + new JProperty("name", redistExport.Name), + new JProperty("version", redistExport.Version.ToNormalizedString())); + runtimeOptions.Add("framework", framework); + } + } + + private void WriteRuntimeOptions(JObject runtimeOptions) + { + if (string.IsNullOrEmpty(RawRuntimeOptions)) + { + return; + } + + var runtimeOptionsFromProject = JObject.Parse(RawRuntimeOptions); + foreach (var runtimeOption in runtimeOptionsFromProject) + { + runtimeOptions.Add(runtimeOption.Key, runtimeOption.Value); + } + } + + private void WriteDevRuntimeConfig() + { + var json = new JObject(); + var runtimeOptions = new JObject(); + json.Add("runtimeOptions", runtimeOptions); + + AddAdditionalProbingPaths(runtimeOptions); + + var runtimeConfigDevJsonFile = + Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigDevJson); + + using (var writer = new JsonTextWriter(new StreamWriter(File.Create(runtimeConfigDevJsonFile)))) + { + writer.Formatting = Formatting.Indented; + json.WriteTo(writer); + } + } + + private void AddAdditionalProbingPaths(JObject runtimeOptions) + { + var additionalProbingPaths = new JArray(); + foreach (var packageFolder in LockFile.PackageFolders) + { + additionalProbingPaths.Add(packageFolder.Path); + } + + runtimeOptions.Add("additionalProbingPaths", additionalProbingPaths); + } + } +} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs b/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs new file mode 100644 index 000000000..8d4172107 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs @@ -0,0 +1,37 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Concurrent; +using NuGet.Common; +using NuGet.ProjectModel; + +namespace Microsoft.DotNet.Cli.Tasks +{ + internal class LockFileCache + { + public static LockFileCache Instance { get; } = new LockFileCache(); + + private ConcurrentDictionary _cache = new ConcurrentDictionary(); + + private LockFileCache() + { + } + + public LockFile GetLockFile(string path) + { + LockFile result; + if (!_cache.TryGetValue(path, out result)) + { + result = LoadLockFile(path); + _cache[path] = result; + } + return result; + } + + private LockFile LoadLockFile(string path) + { + // TODO adapt task logger to Nuget Logger + return LockFileUtilities.GetLockFile(path, NullLogger.Instance); + } + } +} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs b/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs index 020ee5409..71f63d9ae 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs @@ -63,7 +63,7 @@ namespace Microsoft.DotNet.Cli.Tasks LibraryExporter libraryExporter = projectContext.CreateExporter(Configuration, buildBasePath); Executable executable = new Executable(projectContext, outputPaths, libraryExporter, Configuration); - executable.MakeCompilationOutputRunnable(); + executable.MakeCompilationOutputRunnable(skipRuntimeConfig: true); } return true; diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index d290dc823..31c8ba649 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -9,8 +9,8 @@ "target": "project" }, "Newtonsoft.Json": "9.0.1", - "NuGet.Packaging": "3.5.0-beta2-1484", - "NuGet.RuntimeModel": "3.5.0-beta2-1484", + "NuGet.Packaging": "3.5.0-rc1-1653", + "NuGet.RuntimeModel": "3.5.0-rc1-1653", "System.Reflection.Metadata": "1.3.0" }, "frameworks": { diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.props b/src/dotnet/Microsoft.DotNet.Core.Sdk.props index 3d3d75126..0a1824c45 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.props +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.props @@ -39,7 +39,6 @@ true - true diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 106ab2063..10891b835 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -17,7 +17,12 @@ <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) + + + true + + @@ -47,8 +52,15 @@ - - + + + + + + + + + + + + + Date: Tue, 26 Jul 2016 15:41:45 -0500 Subject: [PATCH 104/165] Workaround native deps resolver not lower casing the file paths into the NuGet cache. This is needed until https://github.com/dotnet/core-setup/pull/64 is merged. --- .../DependencyContextWriter.cs | 12 +++++++--- .../Assertions/CommandResultAssertions.cs | 7 ++++++ .../DependencyContextJsonWriterTests.cs | 24 +++++++++---------- .../FunctionalTests.cs | 21 ++++++++-------- test/dotnet-build.Tests/BuildOutputTests.cs | 6 ++++- 5 files changed, 43 insertions(+), 27 deletions(-) diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs index 7f9f70fa6..0f9d291f9 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs @@ -117,7 +117,9 @@ namespace Microsoft.Extensions.DependencyModel { return new JObject( libraries.Select(library => - new JProperty(library.Name + DependencyContextStrings.VersionSeperator + library.Version, WriteTargetLibrary(library)))); + // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once + // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI + new JProperty(library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant(), WriteTargetLibrary(library)))); } private JObject WritePortableTarget(IReadOnlyList runtimeLibraries, IReadOnlyList compilationLibraries) @@ -145,7 +147,9 @@ namespace Microsoft.Extensions.DependencyModel var library = (Library)compilationLibrary ?? (Library)runtimeLibrary; targetObject.Add( - new JProperty(library.Name + DependencyContextStrings.VersionSeperator + library.Version, + // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once + // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI + new JProperty(library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant(), WritePortableTargetLibrary(runtimeLibrary, compilationLibrary) ) ); @@ -313,7 +317,9 @@ namespace Microsoft.Extensions.DependencyModel { var allLibraries = context.RuntimeLibraries.Cast().Concat(context.CompileLibraries) - .GroupBy(library => library.Name + DependencyContextStrings.VersionSeperator + library.Version); + // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once + // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI + .GroupBy(library => library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant()); return new JObject(allLibraries.Select(libraries => new JProperty(libraries.Key, WriteLibrary(libraries.First())))); } diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/Assertions/CommandResultAssertions.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/Assertions/CommandResultAssertions.cs index 5a04d82dd..9a054533b 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/Assertions/CommandResultAssertions.cs +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/Assertions/CommandResultAssertions.cs @@ -60,6 +60,13 @@ namespace Microsoft.DotNet.Tools.Test.Utilities return new AndConstraint(this); } + public AndConstraint HaveStdOutContainingIgnoreCase(string pattern) + { + Execute.Assertion.ForCondition(_commandResult.StdOut.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) >= 0) + .FailWith(AppendDiagnosticsTo($"The command output did not contain expected result (ignoring case): {pattern}{Environment.NewLine}")); + return new AndConstraint(this); + } + public AndConstraint HaveStdOutMatching(string pattern, RegexOptions options = RegexOptions.None) { Execute.Assertion.ForCondition(Regex.Match(_commandResult.StdOut, pattern, options).Success) diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs index ca4427ca4..3b43e5f2a 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs @@ -131,7 +131,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); library.Should().HavePropertyAsObject("compile") @@ -139,7 +139,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests //libraries var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; library.Should().HavePropertyValue("sha512", "HASH"); library.Should().HavePropertyValue("type", "package"); library.Should().HavePropertyValue("serviceable", true); @@ -178,7 +178,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); @@ -203,7 +203,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests //libraries var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; library.Should().HavePropertyValue("sha512", "HASH"); library.Should().HavePropertyValue("type", "package"); library.Should().HavePropertyValue("serviceable", true); @@ -256,7 +256,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); @@ -280,7 +280,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests //libraries var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; library.Should().HavePropertyValue("sha512", "HASH"); library.Should().HavePropertyValue("type", "package"); library.Should().HavePropertyValue("serviceable", true); @@ -317,7 +317,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target/runtime").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); library.Should().HavePropertyAsObject("runtime") @@ -327,7 +327,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests //libraries var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; library.Should().HavePropertyValue("sha512", "HASH"); library.Should().HavePropertyValue("type", "package"); library.Should().HavePropertyValue("serviceable", true); @@ -364,7 +364,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var runtimeTargets = library.Should().HavePropertyAsObject("runtimeTargets").Subject; @@ -412,7 +412,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target/runtime").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var resources = library.Should().HavePropertyAsObject("resources").Subject; var resource = resources.Should().HavePropertyAsObject("en-US/Fruits.resources.dll").Subject; resource.Should().HavePropertyValue("locale", "en-US"); @@ -446,7 +446,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; var resources = library.Should().HavePropertyAsObject("resources").Subject; var resource = resources.Should().HavePropertyAsObject("en-US/Fruits.resources.dll").Subject; resource.Should().HavePropertyValue("locale", "en-US"); @@ -478,7 +478,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests // targets var targets = result.Should().HavePropertyAsObject("targets").Subject; var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("PackageName/1.2.3").Subject; + var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; library.Should().HavePropertyValue("compileOnly", true); } diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs index 476671ebb..c0e4de7e5 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs @@ -93,17 +93,17 @@ namespace Microsoft.Extensions.DependencyModel private void ValidateRuntimeLibrariesFullClr(CommandResult result, string appname) { // entry assembly - result.Should().HaveStdOutContaining($"Runtime {appname}:{appname}"); + result.Should().HaveStdOutContaining($"Runtime {appname.ToLowerInvariant()}:{appname}"); // project dependency - result.Should().HaveStdOutContaining("Runtime DependencyContextValidator:DependencyContextValidator"); + result.Should().HaveStdOutContaining("Runtime dependencycontextvalidator:DependencyContextValidator"); } private void ValidateCompilationLibrariesFullClr(CommandResult result, string appname) { // entry assembly - result.Should().HaveStdOutContaining($"Compilation {appname}:{appname}.exe"); + result.Should().HaveStdOutContaining($"Compilation {appname.ToLowerInvariant()}:{appname}.exe"); // project dependency - result.Should().HaveStdOutContaining("Compilation DependencyContextValidator:DependencyContextValidator.dll"); + result.Should().HaveStdOutContaining("Compilation dependencycontextvalidator:DependencyContextValidator.dll"); // system assembly result.Should().HaveStdOutContaining("Compilation mscorlib:mscorlib.dll"); } @@ -112,22 +112,21 @@ namespace Microsoft.Extensions.DependencyModel private void ValidateRuntimeLibraries(CommandResult result, string appname) { // entry assembly - result.Should().HaveStdOutContaining($"Runtime {appname}:{appname}"); + result.Should().HaveStdOutContaining($"Runtime {appname.ToLowerInvariant()}:{appname}"); // project dependency - result.Should().HaveStdOutContaining("Runtime DependencyContextValidator:DependencyContextValidator"); + result.Should().HaveStdOutContaining("Runtime dependencycontextvalidator:DependencyContextValidator"); // system assembly - result.Should().HaveStdOutContaining("Runtime System.Linq:System.Linq"); + result.Should().HaveStdOutContainingIgnoreCase("Runtime System.Linq:System.Linq"); } private void ValidateCompilationLibraries(CommandResult result, string appname) { // entry assembly - result.Should().HaveStdOutContaining($"Compilation {appname}:{appname}.dll"); + result.Should().HaveStdOutContaining($"Compilation {appname.ToLowerInvariant()}:{appname}.dll"); // project dependency - result.Should().HaveStdOutContaining("Compilation DependencyContextValidator:DependencyContextValidator.dll"); + result.Should().HaveStdOutContaining("Compilation dependencycontextvalidator:DependencyContextValidator.dll"); // system assembly - result.Should().HaveStdOutContaining("Compilation System.Linq:System.Linq.dll"); + result.Should().HaveStdOutContainingIgnoreCase("Compilation System.Linq:System.Linq.dll"); } - } } diff --git a/test/dotnet-build.Tests/BuildOutputTests.cs b/test/dotnet-build.Tests/BuildOutputTests.cs index e0d508001..71139968e 100644 --- a/test/dotnet-build.Tests/BuildOutputTests.cs +++ b/test/dotnet-build.Tests/BuildOutputTests.cs @@ -278,7 +278,11 @@ namespace Microsoft.DotNet.Tools.Builder.Tests foreach (var library in new[] { Tuple.Create("Microsoft.Data.OData", "5.6.4"), Tuple.Create("TestLibraryWithResources", "1.0.0") }) { - var resources = depsJson["targets"][".NETCoreApp,Version=v1.0"][library.Item1 + "/" + library.Item2]["resources"]; + var resources = depsJson + ["targets"] + [".NETCoreApp,Version=v1.0"] + [library.Item1.ToLowerInvariant() + "/" + library.Item2.ToLowerInvariant()] + ["resources"]; resources.Should().NotBeNull(); From ba0f71f5a5a823b0c614db50a3f123dcfa53edef Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 26 Jul 2016 21:52:01 -0500 Subject: [PATCH 105/165] Use object serialization to write the runtime config files. --- .../GenerateRuntimeConfigurationFiles.cs | 75 +++++++++++-------- .../RuntimeConfig.cs | 14 ++++ .../RuntimeConfigFramework.cs | 16 ++++ .../RuntimeOptions.cs | 23 ++++++ 4 files changed, 96 insertions(+), 32 deletions(-) create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs index ba87bb214..c53a51363 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; +using System.Collections.Generic; using System.IO; using System.Linq; using Microsoft.Build.Framework; @@ -9,6 +10,7 @@ using Microsoft.Build.Utilities; using Microsoft.DotNet.ProjectModel; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; using NuGet.ProjectModel; namespace Microsoft.DotNet.Cli.Tasks @@ -50,39 +52,38 @@ namespace Microsoft.DotNet.Cli.Tasks private void WriteRuntimeConfig() { - var json = new JObject(); - var runtimeOptions = new JObject(); - json.Add("runtimeOptions", runtimeOptions); + RuntimeConfig config = new RuntimeConfig(); + config.RuntimeOptions = new RuntimeOptions(); - WriteFramework(runtimeOptions); - WriteRuntimeOptions(runtimeOptions); + AddFramework(config.RuntimeOptions); + AddRuntimeOptions(config.RuntimeOptions); var runtimeConfigJsonFile = Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigJson); - using (var writer = new JsonTextWriter(new StreamWriter(File.Create(runtimeConfigJsonFile)))) - { - writer.Formatting = Formatting.Indented; - json.WriteTo(writer); - } + WriteToJsonFile(runtimeConfigJsonFile, config); } - private void WriteFramework(JObject runtimeOptions) + private void AddFramework(RuntimeOptions runtimeOptions) { // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. var packageName = "Microsoft.NETCore.App"; - var redistExport = LockFile.Libraries.FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); + var redistExport = LockFile + .Libraries + .FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); + if (redistExport != null) { - var framework = new JObject( - new JProperty("name", redistExport.Name), - new JProperty("version", redistExport.Version.ToNormalizedString())); - runtimeOptions.Add("framework", framework); + RuntimeConfigFramework framework = new RuntimeConfigFramework(); + framework.Name = redistExport.Name; + framework.Version = redistExport.Version.ToNormalizedString(); + + runtimeOptions.Framework = framework; } } - private void WriteRuntimeOptions(JObject runtimeOptions) + private void AddRuntimeOptions(RuntimeOptions runtimeOptions) { if (string.IsNullOrEmpty(RawRuntimeOptions)) { @@ -92,37 +93,47 @@ namespace Microsoft.DotNet.Cli.Tasks var runtimeOptionsFromProject = JObject.Parse(RawRuntimeOptions); foreach (var runtimeOption in runtimeOptionsFromProject) { - runtimeOptions.Add(runtimeOption.Key, runtimeOption.Value); + runtimeOptions.RawOptions.Add(runtimeOption.Key, runtimeOption.Value); } } private void WriteDevRuntimeConfig() { - var json = new JObject(); - var runtimeOptions = new JObject(); - json.Add("runtimeOptions", runtimeOptions); + RuntimeConfig devConfig = new RuntimeConfig(); + devConfig.RuntimeOptions = new RuntimeOptions(); - AddAdditionalProbingPaths(runtimeOptions); + AddAdditionalProbingPaths(devConfig.RuntimeOptions); var runtimeConfigDevJsonFile = Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigDevJson); - using (var writer = new JsonTextWriter(new StreamWriter(File.Create(runtimeConfigDevJsonFile)))) + WriteToJsonFile(runtimeConfigDevJsonFile, devConfig); + } + + private void AddAdditionalProbingPaths(RuntimeOptions runtimeOptions) + { + foreach (var packageFolder in LockFile.PackageFolders) { - writer.Formatting = Formatting.Indented; - json.WriteTo(writer); + if (runtimeOptions.AdditionalProbingPaths == null) + { + runtimeOptions.AdditionalProbingPaths = new List(); + } + + runtimeOptions.AdditionalProbingPaths.Add(packageFolder.Path); } } - private void AddAdditionalProbingPaths(JObject runtimeOptions) + private static void WriteToJsonFile(string fileName, object value) { - var additionalProbingPaths = new JArray(); - foreach (var packageFolder in LockFile.PackageFolders) - { - additionalProbingPaths.Add(packageFolder.Path); - } + JsonSerializer serializer = new JsonSerializer(); + serializer.ContractResolver = new CamelCasePropertyNamesContractResolver(); + serializer.Formatting = Formatting.Indented; + serializer.DefaultValueHandling = DefaultValueHandling.Ignore; - runtimeOptions.Add("additionalProbingPaths", additionalProbingPaths); + using (JsonTextWriter writer = new JsonTextWriter(new StreamWriter(File.Create(fileName)))) + { + serializer.Serialize(writer, value); + } } } } diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs new file mode 100644 index 000000000..a24bf9a67 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs @@ -0,0 +1,14 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.DotNet.Cli.Tasks +{ + internal class RuntimeConfig + { + public RuntimeOptions RuntimeOptions { get; set; } + + public RuntimeConfig() + { + } + } +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs new file mode 100644 index 000000000..2be57c266 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.DotNet.Cli.Tasks +{ + internal class RuntimeConfigFramework + { + public string Name { get; set; } + + public string Version { get; set; } + + public RuntimeConfigFramework() + { + } + } +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs new file mode 100644 index 000000000..d12b45a81 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs @@ -0,0 +1,23 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Microsoft.DotNet.Cli.Tasks +{ + internal class RuntimeOptions + { + public RuntimeConfigFramework Framework { get; set; } + + public List AdditionalProbingPaths { get; set; } + + [JsonExtensionData] + public IDictionary RawOptions { get; } = new Dictionary(); + + public RuntimeOptions() + { + } + } +} \ No newline at end of file From 104ca5219d8b8f41b738d2d033a9c5d01cff4eb3 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 26 Jul 2016 22:27:25 -0500 Subject: [PATCH 106/165] Ensure additional probing paths don't have a trailing slash. Workaround for https://github.com/dotnet/core-setup/issues/228. --- src/Microsoft.DotNet.Cli.Utils/PathUtility.cs | 14 ++++++++++++++ src/Microsoft.DotNet.Compiler.Common/Executable.cs | 3 ++- .../GenerateRuntimeConfigurationFiles.cs | 4 +++- src/dotnet/commands/dotnet-run/RunCommand.cs | 4 +++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs index c2e9c36bb..e9fdcb99c 100644 --- a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs +++ b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs @@ -56,6 +56,20 @@ namespace Microsoft.DotNet.Tools.Common return path + trailingCharacter; } + public static string EnsureNoTrailingSlash(string path) + { + if (!string.IsNullOrEmpty(path)) + { + char lastChar = path[path.Length - 1]; + if (lastChar == Path.DirectorySeparatorChar || lastChar == '/') + { + path = path.Substring(0, path.Length - 1); + } + } + + return path; + } + public static void EnsureParentDirectory(string filePath) { string directory = Path.GetDirectoryName(filePath); diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index 008e14c1a..b15e8d147 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -281,7 +281,8 @@ namespace Microsoft.DotNet.Cli.Compiler.Common var additionalProbingPaths = new JArray(); foreach (var packageFolder in _context.LockFile.PackageFolders) { - additionalProbingPaths.Add(packageFolder.Path); + // DotNetHost doesn't handle additional probing paths with a trailing slash + additionalProbingPaths.Add(PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); } runtimeOptions.Add("additionalProbingPaths", additionalProbingPaths); diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs index c53a51363..41dc7e220 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -8,6 +8,7 @@ using System.Linq; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.DotNet.ProjectModel; +using Microsoft.DotNet.Tools.Common; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; @@ -119,7 +120,8 @@ namespace Microsoft.DotNet.Cli.Tasks runtimeOptions.AdditionalProbingPaths = new List(); } - runtimeOptions.AdditionalProbingPaths.Add(packageFolder.Path); + // DotNetHost doesn't handle additional probing paths with a trailing slash + runtimeOptions.AdditionalProbingPaths.Add(PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); } } diff --git a/src/dotnet/commands/dotnet-run/RunCommand.cs b/src/dotnet/commands/dotnet-run/RunCommand.cs index 449192e3a..618f8074f 100644 --- a/src/dotnet/commands/dotnet-run/RunCommand.cs +++ b/src/dotnet/commands/dotnet-run/RunCommand.cs @@ -9,6 +9,7 @@ using System.Runtime.InteropServices; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.InternalAbstractions; using Microsoft.DotNet.ProjectModel; +using Microsoft.DotNet.Tools.Common; using NuGet.Frameworks; namespace Microsoft.DotNet.Tools.Run @@ -152,7 +153,8 @@ namespace Microsoft.DotNet.Tools.Run foreach (var packageFolder in _context.LockFile.PackageFolders) { - hostArgs.Insert(0, packageFolder.Path); + // DotNetHost doesn't handle additional probing paths with a trailing slash + hostArgs.Insert(0, PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); hostArgs.Insert(0, probingPathArg); } } From f31a1352648191c8d6fcb03f5cce85d69e7736a3 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 27 Jul 2016 15:18:59 -0700 Subject: [PATCH 107/165] Loading Build.Common.targets, a common targets for BuildTools. We need it to fix the Publish failures we have been hitting. --- build.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/build.proj b/build.proj index 100ef7695..5170a42f7 100644 --- a/build.proj +++ b/build.proj @@ -81,6 +81,7 @@ + From 567cd8e1b5d7c23fca4dada7d0bbdad22b73ae5d Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 27 Jul 2016 15:59:55 -0700 Subject: [PATCH 108/165] Adding the trailing slash in the directory property. BuildTools needs it like that and that is the pattern in MSBuild. --- build.proj | 4 ++-- build/Microsoft.DotNet.Cli.Publish.targets | 4 ++-- build/Microsoft.DotNet.Cli.tasks | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.proj b/build.proj index 5170a42f7..a421f10e9 100644 --- a/build.proj +++ b/build.proj @@ -18,8 +18,8 @@ $(MSBuildThisFileDirectory) $(RepoRoot)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll - $(RepoRoot)/build_tools - $(BuildToolsDir) + $(RepoRoot)/build_tools/ + $(BuildToolsDir)/ preview Microsoft.NETCore.App diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets index 653a3b223..6d35e94f7 100644 --- a/build/Microsoft.DotNet.Cli.Publish.targets +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -1,9 +1,9 @@ - + - + diff --git a/build/Microsoft.DotNet.Cli.tasks b/build/Microsoft.DotNet.Cli.tasks index d54ec51e2..3ce5553b6 100644 --- a/build/Microsoft.DotNet.Cli.tasks +++ b/build/Microsoft.DotNet.Cli.tasks @@ -23,7 +23,7 @@ - - - + + + From 3d2217c50d86007de5772184a75e5796e24027b9 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 27 Jul 2016 23:21:26 -0700 Subject: [PATCH 109/165] init tools diagnostics --- init-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-tools.sh b/init-tools.sh index 13e113ff6..1edcfe687 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -37,7 +37,7 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 - if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi + if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly." more $__init_tools_log; fi fi if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then From 63b11f0690420569db6acbc70dd6de8e40820fed Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 27 Jul 2016 23:26:28 -0700 Subject: [PATCH 110/165] fix fix --- init-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-tools.sh b/init-tools.sh index 1edcfe687..e307387ea 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -37,7 +37,7 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 - if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly." more $__init_tools_log; fi + if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly." && more $__init_tools_log; fi fi if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then From fd9451d758c327527bb04cecc1ce2493194ee94e Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 27 Jul 2016 23:37:08 -0700 Subject: [PATCH 111/165] Expose init_tools full verbosity --- init-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-tools.sh b/init-tools.sh index e307387ea..922250b30 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -37,7 +37,7 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 - if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly." && more $__init_tools_log; fi + "$__BUILD_TOOLS_PATH/init-tools.sh" fi if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then From 001504fcecd2d7b6d43e45e575b0bbbac287ebd4 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Wed, 27 Jul 2016 23:40:47 -0700 Subject: [PATCH 112/165] Full verbosity for build_tools restore --- init-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-tools.sh b/init-tools.sh index 922250b30..a3ee28b5d 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -35,7 +35,7 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then if [ ! -d "$__BUILD_TOOLS_PATH" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." - "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" >> "$__init_tools_log" 2>&1 + "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" "$__BUILD_TOOLS_PATH/init-tools.sh" fi From ed0f29fde4839bc1740d673a85ddb9e171ab9f7d Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Thu, 28 Jul 2016 00:01:14 -0700 Subject: [PATCH 113/165] print all files --- init-tools.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/init-tools.sh b/init-tools.sh index a3ee28b5d..3eff76814 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -37,7 +37,8 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" - "$__BUILD_TOOLS_PATH/init-tools.sh" + if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi + find . fi if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then From b05b0e6dc5377cd6b58237aba9868e9cdcc43ed5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 21:17:32 -0700 Subject: [PATCH 114/165] After NuGet started lower casing the packages, we started hitting issues where we failed to locate dependencies under our list of libraries due to different casing in the libraries names. The fix here is to compare the library names ignoring casing. --- init-tools.ps1 | 2 +- init-tools.sh | 2 +- src/Microsoft.DotNet.Compiler.Common/Executable.cs | 2 +- .../DependencyContextBuilder.cs | 2 +- .../Graph/LockFilePatcher.cs | 7 +++++-- .../ProjectContextBuilder.cs | 9 ++++++--- .../Resolution/ProjectDependencyProvider.cs | 4 +++- .../DependencyContextWriter.cs | 4 ++-- .../commands/dotnet-build/ProjectGraphCollector.cs | 2 +- src/dotnet/commands/dotnet-compile/CompilerUtil.cs | 7 +++++-- src/dotnet/commands/dotnet-compile/ManagedCompiler.cs | 4 +++- src/dotnet/commands/dotnet-publish/PublishCommand.cs | 2 +- .../PackageDependencyProviderTests.cs | 4 ++-- 13 files changed, 32 insertions(+), 19 deletions(-) diff --git a/init-tools.ps1 b/init-tools.ps1 index bb7f1e228..91363db56 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -77,6 +77,6 @@ if (!(Test-Path "$DOTNET_LOCAL_PATH")) } # Initialize build tools -cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $env:DOTNET_INSTALL_DIR\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" +cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $env:DOTNET_LOCAL_PATH\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" Write-Host "Done initializing tools." Write-Host "Init-Tools completed for BuildTools Version: $BUILD_TOOLS_VERSION" > $BUILD_TOOLS_SEMAPHORE diff --git a/init-tools.sh b/init-tools.sh index 3eff76814..ddda3a420 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -24,7 +24,7 @@ __BUILD_TOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.j __BUILD_TOOLS_PACKAGE_VERSION=$(cat $DIR/BuildToolsVersion.txt) __BUILD_TOOLS_PATH=$NUGET_PACKAGES/Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION/lib __BUILD_TOOLS_SEMAPHORE=$__BUILD_TOOLS_DIR/init-tools.completed -__DOTNET_CMD=$DOTNET_INSTALL_DIR/dotnet +__DOTNET_CMD=$__BUILD_TOOLS_CLI_DIR/dotnet __PROJECT_JSON_PATH=$__BUILD_TOOLS_DIR/$__BUILD_TOOLS_PACKAGE_VERSION __PROJECT_JSON_FILE=$__PROJECT_JSON_PATH/project.json __PROJECT_JSON_CONTENTS="{ \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \"$__BUILD_TOOLS_PACKAGE_VERSION\" }, \"frameworks\": { \"netcoreapp1.0\": { } } }" diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index b15e8d147..ad905afd9 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -158,7 +158,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter, bool skipRuntimeConfig) { var exports = exporter.GetAllExports().ToList(); - var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name); + var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name, StringComparer.OrdinalIgnoreCase); var platformExclusionList = _context.GetPlatformExclusionList(exportsLookup); var filteredExports = exports.FilterExports(platformExclusionList); diff --git a/src/Microsoft.DotNet.ProjectModel/DependencyContextBuilder.cs b/src/Microsoft.DotNet.ProjectModel/DependencyContextBuilder.cs index ad1025c06..1800eb7b2 100644 --- a/src/Microsoft.DotNet.ProjectModel/DependencyContextBuilder.cs +++ b/src/Microsoft.DotNet.ProjectModel/DependencyContextBuilder.cs @@ -46,7 +46,7 @@ namespace Microsoft.Extensions.DependencyModel .Select(export => export.Library.Identity) .Distinct() .Select(identity => new Dependency(identity.Name, identity.Version.ToString())) - .ToDictionary(dependency => dependency.Name); + .ToDictionary(dependency => dependency.Name, StringComparer.OrdinalIgnoreCase); var compilationOptions = compilerOptions != null ? GetCompilationOptions(compilerOptions) diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePatcher.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePatcher.cs index ca27e42ef..9c8956964 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePatcher.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePatcher.cs @@ -21,7 +21,10 @@ namespace Microsoft.DotNet.ProjectModel.Graph _reader = reader; var msbuildProjectLibraries = lockFile.ProjectLibraries.Where(MSBuildDependencyProvider.IsMSBuildProjectLibrary); - _msbuildTargetLibraries = msbuildProjectLibraries.ToDictionary(GetProjectLibraryKey, l => GetTargetsForLibrary(_lockFile, l)); + _msbuildTargetLibraries = msbuildProjectLibraries.ToDictionary( + GetProjectLibraryKey, + l => GetTargetsForLibrary(_lockFile, l), + StringComparer.OrdinalIgnoreCase); } public void Patch() @@ -53,7 +56,7 @@ namespace Microsoft.DotNet.ProjectModel.Graph throw new LockFilePatchingException($"Export file {exportFile.ExportFilePath} has a different version than the lock file {_lockFile.LockFilePath}"); } - var exportDict = exportFile.Exports.ToDictionary(GetTargetLibraryKey); + var exportDict = exportFile.Exports.ToDictionary(GetTargetLibraryKey, StringComparer.OrdinalIgnoreCase); var uncoveredLibraries = _msbuildTargetLibraries.Keys.Except(exportDict.Keys); if (uncoveredLibraries.Any()) diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs index 2839eb06e..58b10ccf5 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs @@ -588,7 +588,10 @@ namespace Microsoft.DotNet.ProjectModel type = LibraryType.Package; } - description = description ?? UnresolvedDependencyProvider.GetDescription(new LibraryRange(library.Name, type), target.TargetFramework); + description = description ?? + UnresolvedDependencyProvider.GetDescription( + new LibraryRange(library.Name, type), + target.TargetFramework); libraries.Add(new LibraryKey(library.Name), description); } @@ -674,14 +677,14 @@ namespace Microsoft.DotNet.ProjectModel { var otherKey = (LibraryKey)obj; - return string.Equals(otherKey.Name, Name, StringComparison.Ordinal) && + return string.Equals(otherKey.Name, Name, StringComparison.OrdinalIgnoreCase) && otherKey.LibraryType.Equals(LibraryType); } public override int GetHashCode() { var combiner = new HashCodeCombiner(); - combiner.Add(Name); + combiner.Add(Name.ToLowerInvariant()); combiner.Add(LibraryType); return combiner.CombinedHash; diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs index 9774a999c..c83d705f9 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs @@ -67,7 +67,9 @@ namespace Microsoft.DotNet.ProjectModel.Resolution if (targetLibrary != null) { // The lock file entry might have a filtered set of dependencies - var lockFileDependencies = targetLibrary.Dependencies.ToDictionary(d => d.Id); + var lockFileDependencies = targetLibrary.Dependencies.ToDictionary( + d => d.Id, + StringComparer.OrdinalIgnoreCase); // Remove all non-framework dependencies that don't appear in the lock file entry dependencies.RemoveAll(m => !lockFileDependencies.ContainsKey(m.Name) && m.Target != LibraryType.ReferenceAssembly); diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs index 0f9d291f9..9d774deea 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs @@ -124,8 +124,8 @@ namespace Microsoft.Extensions.DependencyModel private JObject WritePortableTarget(IReadOnlyList runtimeLibraries, IReadOnlyList compilationLibraries) { - var runtimeLookup = runtimeLibraries.ToDictionary(l => l.Name); - var compileLookup = compilationLibraries.ToDictionary(l => l.Name); + var runtimeLookup = runtimeLibraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); + var compileLookup = compilationLibraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); var targetObject = new JObject(); diff --git a/src/dotnet/commands/dotnet-build/ProjectGraphCollector.cs b/src/dotnet/commands/dotnet-build/ProjectGraphCollector.cs index cc2a261fe..d91384e97 100644 --- a/src/dotnet/commands/dotnet-build/ProjectGraphCollector.cs +++ b/src/dotnet/commands/dotnet-build/ProjectGraphCollector.cs @@ -28,7 +28,7 @@ namespace Microsoft.DotNet.Tools.Build foreach (var context in contexts) { var libraries = context.LibraryManager.GetLibraries(); - var lookup = libraries.ToDictionary(l => l.Identity.Name); + var lookup = libraries.ToDictionary(l => l.Identity.Name, StringComparer.OrdinalIgnoreCase); var root = lookup[context.ProjectFile.Name]; yield return TraverseProject((ProjectDescription) root, lookup, context); } diff --git a/src/dotnet/commands/dotnet-compile/CompilerUtil.cs b/src/dotnet/commands/dotnet-compile/CompilerUtil.cs index 0117062c8..3f3a39fe6 100644 --- a/src/dotnet/commands/dotnet-compile/CompilerUtil.cs +++ b/src/dotnet/commands/dotnet-compile/CompilerUtil.cs @@ -96,10 +96,13 @@ namespace Microsoft.DotNet.Tools.Compiler public static List GetCultureResources(Project project, string outputPath) { return - (from resourceFileGroup in project.Files.ResourceFiles.GroupBy(resourceFile => ResourceUtility.GetResourceCultureName(resourceFile.Key)) + (from resourceFileGroup in project.Files.ResourceFiles.GroupBy( + resourceFile => ResourceUtility.GetResourceCultureName(resourceFile.Key)) let culture = resourceFileGroup.Key where !string.IsNullOrEmpty(culture) - let inputFileToMetadata = resourceFileGroup.ToDictionary(r => r.Key, r => GetResourceFileMetadataName(project, r.Key, r.Value)) + let inputFileToMetadata = resourceFileGroup.ToDictionary( + r => r.Key, + r => GetResourceFileMetadataName(project, r.Key, r.Value)) let resourceOutputPath = Path.Combine(outputPath, culture) let outputFile = Path.Combine(resourceOutputPath, project.Name + ".resources.dll") select new CultureResgenIO(culture, inputFileToMetadata, outputFile) diff --git a/src/dotnet/commands/dotnet-compile/ManagedCompiler.cs b/src/dotnet/commands/dotnet-compile/ManagedCompiler.cs index c18795c51..2fb91099a 100644 --- a/src/dotnet/commands/dotnet-compile/ManagedCompiler.cs +++ b/src/dotnet/commands/dotnet-compile/ManagedCompiler.cs @@ -126,7 +126,9 @@ namespace Microsoft.DotNet.Tools.Compiler if (compilationOptions.PreserveCompilationContext == true) { var allExports = exporter.GetAllExports().ToList(); - var exportsLookup = allExports.ToDictionary(e => e.Library.Identity.Name); + var exportsLookup = allExports.ToDictionary( + e => e.Library.Identity.Name, + StringComparer.OrdinalIgnoreCase); var buildExclusionList = context.GetTypeBuildExclusionList(exportsLookup); var filteredExports = allExports .Where(e => e.Library.Identity.Type.Equals(LibraryType.ReferenceAssembly) || diff --git a/src/dotnet/commands/dotnet-publish/PublishCommand.cs b/src/dotnet/commands/dotnet-publish/PublishCommand.cs index f7e02f13b..409e03a41 100644 --- a/src/dotnet/commands/dotnet-publish/PublishCommand.cs +++ b/src/dotnet/commands/dotnet-publish/PublishCommand.cs @@ -134,7 +134,7 @@ namespace Microsoft.DotNet.Tools.Publish var exports = exporter.GetAllExports(); - var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name); + var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name, StringComparer.OrdinalIgnoreCase); var platformExclusionList = context.GetPlatformExclusionList(exportsLookup); var buildExclusionList = context.GetTypeBuildExclusionList(exportsLookup); var allExclusionList = new HashSet(platformExclusionList); diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs index dfc39dcc1..a13b422bb 100644 --- a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs +++ b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs @@ -126,7 +126,7 @@ namespace Microsoft.DotNet.ProjectModel.Tests .Build(); // Will fail with dupes if any - context.LibraryManager.GetLibraries().ToDictionary(l => l.Identity.Name); + context.LibraryManager.GetLibraries().ToDictionary(l => l.Identity.Name, StringComparer.OrdinalIgnoreCase); } [Fact] @@ -153,7 +153,7 @@ namespace Microsoft.DotNet.ProjectModel.Tests .Build(); // Will fail with dupes if any - context.LibraryManager.GetLibraries().ToDictionary(l => l.Identity.Name); + context.LibraryManager.GetLibraries().ToDictionary(l => l.Identity.Name, StringComparer.OrdinalIgnoreCase); } } } From da688f71c21d424af8a72f443ef1a74ef962e5e1 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 21:27:46 -0700 Subject: [PATCH 115/165] Fixing the path to the Build Tools CLI for publisbing tools_runtime --- init-tools.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-tools.ps1 b/init-tools.ps1 index 91363db56..5176862d9 100644 --- a/init-tools.ps1 +++ b/init-tools.ps1 @@ -77,6 +77,6 @@ if (!(Test-Path "$DOTNET_LOCAL_PATH")) } # Initialize build tools -cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $env:DOTNET_LOCAL_PATH\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" +cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $DOTNET_LOCAL_PATH\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG" Write-Host "Done initializing tools." Write-Host "Init-Tools completed for BuildTools Version: $BUILD_TOOLS_VERSION" > $BUILD_TOOLS_SEMAPHORE From dca7a4fd4192708aa58ccfcde04ad8cbee6c79f3 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 21:43:09 -0700 Subject: [PATCH 116/165] Need to restore the build tools CLI before trying to use it. Now we use it for both restore/publish of build tools. --- init-tools.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/init-tools.sh b/init-tools.sh index ddda3a420..2b66c7f83 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -33,18 +33,18 @@ if [ ! -e "$__PROJECT_JSON_FILE" ]; then mkdir -p "$__PROJECT_JSON_PATH" echo "$__PROJECT_JSON_CONTENTS" > "$__PROJECT_JSON_FILE" + if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then + echo "Installing Build Tools CLI Version: $__BUILD_TOOLS_CLI_VERSION" + "$DIR/scripts/obtain/dotnet-install.sh" --channel rel-1.0.0 --version "$__BUILD_TOOLS_CLI_VERSION" --install-dir "$__BUILD_TOOLS_CLI_DIR" + fi + if [ ! -d "$__BUILD_TOOLS_PATH" ]; then echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..." "$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE" if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi find . - fi - - if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then - echo "Installing Build Tools CLI Version: $__BUILD_TOOLS_CLI_VERSION" - "$DIR/scripts/obtain/dotnet-install.sh" --channel rel-1.0.0 --version "$__BUILD_TOOLS_CLI_VERSION" --install-dir "$__BUILD_TOOLS_CLI_DIR" - fi + fi echo "Initializing build tools..." "$__BUILD_TOOLS_PATH/init-tools.sh" "$DIR" "$__DOTNET_CMD" "$__BUILD_TOOLS_DIR" >> "$__init_tools_log" 2>&1 From 174eeed45ee51b547ead81574bc1be4e9cd55437 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 21:57:00 -0700 Subject: [PATCH 117/165] Adding System namespace to packagedependencyprovidertest, required by StringComparer. --- .../PackageDependencyProviderTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs index a13b422bb..59499f8bc 100644 --- a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs +++ b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using Microsoft.DotNet.ProjectModel.Graph; using Microsoft.DotNet.ProjectModel.Resolution; From 336b97212f7c49a6fc6545116cae9dc69cb14070 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Thu, 28 Jul 2016 22:29:29 -0700 Subject: [PATCH 118/165] Crossgen package name casing --- build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets b/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets index 0409b9a73..a38f3d2cc 100644 --- a/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets +++ b/build/crossgen/Microsoft.DotNet.Cli.Crossgen.targets @@ -8,9 +8,9 @@ osx.10.10-x64 rhel.7-x64 - runtime.$(CoreCLRRid).Microsoft.NETCore.Runtime.CoreCLR - runtime.$(CoreCLRRid).Microsoft.NETCore.Jit - runtime.$(CoreCLRRid).Microsoft.NETCore.Runtime.CoreCLR + runtime.$(CoreCLRRid).microsoft.netcore.runtime.coreclr + runtime.$(CoreCLRRid).microsoft.netcore.jit + runtime.$(CoreCLRRid).microsoft.netcore.runtime.coreclr $(NuGetPackagesDir)/$(CoreCLRPackageName)/$(CoreCLRVersion)/runtimes/$(CoreCLRRid)/lib/netstandard1.0 $(NuGetPackagesDir)/$(CrossGenPackageName)/$(CoreCLRVersion)/tools/crossgen$(ExeExtension) From 06bbaf7fb50c9b6475d80add5a0b6bf2ec4092b5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 23:13:19 -0700 Subject: [PATCH 119/165] Disabling build3 tests. --- build/test/TestProjects.targets | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/test/TestProjects.targets b/build/test/TestProjects.targets index 871b2487b..a75c6cd4c 100644 --- a/build/test/TestProjects.targets +++ b/build/test/TestProjects.targets @@ -58,6 +58,8 @@ + + From 89a6bdd197ee466efd2b0de160da6a18f284b0d0 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 28 Jul 2016 23:35:46 -0700 Subject: [PATCH 120/165] Disabling the msbuild E2E test. --- test/EndToEnd/GivenDotNetUsesMSBuild.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/EndToEnd/GivenDotNetUsesMSBuild.cs b/test/EndToEnd/GivenDotNetUsesMSBuild.cs index 24a85fa11..bef2d8b18 100644 --- a/test/EndToEnd/GivenDotNetUsesMSBuild.cs +++ b/test/EndToEnd/GivenDotNetUsesMSBuild.cs @@ -8,7 +8,7 @@ namespace Microsoft.DotNet.Tests.EndToEnd { public class GivenDotNetUsesMSBuild : TestBase { - [Fact] + [Fact(Skip="ResolveNuGetPackageAssets needs to be made case insensitive.")] public void ItCanNewRestoreBuildRunMSBuildProject() { using (DisposableDirectory directory = Temp.CreateDirectory()) From e3f0a859f85465cc336261c1fe3480621f4cb773 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Fri, 29 Jul 2016 14:31:16 -0500 Subject: [PATCH 121/165] Update README to kick off a build --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ec99858a2..ed0b0a67f 100644 --- a/README.md +++ b/README.md @@ -122,4 +122,3 @@ License -------------------- By downloading the .zip you are agreeing to the terms in the project [EULA](https://aka.ms/dotnet-core-eula). - From a4aa0a99cdb12025ef7e8f2036c50bc17c29f8b7 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 28 Jul 2016 16:46:19 -0500 Subject: [PATCH 122/165] Implement GenerateDepsFile MSBuild Task --- Microsoft.DotNet.Cli.sln | 23 +- .../Executable.cs | 27 +- .../DependencyContextBuilder.cs | 270 + .../GenerateDepsFile.cs | 57 + .../GenerateRuntimeConfigurationFiles.cs | 26 +- .../LockFileCache.cs | 2 +- .../MakeNetCoreRunnable.cs | 89 - .../Properties/AssemblyInfo.cs | 3 + .../RuntimeConfig.cs | 2 +- .../RuntimeConfigFramework.cs | 2 +- .../RuntimeOptions.cs | 2 +- .../project.json | 5 +- src/Microsoft.DotNet.ProjectModel/Project.cs | 4 +- src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 24 +- .../GivenADependencyContextBuilder.cs | 69 + ...rosoft.DotNet.Core.Build.Tasks.Tests.xproj | 21 + .../dotnet.new.deps.json | 23 + .../dotnet.new.project.lock.json | 6600 ++++++++++++++++ .../project.json | 27 + .../simple.dependencies.deps.json | 60 + .../simple.dependencies.project.lock.json | 6796 +++++++++++++++++ 21 files changed, 14004 insertions(+), 128 deletions(-) create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs create mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json create mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index b65eb2688..5a5e565e8 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -142,13 +142,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "compile", "compile", "{8E33 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2DE2-47F6-8C35-3CF0589CF2B8}" ProjectSection(SolutionItems) = preProject - build\test\TestPackageProjects.props = build\test\TestPackageProjects.props + build\test\TestAssetProjects.targets = build\test\TestAssetProjects.targets + build\test\TestPackageProjects.targets = build\test\TestPackageProjects.targets + build\test\TestProjects.targets = build\test\TestProjects.targets EndProjectSection EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks", "src\Microsoft.DotNet.Core.Build.Tasks\Microsoft.DotNet.Core.Build.Tasks.xproj", "{E8E7D24B-4830-4662-80A8-255D6FE3B0BE}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Tests.Utilities", "test\Microsoft.DotNet.Tools.Tests.Utilities\Microsoft.DotNet.Tools.Tests.Utilities.xproj", "{E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks.Tests", "test\Microsoft.DotNet.Core.Build.Tasks.Tests\Microsoft.DotNet.Core.Build.Tasks.Tests.xproj", "{EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -913,6 +917,22 @@ Global {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|x64.ActiveCfg = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|x64.Build.0 = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|Any CPU.Build.0 = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|x64.ActiveCfg = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|x64.Build.0 = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -973,5 +993,6 @@ Global {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} {E8E7D24B-4830-4662-80A8-255D6FE3B0BE} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} + {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} EndGlobalSection EndGlobal diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index ad905afd9..4427c7ecc 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -50,10 +50,10 @@ namespace Microsoft.DotNet.Cli.Compiler.Common _compilerOptions = _context.ProjectFile.GetCompilerOptions(_context.TargetFramework, configuration); } - public void MakeCompilationOutputRunnable(bool skipRuntimeConfig = false) + public void MakeCompilationOutputRunnable() { CopyContentFiles(); - ExportRuntimeAssets(skipRuntimeConfig); + ExportRuntimeAssets(); } private void VerifyCoreClrPresenceInPackageGraph() @@ -73,7 +73,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - private void ExportRuntimeAssets(bool skipRuntimeConfig) + private void ExportRuntimeAssets() { if (_context.TargetFramework.IsDesktop()) { @@ -81,7 +81,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } else { - MakeCompilationOutputRunnableForCoreCLR(skipRuntimeConfig); + MakeCompilationOutputRunnableForCoreCLR(); } } @@ -93,11 +93,11 @@ namespace Microsoft.DotNet.Cli.Compiler.Common GenerateBindingRedirects(_exporter); } - private void MakeCompilationOutputRunnableForCoreCLR(bool skipRuntimeConfig) + private void MakeCompilationOutputRunnableForCoreCLR() { - WriteDepsFileAndCopyProjectDependencies(_exporter, skipRuntimeConfig); + WriteDepsFileAndCopyProjectDependencies(_exporter); - var isRunnable = _compilerOptions.EmitEntryPoint ?? _context.ProjectFile.OverrideIsRunnable; + var isRunnable = _compilerOptions.EmitEntryPoint ?? false; if (isRunnable && !_context.IsPortable) { @@ -155,14 +155,14 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter, bool skipRuntimeConfig) + private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter) { var exports = exporter.GetAllExports().ToList(); var exportsLookup = exports.ToDictionary(e => e.Library.Identity.Name, StringComparer.OrdinalIgnoreCase); var platformExclusionList = _context.GetPlatformExclusionList(exportsLookup); var filteredExports = exports.FilterExports(platformExclusionList); - WriteConfigurationFiles(exports, filteredExports, exports, includeDevConfig: true, skipRuntimeConfig: skipRuntimeConfig); + WriteConfigurationFiles(exports, filteredExports, exports, includeDevConfig: true); var projectExports = exporter.GetAllProjectTypeDependencies(); CopyAssemblies(projectExports); @@ -176,11 +176,10 @@ namespace Microsoft.DotNet.Cli.Compiler.Common IEnumerable allExports, IEnumerable depsRuntimeExports, IEnumerable depsCompilationExports, - bool includeDevConfig, - bool skipRuntimeConfig = false) + bool includeDevConfig) { WriteDeps(depsRuntimeExports, depsCompilationExports); - if (_context.ProjectFile.HasRuntimeOutput(_configuration) && !skipRuntimeConfig) + if (_context.ProjectFile.HasRuntimeOutput(_configuration)) { WriteRuntimeConfig(allExports); if (includeDevConfig) @@ -289,7 +288,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - public void WriteDeps(IEnumerable runtimeExports, IEnumerable compilationExports) + private void WriteDeps(IEnumerable runtimeExports, IEnumerable compilationExports) { Directory.CreateDirectory(_runtimeOutputPath); @@ -311,7 +310,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common } } - public void GenerateBindingRedirects(LibraryExporter exporter) + private void GenerateBindingRedirects(LibraryExporter exporter) { var outputName = _outputPaths.RuntimeFiles.Assembly; var configFile = outputName + Constants.ConfigSuffix; diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs b/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs new file mode 100644 index 000000000..d7a7189cc --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs @@ -0,0 +1,270 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using Microsoft.Extensions.DependencyModel; +using NuGet.Frameworks; +using NuGet.Packaging.Core; +using NuGet.ProjectModel; + +namespace Microsoft.DotNet.Core.Build.Tasks +{ + public class DependencyContextBuilder + { + public DependencyContextBuilder() + { + } + + public DependencyContext Build( + string projectName, + string projectVersion, + CompilationOptions compilerOptions, + LockFile lockFile, + NuGetFramework framework, + string runtime) + { + LockFileTarget lockFileTarget = lockFile.GetTarget(framework, runtime); + IEnumerable runtimeExports = lockFileTarget.Libraries; + + // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. + var packageName = "Microsoft.NETCore.App"; + var platformExport = lockFileTarget + .Libraries + .FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); + + bool portable = platformExport != null; + if (portable) + { + runtimeExports = FilterPlatformDependencies(runtimeExports, platformExport); + } + + var dependencyLookup = runtimeExports + .Select(identity => new Dependency(identity.Name, identity.Version.ToString())) + .ToDictionary(dependency => dependency.Name, StringComparer.OrdinalIgnoreCase); + + var libraryLookup = lockFile.Libraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); + + var runtimeSignature = GenerateRuntimeSignature(runtimeExports); + + IEnumerable runtimeLibraries = + new[] { GetProjectLibrary(projectName, projectVersion, lockFile, lockFileTarget, dependencyLookup) } + .Concat(GetLibraries(runtimeExports, libraryLookup, dependencyLookup, runtime: true).Cast()); + + return new DependencyContext( + new TargetInfo(framework.DotNetFrameworkName, runtime, runtimeSignature, portable), + compilerOptions ?? CompilationOptions.Default, + Enumerable.Empty(), //GetLibraries(compilationExports, dependencyLookup, runtime: false).Cast(), + runtimeLibraries, + new RuntimeFallbacks[] { }); + } + + private static IEnumerable FilterPlatformDependencies( + IEnumerable runtimeExports, + LockFileTargetLibrary platformExport) + { + var exportsLookup = runtimeExports.ToDictionary(e => e.Name, StringComparer.OrdinalIgnoreCase); + + HashSet exclusionList = GetPlatformExclusionList(platformExport, exportsLookup); + + return runtimeExports.Where(e => !exclusionList.Contains(e.Name)); + } + + private static HashSet GetPlatformExclusionList( + LockFileTargetLibrary platformExport, + IDictionary exportsLookup) + { + var exclusionList = new HashSet(); + + exclusionList.Add(platformExport.Name); + CollectDependencies(exportsLookup, platformExport.Dependencies, exclusionList); + + return exclusionList; + } + + private static void CollectDependencies( + IDictionary exportsLookup, + IEnumerable dependencies, + HashSet exclusionList) + { + foreach (PackageDependency dependency in dependencies) + { + LockFileTargetLibrary export = exportsLookup[dependency.Id]; + if (export.Version.Equals(dependency.VersionRange.MinVersion)) + { + exclusionList.Add(export.Name); + CollectDependencies(exportsLookup, export.Dependencies, exclusionList); + } + } + } + + private static string GenerateRuntimeSignature(IEnumerable runtimeExports) + { + var sha1 = SHA1.Create(); + var builder = new StringBuilder(); + var packages = runtimeExports + .Where(libraryExport => libraryExport.Type == "package"); + var seperator = "|"; + foreach (var libraryExport in packages) + { + builder.Append(libraryExport.Name); + builder.Append(seperator); + builder.Append(libraryExport.Version.ToString()); + builder.Append(seperator); + } + var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(builder.ToString())); + + builder.Clear(); + foreach (var b in hash) + { + builder.AppendFormat("{0:x2}", b); + } + return builder.ToString(); + } + + private RuntimeLibrary GetProjectLibrary( + string projectName, + string projectVersion, + LockFile lockFile, + LockFileTarget lockFileTarget, + Dictionary dependencyLookup) + { + RuntimeAssetGroup[] runtimeAssemblyGroups = new[] { new RuntimeAssetGroup(string.Empty, $"{projectName}.dll") }; + + List dependencies = new List(); + + IEnumerable projectFileDependencies = lockFile + .ProjectFileDependencyGroups + .Where(dg => dg.FrameworkName == string.Empty || + dg.FrameworkName == lockFileTarget.TargetFramework.DotNetFrameworkName); + + foreach (string projectFileDependency in projectFileDependencies.SelectMany(dg => dg.Dependencies)) + { + int separatorIndex = projectFileDependency.IndexOf(' '); + string dependencyName = separatorIndex > 0 ? + projectFileDependency.Substring(0, separatorIndex) : + projectFileDependency; + + Dependency dependency; + if (dependencyLookup.TryGetValue(dependencyName, out dependency)) + { + dependencies.Add(dependency); + } + } + + return new RuntimeLibrary( + type: "project", + name: projectName, + version: projectVersion, + hash: string.Empty, + runtimeAssemblyGroups: runtimeAssemblyGroups, + nativeLibraryGroups: new RuntimeAssetGroup[] { }, + resourceAssemblies: new ResourceAssembly[] { }, + dependencies: dependencies.ToArray(), + serviceable: false); + } + + private IEnumerable GetLibraries( + IEnumerable exports, + IDictionary libraryLookup, + IDictionary dependencyLookup, + bool runtime) + { + return exports.Select(export => GetLibrary(export, libraryLookup, dependencyLookup, runtime)); + } + + private Library GetLibrary( + LockFileTargetLibrary export, + IDictionary libraryLookup, + IDictionary dependencyLookup, + bool runtime) + { + var type = export.Type; + + // TEMPORARY: All packages are serviceable in RC2 + // See https://github.com/dotnet/cli/issues/2569 + var serviceable = export.Type == "package"; + var libraryDependencies = new HashSet(); + + foreach (PackageDependency libraryDependency in export.Dependencies) + { + Dependency dependency; + if (dependencyLookup.TryGetValue(libraryDependency.Id, out dependency)) + { + libraryDependencies.Add(dependency); + } + } + + string hash = string.Empty; + LockFileLibrary library; + if (libraryLookup.TryGetValue(export.Name, out library)) + { + hash = "sha512-" + library.Sha512; + } + + if (runtime) + { + return new RuntimeLibrary( + type.ToLowerInvariant(), + export.Name, + export.Version.ToString(), + hash, + CreateRuntimeAssemblyGroups(export), + CreateNativeLibraryGroups(export), + export.ResourceAssemblies.Select(CreateResourceAssembly), + libraryDependencies, + serviceable + ); + } + //else + //{ + // IEnumerable assemblies = export + // .CompilationAssemblies + // .Select(libraryAsset => libraryAsset.RelativePath); + + // return new CompilationLibrary( + // type.ToString().ToLowerInvariant(), + // export.Library.Identity.Name, + // export.Library.Identity.Version.ToString(), + // export.Library.Hash, + // assemblies, + // libraryDependencies, + // serviceable); + //} + return null; + } + + private IReadOnlyList CreateRuntimeAssemblyGroups(LockFileTargetLibrary export) + { + List assemblyGroups = new List(); + + assemblyGroups.Add( + new RuntimeAssetGroup(string.Empty, export.RuntimeAssemblies.Select(a => a.Path))); + + // TODO RuntimeTargets + //export.RuntimeTargets.GroupBy(l => l.) + + return assemblyGroups; + } + + private IReadOnlyList CreateNativeLibraryGroups(LockFileTargetLibrary export) + { + return new[] { new RuntimeAssetGroup(string.Empty, export.NativeLibraries.Select(a => a.Path)) }; + } + + + private ResourceAssembly CreateResourceAssembly(LockFileItem resourceAssembly) + { + // TODO: implement + return null; + + //return new ResourceAssembly( + // path: resourceAssembly.Path, + // locale: resourceAssembly.Locale + // ); + } + } +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs new file mode 100644 index 000000000..e5b700832 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs @@ -0,0 +1,57 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using Microsoft.Extensions.DependencyModel; +using Newtonsoft.Json; +using NuGet.Frameworks; +using NuGet.ProjectModel; + +namespace Microsoft.DotNet.Core.Build.Tasks +{ + /// + /// Generates the $(project).deps.json file. + /// + public class GenerateDepsFile : Task + { + [Required] + public string LockFilePath { get; set; } + + [Required] + public string DepsFilePath { get; set; } + + [Required] + public string TargetFramework { get; set; } + + public string RuntimeIdentifier { get; set; } + + [Required] + public string AssemblyName { get; set; } + + [Required] + public string AssemblyVersion { get; set; } + + public override bool Execute() + { + LockFile lockFile = LockFileCache.Instance.GetLockFile(LockFilePath); + + DependencyContext dependencyContext = new DependencyContextBuilder().Build( + projectName: AssemblyName, + projectVersion: AssemblyVersion, + compilerOptions: null, // TODO: PreservceCompliationContext + lockFile: lockFile, + framework: TargetFramework == null ? null : NuGetFramework.Parse(TargetFramework), + runtime: RuntimeIdentifier); + + var writer = new DependencyContextWriter(); + using (var fileStream = File.Create(DepsFilePath)) + { + writer.Write(dependencyContext, fileStream); + } + + return true; + } + } +} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs index 41dc7e220..6d973f512 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -7,14 +7,12 @@ using System.IO; using System.Linq; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.Tools.Common; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; using NuGet.ProjectModel; -namespace Microsoft.DotNet.Cli.Tasks +namespace Microsoft.DotNet.Core.Build.Tasks { /// /// Generates the $(project).runtimeconfig.json and optionally $(project).runtimeconfig.dev.json files @@ -26,7 +24,7 @@ namespace Microsoft.DotNet.Cli.Tasks public string RuntimeOutputPath { get; set; } [Required] - public string OutputName { get; set; } + public string AssemblyName { get; set; } [Required] public string LockFilePath { get; set; } @@ -60,7 +58,7 @@ namespace Microsoft.DotNet.Cli.Tasks AddRuntimeOptions(config.RuntimeOptions); var runtimeConfigJsonFile = - Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigJson); + Path.Combine(RuntimeOutputPath, AssemblyName + ".runtimeconfig.json"); WriteToJsonFile(runtimeConfigJsonFile, config); } @@ -106,7 +104,7 @@ namespace Microsoft.DotNet.Cli.Tasks AddAdditionalProbingPaths(devConfig.RuntimeOptions); var runtimeConfigDevJsonFile = - Path.Combine(RuntimeOutputPath, OutputName + FileNameSuffixes.RuntimeConfigDevJson); + Path.Combine(RuntimeOutputPath, AssemblyName + ".runtimeconfig.dev.json"); WriteToJsonFile(runtimeConfigDevJsonFile, devConfig); } @@ -121,10 +119,24 @@ namespace Microsoft.DotNet.Cli.Tasks } // DotNetHost doesn't handle additional probing paths with a trailing slash - runtimeOptions.AdditionalProbingPaths.Add(PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); + runtimeOptions.AdditionalProbingPaths.Add(EnsureNoTrailingSlash(packageFolder.Path)); } } + private static string EnsureNoTrailingSlash(string path) + { + if (!string.IsNullOrEmpty(path)) + { + char lastChar = path[path.Length - 1]; + if (lastChar == Path.DirectorySeparatorChar || lastChar == '/') + { + path = path.Substring(0, path.Length - 1); + } + } + + return path; + } + private static void WriteToJsonFile(string fileName, object value) { JsonSerializer serializer = new JsonSerializer(); diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs b/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs index 8d4172107..a352fb643 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs @@ -5,7 +5,7 @@ using System.Collections.Concurrent; using NuGet.Common; using NuGet.ProjectModel; -namespace Microsoft.DotNet.Cli.Tasks +namespace Microsoft.DotNet.Core.Build.Tasks { internal class LockFileCache { diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs b/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs deleted file mode 100644 index 71f63d9ae..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/MakeNetCoreRunnable.cs +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Microsoft.DotNet.Cli.Compiler.Common; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.ProjectModel.Compilation; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.Cli.Tasks -{ - public class MakeNetCoreRunnable : Task - { - [Required] - public string ProjectPath { get; set; } - - [Required] - public string Configuration { get; set; } - - [Required] - public string OutputPath { get; set; } - - [Required] - public string OutputType { get; set; } - - public string Runtime { get; set; } - - private bool HasRuntimeOutput - { - get { return string.Equals("Exe", OutputType, StringComparison.OrdinalIgnoreCase); } - } - - public override bool Execute() - { - BuildWorkspace workspace = BuildWorkspace.Create(); - - string framework = null; //TODO: should we take a NuGet framework ? - - IEnumerable projectContexts = GetProjectContexts(workspace, - framework == null ? null : NuGetFramework.Parse(framework), - Runtime); - - if (!projectContexts.Any()) - { - Log.LogError($"'{ProjectPath}' cannot be made runnable for '{framework ?? ""}' '{Runtime ?? ""}'"); - return false; - } - - foreach (ProjectContext projectContext in projectContexts) - { - string buildBasePath = null; // TODO: Is there an "Intermediate Directory" property we can take? - - projectContext.ProjectFile.OverrideIsRunnable = HasRuntimeOutput; - - OutputPaths outputPaths = projectContext.GetOutputPaths(Configuration, buildBasePath, OutputPath); - LibraryExporter libraryExporter = projectContext.CreateExporter(Configuration, buildBasePath); - - Executable executable = new Executable(projectContext, outputPaths, libraryExporter, Configuration); - executable.MakeCompilationOutputRunnable(skipRuntimeConfig: true); - } - - return true; - } - - private IEnumerable GetProjectContexts(BuildWorkspace workspace, NuGetFramework framework, string runtime) - { - var contexts = workspace.GetProjectContextCollection(ProjectPath) - .EnsureValid(ProjectPath) - .FrameworkOnlyContexts; - - contexts = framework == null ? - contexts : - contexts.Where(c => Equals(c.TargetFramework, framework)); - - var rids = string.IsNullOrEmpty(runtime) ? - RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers() : - new[] { runtime }; - - return contexts.Select(c => workspace.GetRuntimeContext(c, rids)); - } - } -} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs b/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..bd44bced5 --- /dev/null +++ b/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Reflection; + +[assembly: AssemblyMetadataAttribute("Serviceable", "True")] diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs index a24bf9a67..f28e77f94 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.DotNet.Cli.Tasks +namespace Microsoft.DotNet.Core.Build.Tasks { internal class RuntimeConfig { diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs index 2be57c266..28d19a006 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.DotNet.Cli.Tasks +namespace Microsoft.DotNet.Core.Build.Tasks { internal class RuntimeConfigFramework { diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs index d12b45a81..618ee1c4f 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace Microsoft.DotNet.Cli.Tasks +namespace Microsoft.DotNet.Core.Build.Tasks { internal class RuntimeOptions { diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json index 10a8dba04..985721190 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -5,9 +5,10 @@ "warningsAsErrors": true }, "dependencies": { - "Microsoft.DotNet.Compiler.Common": { + "Microsoft.Extensions.DependencyModel": { "target": "project" - } + }, + "NuGet.ProjectModel": "3.5.0-rc1-1653" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.ProjectModel/Project.cs b/src/Microsoft.DotNet.ProjectModel/Project.cs index b6994f2d3..3aba2a6ac 100644 --- a/src/Microsoft.DotNet.ProjectModel/Project.cs +++ b/src/Microsoft.DotNet.ProjectModel/Project.cs @@ -84,8 +84,6 @@ namespace Microsoft.DotNet.ProjectModel public bool IsTestProject => !string.IsNullOrEmpty(TestRunner); - public bool OverrideIsRunnable { get; set; } - public IEnumerable GetTargetFrameworks() { return _targetFrameworks.Values; @@ -130,7 +128,7 @@ namespace Microsoft.DotNet.ProjectModel var compilerOptions = GetCompilerOptions(targetFramework: null, configurationName: configuration); // TODO: Make this opt in via another mechanism - return compilerOptions.EmitEntryPoint.GetValueOrDefault() || IsTestProject || OverrideIsRunnable; + return compilerOptions.EmitEntryPoint.GetValueOrDefault() || IsTestProject; } private CommonCompilerOptions GetCompilerOptions() diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 10891b835..811e7745f 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -20,10 +20,11 @@ true + 1.0.0 - + + - @@ -41,12 +42,19 @@ + + + - diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs new file mode 100644 index 000000000..a2e83f519 --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs @@ -0,0 +1,69 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using Microsoft.Extensions.DependencyModel; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using NuGet.Common; +using NuGet.Frameworks; +using NuGet.ProjectModel; +using Xunit; + +namespace Microsoft.DotNet.Core.Build.Tasks.Tests +{ + public class GivenADependencyContextBuilder + { + /// + /// Tests that DependencyContextBuilder generates DependencyContexts correctly. + /// + [Theory] + [InlineData("dotnet.new", "1.0.0")] + [InlineData("simple.dependencies", "1.0.0")] + public void ItBuildsDependencyContextsFromProjectLockFiles(string mainProjectName, string mainProjectVersion) + { + LockFile lockFile = LockFileUtilities.GetLockFile($"{mainProjectName}.project.lock.json", NullLogger.Instance); + + DependencyContext dependencyContext = new DependencyContextBuilder().Build( + mainProjectName, + mainProjectVersion, + compilerOptions: null, + lockFile: lockFile, + framework: FrameworkConstants.CommonFrameworks.NetCoreApp10, + runtime: null); + + JObject result = Save(dependencyContext); + JObject baseline = ReadJson($"{mainProjectName}.deps.json"); + + Assert.True(JToken.DeepEquals(baseline, result), $"Expected: {baseline}{Environment.NewLine}Result: {result}"); + } + + private static JObject ReadJson(string path) + { + using (JsonTextReader jsonReader = new JsonTextReader(File.OpenText(path))) + { + JsonSerializer serializer = new JsonSerializer(); + return serializer.Deserialize(jsonReader); + } + } + + private JObject Save(DependencyContext dependencyContext) + { + using (var memoryStream = new MemoryStream()) + { + new DependencyContextWriter().Write(dependencyContext, memoryStream); + using (var readStream = new MemoryStream(memoryStream.ToArray())) + { + using (var textReader = new StreamReader(readStream)) + { + using (var reader = new JsonTextReader(textReader)) + { + return JObject.Load(reader); + } + } + } + } + } + } +} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj new file mode 100644 index 000000000..b112cfc36 --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj @@ -0,0 +1,21 @@ + + + + 14.0.25420 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + edd6c92d-0a58-4fcb-a0e9-9d0ffc045177 + Microsoft.DotNet.Core.Build.Tasks.Tests + ..\..\artifacts\obj\$(MSBuildProjectName) + ..\..\artifacts\bin + + + 2.0 + + + + + + \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json new file mode 100644 index 000000000..46f7e2de2 --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v1.0", + "signature": "da39a3ee5e6b4b0d3255bfef95601890afd80709" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v1.0": { + "dotnet.new/1.0.0": { + "runtime": { + "dotnet.new.dll": {} + } + } + } + }, + "libraries": { + "dotnet.new/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json new file mode 100644 index 000000000..0e2596ed0 --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json @@ -0,0 +1,6600 @@ +{ + "version": 2, + "targets": { + ".NETCoreApp,Version=v1.0": { + "Libuv/1.9.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1" + }, + "runtimeTargets": { + "runtimes/osx/native/_._": { + "assetType": "native", + "rid": "osx" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/1.1.0": { + "type": "package" + }, + "Microsoft.CodeAnalysis.Common/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "1.1.0", + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Collections.Immutable": "1.2.0", + "System.Console": "4.0.0", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.FileVersionInfo": "4.0.0", + "System.Diagnostics.StackTrace": "4.0.1", + "System.Diagnostics.Tools": "4.0.1", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.CodePages": "4.0.1", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Tasks.Parallel": "4.0.1", + "System.Threading.Thread": "4.0.0", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11", + "System.Xml.XPath.XDocument": "4.0.1", + "System.Xml.XmlDocument": "4.0.1" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CodeAnalysis.CSharp/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[1.3.0]" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "1.3.0" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CSharp/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.0/Microsoft.CSharp.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.NETCore.App/1.0.0": { + "type": "package", + "dependencies": { + "Libuv": "1.9.0", + "Microsoft.CSharp": "4.0.1", + "Microsoft.CodeAnalysis.CSharp": "1.3.0", + "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", + "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", + "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", + "Microsoft.VisualBasic": "10.0.1", + "NETStandard.Library": "1.6.0", + "System.Buffers": "4.0.0", + "System.Collections.Immutable": "1.2.0", + "System.ComponentModel": "4.0.1", + "System.ComponentModel.Annotations": "4.1.0", + "System.Diagnostics.DiagnosticSource": "4.0.0", + "System.Diagnostics.Process": "4.1.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO.FileSystem.Watcher": "4.0.0", + "System.IO.MemoryMappedFiles": "4.0.0", + "System.IO.UnmanagedMemoryStream": "4.0.1", + "System.Linq.Expressions": "4.1.0", + "System.Linq.Parallel": "4.0.1", + "System.Linq.Queryable": "4.0.1", + "System.Net.NameResolution": "4.0.0", + "System.Net.Requests": "4.0.11", + "System.Net.Security": "4.0.0", + "System.Net.WebHeaderCollection": "4.0.1", + "System.Numerics.Vectors": "4.1.1", + "System.Reflection.DispatchProxy": "4.0.1", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.Reader": "4.0.0", + "System.Runtime.Loader": "4.0.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Threading.Tasks.Dataflow": "4.6.0", + "System.Threading.Tasks.Extensions": "4.0.0", + "System.Threading.Tasks.Parallel": "4.0.1", + "System.Threading.Thread": "4.0.0", + "System.Threading.ThreadPool": "4.0.10" + }, + "compile": { + "lib/netcoreapp1.0/_._": {} + }, + "runtime": { + "lib/netcoreapp1.0/_._": {} + } + }, + "Microsoft.NETCore.DotNetHost/1.0.1": { + "type": "package" + }, + "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.DotNetHostResolver": "1.0.1" + } + }, + "Microsoft.NETCore.DotNetHostResolver/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.DotNetHost": "1.0.1" + } + }, + "Microsoft.NETCore.Jit/1.0.2": { + "type": "package" + }, + "Microsoft.NETCore.Platforms/1.0.1": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Jit": "1.0.2", + "Microsoft.NETCore.Windows.ApiSets": "1.0.1" + } + }, + "Microsoft.NETCore.Targets/1.0.1": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1": { + "type": "package" + }, + "Microsoft.VisualBasic/10.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} + } + }, + "Microsoft.Win32.Registry/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "NETStandard.Library/1.6.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Console": "4.0.0", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tools": "4.0.1", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Calendars": "4.0.1", + "System.IO": "4.1.0", + "System.IO.Compression": "4.1.0", + "System.IO.Compression.ZipFile": "4.0.1", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Net.Http": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Net.Sockets": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Timer": "4.0.1", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11" + } + }, + "runtime.native.System/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Security/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.AppContext/4.1.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.6/System.AppContext.dll": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + } + }, + "System.Buffers/4.0.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Buffers.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Collections/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": {} + } + }, + "System.Collections.Concurrent/4.0.12": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Collections.Immutable/1.2.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.ComponentModel/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.ComponentModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.ComponentModel.Annotations/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.ComponentModel": "4.0.1", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard1.4/_._": {} + } + }, + "System.Console/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Console.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Reflection.Metadata": "1.3.0", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.Process/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "Microsoft.Win32.Registry": "4.0.0", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Thread": "4.0.0", + "System.Threading.ThreadPool": "4.0.10", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.4/System.Diagnostics.Process.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.4/_._": { + "assetType": "runtime", + "rid": "osx" + } + } + }, + "System.Diagnostics.StackTrace/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "1.2.0", + "System.IO.FileSystem": "4.0.1", + "System.Reflection": "4.1.0", + "System.Reflection.Metadata": "1.3.0", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Diagnostics.Tools/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} + } + }, + "System.Diagnostics.Tracing/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} + } + }, + "System.Dynamic.Runtime/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Globalization/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": {} + } + }, + "System.Globalization.Calendars/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Globalization": "4.0.11", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Calendars.dll": {} + } + }, + "System.Globalization.Extensions/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Extensions.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": {} + } + }, + "System.IO.Compression/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.IO.Compression": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.0.1": { + "type": "package", + "dependencies": { + "System.Buffers": "4.0.0", + "System.IO": "4.1.0", + "System.IO.Compression": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.IO.FileSystem/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.dll": {} + } + }, + "System.IO.FileSystem.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.IO.FileSystem.Watcher/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Overlapped": "4.0.1", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Thread": "4.0.0", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "osx" + } + } + }, + "System.IO.MemoryMappedFiles/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.IO.UnmanagedMemoryStream": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.UnmanagedMemoryStream/4.0.1": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Linq/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + } + }, + "System.Linq.Expressions/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Emit.Lightweight": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + } + }, + "System.Linq.Parallel/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/System.Linq.Parallel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Linq.Queryable/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Linq.Queryable.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Net.Http/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.DiagnosticSource": "4.0.0", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Http": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Http.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.NameResolution/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Principal.Windows": "4.0.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.NameResolution.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/System.Net.Primitives.dll": {} + } + }, + "System.Net.Requests/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Net.Http": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Net.WebHeaderCollection": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Net.Requests.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Security/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Claims": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Security.Principal": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.ThreadPool": "4.0.10", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Security": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Security.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Sockets/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Net.Sockets.dll": {} + } + }, + "System.Net.WebHeaderCollection/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Numerics.Vectors/4.1.1": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Numerics.Vectors.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.ObjectModel/4.0.12": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": {} + } + }, + "System.Reflection.DispatchProxy/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection.Emit/4.0.1": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.1": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.1": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection.Extensions/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Metadata/1.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Immutable": "1.2.0", + "System.Diagnostics.Debug": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Reflection.Metadata.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Reflection.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": {} + } + }, + "System.Reflection.TypeExtensions/4.1.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/netstandard1.5/_._": {} + } + }, + "System.Resources.Reader/4.0.0": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Resources.Reader.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Resources.ResourceManager/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Globalization": "4.0.11", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": {} + } + }, + "System.Runtime.Extensions/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.1/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Loader/4.0.0": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/_._": {} + }, + "runtime": { + "lib/netstandard1.5/_._": {} + } + }, + "System.Runtime.Numerics/4.0.1": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.Numerics.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Security.Claims/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Security.Principal": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Security.Cryptography.Algorithms/4.2.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/4.2.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Primitives/4.0.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Globalization.Calendars": "4.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Cng": "4.2.0", + "System.Security.Cryptography.Csp": "4.0.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Http": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Principal/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Security.Principal.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Security.Principal.Windows/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Claims": "4.0.1", + "System.Security.Principal": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": {} + } + }, + "System.Text.Encoding.CodePages/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding.Extensions/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} + } + }, + "System.Text.RegularExpressions/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + } + }, + "System.Threading/4.0.11": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.Overlapped/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Threading.Tasks/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": {} + } + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Threading.Tasks.Extensions/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Threading.Tasks.Parallel/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.Thread/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.ThreadPool/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.Timer/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.2/System.Threading.Timer.dll": {} + } + }, + "System.Xml.ReaderWriter/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Tasks.Extensions": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XDocument/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tools": "4.0.1", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XmlDocument/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XPath/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XPath.XDocument/4.0.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11", + "System.Xml.XPath": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + } + } + }, + "libraries": { + "Libuv/1.9.0": { + "sha512": "zn9iQ5O9HOqWy93KkEJQbCZtwu87krs4KK0eaPJ4XZdJ4Ciah2rbaVlQlGrycF9CeIOnIOF3rN7pX4/avqaM2g==", + "type": "package", + "path": "libuv/1.9.0", + "files": [ + "Libuv.1.9.0.nupkg.sha512", + "Libuv.nuspec", + "License.txt", + "runtimes/debian-x64/native/libuv.so", + "runtimes/fedora-x64/native/libuv.so", + "runtimes/opensuse-x64/native/libuv.so", + "runtimes/osx/native/libuv.dylib", + "runtimes/rhel-x64/native/libuv.so", + "runtimes/win7-arm/native/libuv.dll", + "runtimes/win7-x64/native/libuv.dll", + "runtimes/win7-x86/native/libuv.dll" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/1.1.0": { + "sha512": "l9jnErYySiDSyQqX8IzAaLo1W1CZhflga9O7HsNySMN/W6QZ6coGlFrJa/PccbN5JhWmCdc1Xy6rVU0TgMJ7ZQ==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/1.1.0", + "files": [ + "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", + "Microsoft.CodeAnalysis.Analyzers.nuspec", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/1.3.0": { + "sha512": "s36q3OAEiFJeJL9C7pDjqelEezReg9fc2CvIh9TUBnwbIMMM80934o0TGqAsgJhcJdSY3ZQXkK4FSfkjSur5Vw==", + "type": "package", + "path": "microsoft.codeanalysis.common/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.Common.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.dll", + "lib/net45/Microsoft.CodeAnalysis.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" + ] + }, + "Microsoft.CodeAnalysis.CSharp/1.3.0": { + "sha512": "Ca7QsOHHHHuI/qenYpVW9mOAXpJWGdSV3vnm2bzBNc+Ih29HPapMpeRp8Cg3sVcP3KYD+MNc2n7Ss+Wtwtpp8A==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.CSharp.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" + ] + }, + "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { + "sha512": "qRZQBqihyoBdEnTMEPvi0r60ImpqlTy9J6B3FG554Cnktm2PN1tkn+yA4ViFLq5VQhrLVllceL4gvF2+ixDO7A==", + "type": "package", + "path": "microsoft.codeanalysis.visualbasic/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.VisualBasic.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" + ] + }, + "Microsoft.CSharp/4.0.1": { + "sha512": "bEDSbvsy+/q2IoTm4h3zMCz5qXnO/ABXuHiuSk/x/SVPgwKGumAYi8o1W2mtYb1L4G3ypcUUnhHKssnDPFVnLg==", + "type": "package", + "path": "microsoft.csharp/4.0.1", + "files": [ + "Microsoft.CSharp.4.0.1.nupkg.sha512", + "Microsoft.CSharp.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.NETCore.App/1.0.0": { + "sha512": "j0UkjdAh4B+7UltdTauJBpvEYn32UZVCfmbeGjDf6Gk6rj1WLE5kmPh4TDo1FqQCJH6qE+upy57SlrXqNOMy1A==", + "type": "package", + "path": "microsoft.netcore.app/1.0.0", + "files": [ + "Microsoft.NETCore.App.1.0.0.nupkg.sha512", + "Microsoft.NETCore.App.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netcoreapp1.0/_._" + ] + }, + "Microsoft.NETCore.DotNetHost/1.0.1": { + "sha512": "pJ5GpIaA3rvPKF14QzEMnk4K4IjQoIykzlFKXQiQvpFoQ/hR0balFeTwHZ7mHIYrD/qyIoPyCZDoIwKvPSeYLg==", + "type": "package", + "path": "microsoft.netcore.dotnethost/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHost.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { + "sha512": "oxLDy2HHOeiJ4lkR3GCBILggKKJlqBqE9+iyn2U0LhOra6It3SPN6WHwUxyUapYS/smwfRUOVe4WOP2RFzaXrA==", + "type": "package", + "path": "microsoft.netcore.dotnethostpolicy/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHostPolicy.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.DotNetHostResolver/1.0.1": { + "sha512": "I8Jn/IWnBLyyD472VW7c3iQCAP53LBrhKJZ+W9N2ZA/WGbVbpXI6lZN6zTcqor41xs2CPNTCGkJ1WI9uuxOhYQ==", + "type": "package", + "path": "microsoft.netcore.dotnethostresolver/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHostResolver.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Jit/1.0.2": { + "sha512": "8/e0Jhh0u6LoHvKD1GsP90pBhtSZ42dYBJbXy1lfnom013LBNAZcr7335J6tap7FlE3c7lJiuwvuqL0HwwubJw==", + "type": "package", + "path": "microsoft.netcore.jit/1.0.2", + "files": [ + "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", + "Microsoft.NETCore.Jit.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Platforms/1.0.1": { + "sha512": "fIH36grDtzPnDFo6TqmqmUnsFgI9Sil5WA9lnaoXOMLKzYnevu8BRvFj3doCcYnyf8gO3QWB0eE10YbcPmlMeg==", + "type": "package", + "path": "microsoft.netcore.platforms/1.0.1", + "files": [ + "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Platforms.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.json" + ] + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { + "sha512": "aJFFWQRwjIVKU9t7hfUei3WFuRAIuQJnmdPR3C8pHhRwOql6CmP0Wre4hcqD/STylPbCZF/1HZSfSTIBSro/ZQ==", + "type": "package", + "path": "microsoft.netcore.runtime.coreclr/1.0.2", + "files": [ + "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", + "Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Targets/1.0.1": { + "sha512": "h7iLUylPF+Hh9t4KgnQv+LfCbbcW9OjfISOWX7CzulLnAB8N7PfeeQjE8anOwk5nBPvJQgSGXxwm8nG7oxmaQg==", + "type": "package", + "path": "microsoft.netcore.targets/1.0.1", + "files": [ + "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Targets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.json" + ] + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1": { + "sha512": "NgPSWhyvALft90CMkbStH1sBAcN4bXPi1RS76ahJtZHDmjvU3pOg7nw7tBs13axJUq8zj9Nqxhpjs9jKvrGCZw==", + "type": "package", + "path": "microsoft.netcore.windows.apisets/1.0.1", + "files": [ + "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Windows.ApiSets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.VisualBasic/10.0.1": { + "sha512": "xap42bUQzo195pEfb87IXDqT7qSKY2ScAVkeKEsgusFWEZTAcd+wM0dy/7nd4T5dFSrhkeEC/kVzJ8pSKOo6Ng==", + "type": "package", + "path": "microsoft.visualbasic/10.0.1", + "files": [ + "Microsoft.VisualBasic.10.0.1.nupkg.sha512", + "Microsoft.VisualBasic.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/Microsoft.VisualBasic.dll", + "lib/netstandard1.3/Microsoft.VisualBasic.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.VisualBasic.dll", + "ref/netcore50/Microsoft.VisualBasic.xml", + "ref/netcore50/de/Microsoft.VisualBasic.xml", + "ref/netcore50/es/Microsoft.VisualBasic.xml", + "ref/netcore50/fr/Microsoft.VisualBasic.xml", + "ref/netcore50/it/Microsoft.VisualBasic.xml", + "ref/netcore50/ja/Microsoft.VisualBasic.xml", + "ref/netcore50/ko/Microsoft.VisualBasic.xml", + "ref/netcore50/ru/Microsoft.VisualBasic.xml", + "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", + "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/Microsoft.VisualBasic.dll", + "ref/netstandard1.1/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._" + ] + }, + "Microsoft.Win32.Primitives/4.0.1": { + "sha512": "kVuOrOUq3COj7iG2FUm5qmAYgQe3X1SmI4k8vvaU7uvau7+dmdzNLHCJSDuGW3tSO+DxLhCMLdnHgnP6r9DZVw==", + "type": "package", + "path": "microsoft.win32.primitives/4.0.1", + "files": [ + "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", + "Microsoft.Win32.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.Win32.Registry/4.0.0": { + "sha512": "eoaVIbe5rWtsuvXMzkR+1Z9t7Y98i6Jq0EwtPxwaGUvKyhumtx/KS5p/jm0e0WN3sm/3zkcpEeBFeUEKDgn6bg==", + "type": "package", + "path": "microsoft.win32.registry/4.0.0", + "files": [ + "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", + "Microsoft.Win32.Registry.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/Microsoft.Win32.Registry.dll", + "ref/net46/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", + "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" + ] + }, + "NETStandard.Library/1.6.0": { + "sha512": "KEBGjjvvaAs35nBXCk23qpydNtp+DqrH1NHpQj4/6i/D4TQcGu1GlJ/UrX637EguXqpd2zlAjXmgnfBtDtDlbg==", + "type": "package", + "path": "netstandard.library/1.6.0", + "files": [ + "NETStandard.Library.1.6.0.nupkg.sha512", + "NETStandard.Library.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt" + ] + }, + "runtime.native.System/4.0.0": { + "sha512": "zSxGms3EXg5+zZ3z5hPUpNEtB8lEoI4jeNSX4g2fq3x7IfwJo5yspIP5WtQVuWn8cdt4JH8IZYGp9q+F6lt1wg==", + "type": "package", + "path": "runtime.native.system/4.0.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.4.0.0.nupkg.sha512", + "runtime.native.System.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.1.0": { + "sha512": "pDDn4jXuGnXhZAslUuVvxBKwRwEGOrlPNH1kz1ciRpI0YM+DR1Nao2lyct7q4ELRQGLZAxdT/4XlMzTllVK4Zw==", + "type": "package", + "path": "runtime.native.system.io.compression/4.1.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", + "runtime.native.System.IO.Compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.0.1": { + "sha512": "OeS65MhURMp5jYBr/yqbGWiYbn7aMeM+2NLEAGgEsRlIJ1Yc9eAqv/Zd2BUbLCniPxgelXpjTuniKaHp+VvDug==", + "type": "package", + "path": "runtime.native.system.net.http/4.0.1", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", + "runtime.native.System.Net.Http.nuspec" + ] + }, + "runtime.native.System.Net.Security/4.0.1": { + "sha512": "hNDZY20cvW73KyXzwB0k14NziwAOsUHdAGWqcABvMhFWOLDQ+1M3q7v8VIHLqq2rMZTq1zBm2c3xD5SMqg4Ubg==", + "type": "package", + "path": "runtime.native.system.net.security/4.0.1", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", + "runtime.native.System.Net.Security.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography/4.0.0": { + "sha512": "PIme9NI+rJxUq5+oU6capGsQf0cy7S2iHf4NXcMLVdBxfaLazc1Kbmq0bp1MEZeXxPa/MX1iYsrlsMu9pSDvAQ==", + "type": "package", + "path": "runtime.native.system.security.cryptography/4.0.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", + "runtime.native.System.Security.Cryptography.nuspec" + ] + }, + "System.AppContext/4.1.0": { + "sha512": "jG2RUlidatCPnSlTHhzINxjovVlXvMxLL2bCZWD+Jq56d3xCMGC19PTo1usazxCe/Qk+7teY9uqf1irK0KIgmQ==", + "type": "package", + "path": "system.appcontext/4.1.0", + "files": [ + "System.AppContext.4.1.0.nupkg.sha512", + "System.AppContext.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll" + ] + }, + "System.Buffers/4.0.0": { + "sha512": "oJjTt0VtCWBNJHvw8B84aD7yHHF7vGZ2wUSSyUSNoWZT+DtZfWkDzzcZwlR6MUhL0ZeVwrmxszwv/3iKyXehmg==", + "type": "package", + "path": "system.buffers/4.0.0", + "files": [ + "System.Buffers.4.0.0.nupkg.sha512", + "System.Buffers.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/.xml", + "lib/netstandard1.1/System.Buffers.dll" + ] + }, + "System.Collections/4.0.11": { + "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", + "type": "package", + "path": "system.collections/4.0.11", + "files": [ + "System.Collections.4.0.11.nupkg.sha512", + "System.Collections.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Collections.Concurrent/4.0.12": { + "sha512": "3PRCtEKNqTico/tfqxAVzUcJh03NxVa+Rsi9//9sYj39AmeXbQ/xCuU6pJv9pNGfLBcqc0ig4rxAPC4cvlNRcQ==", + "type": "package", + "path": "system.collections.concurrent/4.0.12", + "files": [ + "System.Collections.Concurrent.4.0.12.nupkg.sha512", + "System.Collections.Concurrent.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Collections.Immutable/1.2.0": { + "sha512": "1PjQHJyJpYymxU5ABiiai2Q/htx9GNBMJyBP5sUxLJdTJtVOSCg2eBeGOl14uorPvBooe3QRR9GByOlCyn6kdw==", + "type": "package", + "path": "system.collections.immutable/1.2.0", + "files": [ + "System.Collections.Immutable.1.2.0.nupkg.sha512", + "System.Collections.Immutable.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" + ] + }, + "System.ComponentModel/4.0.1": { + "sha512": "rjzC4/aSwNQkECA83ZP4Qj47elmqZPSqb4b0xJDyycRFmI904b9HyoPO0/203ZLUVwELTURFp8Ebuf/TQX7O0A==", + "type": "package", + "path": "system.componentmodel/4.0.1", + "files": [ + "System.ComponentModel.4.0.1.nupkg.sha512", + "System.ComponentModel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ComponentModel.dll", + "lib/netstandard1.3/System.ComponentModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ComponentModel.dll", + "ref/netcore50/System.ComponentModel.xml", + "ref/netcore50/de/System.ComponentModel.xml", + "ref/netcore50/es/System.ComponentModel.xml", + "ref/netcore50/fr/System.ComponentModel.xml", + "ref/netcore50/it/System.ComponentModel.xml", + "ref/netcore50/ja/System.ComponentModel.xml", + "ref/netcore50/ko/System.ComponentModel.xml", + "ref/netcore50/ru/System.ComponentModel.xml", + "ref/netcore50/zh-hans/System.ComponentModel.xml", + "ref/netcore50/zh-hant/System.ComponentModel.xml", + "ref/netstandard1.0/System.ComponentModel.dll", + "ref/netstandard1.0/System.ComponentModel.xml", + "ref/netstandard1.0/de/System.ComponentModel.xml", + "ref/netstandard1.0/es/System.ComponentModel.xml", + "ref/netstandard1.0/fr/System.ComponentModel.xml", + "ref/netstandard1.0/it/System.ComponentModel.xml", + "ref/netstandard1.0/ja/System.ComponentModel.xml", + "ref/netstandard1.0/ko/System.ComponentModel.xml", + "ref/netstandard1.0/ru/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.ComponentModel.Annotations/4.1.0": { + "sha512": "Rc8tE9c6w/pCXd/13g2DuqHpsl+J3+sh+fvbt/1wXo2GWh7u+oElMJ2wNVcMG6GQQ+jWByKS5VOmSAna32sCPQ==", + "type": "package", + "path": "system.componentmodel.annotations/4.1.0", + "files": [ + "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", + "System.ComponentModel.Annotations.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Console/4.0.0": { + "sha512": "fTBZ2g3DwltLc8sdJOy2AgoFgKEN9xziOVGvTJOMPtGQmiN9PokZeyvDdcN+XmNYkUTKaaCy+in9gJMcTLpcnw==", + "type": "package", + "path": "system.console/4.0.0", + "files": [ + "System.Console.4.0.0.nupkg.sha512", + "System.Console.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.Debug/4.0.11": { + "sha512": "KG+exVp/WRV8IC0p0W6VltAbLa5WurSJvcw7X0F4BsfepC/sTj5g3I/Z1YiwuYSJEM5oh/cUUffxdzvmsyFKdQ==", + "type": "package", + "path": "system.diagnostics.debug/4.0.11", + "files": [ + "System.Diagnostics.Debug.4.0.11.nupkg.sha512", + "System.Diagnostics.Debug.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.DiagnosticSource/4.0.0": { + "sha512": "VRrQoK1bg1+2mM8G57QRMVIp4pE/CnXeEzYV3J8/oM2ro5f+yiJEsYa4N76Gy3esS/3KZcN+fl6ZwC5WTsQ5NA==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.0.0", + "files": [ + "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", + "System.Diagnostics.DiagnosticSource.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" + ] + }, + "System.Diagnostics.FileVersionInfo/4.0.0": { + "sha512": "qwaovQ4LyAkg7xrHeskWfEd9jR2dJtZZAEw2MuUhjdPxRPhiiZrjb7J2PAYPN+otucscNeBQ510L+Pqqizf5BA==", + "type": "package", + "path": "system.diagnostics.fileversioninfo/4.0.0", + "files": [ + "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", + "System.Diagnostics.FileVersionInfo.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.FileVersionInfo.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.FileVersionInfo.dll", + "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", + "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" + ] + }, + "System.Diagnostics.Process/4.1.0": { + "sha512": "ByN1UzToBh5U7rLXO2rH+EN590TmaunLED7oPFSEhBU2q7FvszImfDZiogGQXGNEhVbhu8a+2xTJTG9JvEq0PQ==", + "type": "package", + "path": "system.diagnostics.process/4.1.0", + "files": [ + "System.Diagnostics.Process.4.1.0.nupkg.sha512", + "System.Diagnostics.Process.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.Process.dll", + "lib/net461/System.Diagnostics.Process.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.Process.dll", + "ref/net461/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.xml", + "ref/netstandard1.3/de/System.Diagnostics.Process.xml", + "ref/netstandard1.3/es/System.Diagnostics.Process.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.3/it/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", + "ref/netstandard1.4/System.Diagnostics.Process.dll", + "ref/netstandard1.4/System.Diagnostics.Process.xml", + "ref/netstandard1.4/de/System.Diagnostics.Process.xml", + "ref/netstandard1.4/es/System.Diagnostics.Process.xml", + "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.4/it/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win/lib/net46/System.Diagnostics.Process.dll", + "runtimes/win/lib/net461/System.Diagnostics.Process.dll", + "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.Diagnostics.StackTrace/4.0.1": { + "sha512": "YuE/unaRbpbI7B6pxwJiQAp4OTHg5+jSVUAVNuBYyvwG4s2WMcl3W7/CmRUZbcZ6y0YW7fXfaYltD03R5G0VBw==", + "type": "package", + "path": "system.diagnostics.stacktrace/4.0.1", + "files": [ + "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", + "System.Diagnostics.StackTrace.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.StackTrace.dll", + "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.StackTrace.dll", + "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", + "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" + ] + }, + "System.Diagnostics.Tools/4.0.1": { + "sha512": "3deFSsh/r8+PSUNO56q02CW6lcFm6WFxLj0rXK/n7H2y8aXBGp19UxBd6ULd6jWU3hEtPLDfHZwfnqLAZ/Ol4w==", + "type": "package", + "path": "system.diagnostics.tools/4.0.1", + "files": [ + "System.Diagnostics.Tools.4.0.1.nupkg.sha512", + "System.Diagnostics.Tools.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.Tracing/4.1.0": { + "sha512": "l2QHczY4dhwFJSXIlDVN4mzLiLoHxEX7p/VJEeKRi0YfUFQIuSlhDumMQIpQrCVtkANppK29EbyrUDYBeYF4Rg==", + "type": "package", + "path": "system.diagnostics.tracing/4.1.0", + "files": [ + "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", + "System.Diagnostics.Tracing.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Dynamic.Runtime/4.0.11": { + "sha512": "9k+q34XPPYybL1oOME7DovLeuhLX+prxr2OzoWMqUmrnwAr3lxY9OmLEyeKjk4uJIweXNg3644xHLGOZRGU22w==", + "type": "package", + "path": "system.dynamic.runtime/4.0.11", + "files": [ + "System.Dynamic.Runtime.4.0.11.nupkg.sha512", + "System.Dynamic.Runtime.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netstandard1.3/System.Dynamic.Runtime.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Dynamic.Runtime.dll", + "ref/netcore50/System.Dynamic.Runtime.xml", + "ref/netcore50/de/System.Dynamic.Runtime.xml", + "ref/netcore50/es/System.Dynamic.Runtime.xml", + "ref/netcore50/fr/System.Dynamic.Runtime.xml", + "ref/netcore50/it/System.Dynamic.Runtime.xml", + "ref/netcore50/ja/System.Dynamic.Runtime.xml", + "ref/netcore50/ko/System.Dynamic.Runtime.xml", + "ref/netcore50/ru/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/System.Dynamic.Runtime.dll", + "ref/netstandard1.0/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/System.Dynamic.Runtime.dll", + "ref/netstandard1.3/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" + ] + }, + "System.Globalization/4.0.11": { + "sha512": "TGLqhQStuTpybLb5lMCGiIKMd/qdI0JyqlhzJpTlOIcWD6EbUVKokw5PkyHs3GWtQbTlT8vWawaInZsmdh91Ww==", + "type": "package", + "path": "system.globalization/4.0.11", + "files": [ + "System.Globalization.4.0.11.nupkg.sha512", + "System.Globalization.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Globalization.Calendars/4.0.1": { + "sha512": "YDAGmKv2fKbA6mkNM/7kGF6Tu5BC3LrWYahEdTGKwZZ1e5bcfi8DtWKhhOuFtxAqNZKMzP757gKIEoFoMxxERg==", + "type": "package", + "path": "system.globalization.calendars/4.0.1", + "files": [ + "System.Globalization.Calendars.4.0.1.nupkg.sha512", + "System.Globalization.Calendars.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Globalization.Extensions/4.0.1": { + "sha512": "3kHwnZaCXkT5qAnqIQPI8FE3fJ9Ci3mNfprosU7lNZzgWbdqG/wyOqEv0bdKLJcIiCd8BGLRKOnv4MfSWyvSTQ==", + "type": "package", + "path": "system.globalization.extensions/4.0.1", + "files": [ + "System.Globalization.Extensions.4.0.1.nupkg.sha512", + "System.Globalization.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" + ] + }, + "System.IO/4.1.0": { + "sha512": "TZuheeY7Z+UauweflKw+mt/QOexbc5c/ijrw+JnxJ2EHJZl92jiyDogDtUsStlOwXGlu80+ZTjM7s5Gts6/Z5A==", + "type": "package", + "path": "system.io/4.1.0", + "files": [ + "System.IO.4.1.0.nupkg.sha512", + "System.IO.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.Compression/4.1.0": { + "sha512": "cegizkSCPlImy+m3Ox8uf0kOQX268dbVWWAwS9OXvq0yOwusna3r60T2iWArRHbc08lbypqOCP0OF4xROMXGVw==", + "type": "package", + "path": "system.io.compression/4.1.0", + "files": [ + "System.IO.Compression.4.1.0.nupkg.sha512", + "System.IO.Compression.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" + ] + }, + "System.IO.Compression.ZipFile/4.0.1": { + "sha512": "jfxIZhNhAu6OuRldXPZ7/G0aris9swd1CM7axW14tEQvG3sgu3Ayv9gy2IODhdqZH1V2O3htOXwYJ885U8bnqQ==", + "type": "package", + "path": "system.io.compression.zipfile/4.0.1", + "files": [ + "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", + "System.IO.Compression.ZipFile.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem/4.0.1": { + "sha512": "Xn1g1mAnq77IktcrxhA7ebz+H6F6oGcwbpg5/9fPAT3zI4MEfq0j+qSGyIxRNjzglZPIK7yYNKPtNLLLZyOaOA==", + "type": "package", + "path": "system.io.filesystem/4.0.1", + "files": [ + "System.IO.FileSystem.4.0.1.nupkg.sha512", + "System.IO.FileSystem.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem.Primitives/4.0.1": { + "sha512": "uFeZv2tSDFykvMnolbSF9XJLtdyV0PpvWkeiNiagke4zg6OvFGILcoNif0eqCPLDUGrKLSWVv5yTL1Zk9K7BPg==", + "type": "package", + "path": "system.io.filesystem.primitives/4.0.1", + "files": [ + "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", + "System.IO.FileSystem.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem.Watcher/4.0.0": { + "sha512": "vmbru/9c2IY7JvTt37tYe0FYIdRmifbeXBsKSJiaFY4U6urAD7HjRJySlI7hDQUo3R8s2vKJJ1eKlE1iHuXK0g==", + "type": "package", + "path": "system.io.filesystem.watcher/4.0.0", + "files": [ + "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", + "System.IO.FileSystem.Watcher.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Watcher.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Watcher.dll", + "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", + "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.IO.MemoryMappedFiles/4.0.0": { + "sha512": "wm55QoEVb6R5wuE08RJcvPIJB2oRrpeHegIUXAek4JfcqcLGFr4hj1XfzaASyiX4dYH0c+Hp8M9aMxI9lhmpPA==", + "type": "package", + "path": "system.io.memorymappedfiles/4.0.0", + "files": [ + "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", + "System.IO.MemoryMappedFiles.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.MemoryMappedFiles.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.MemoryMappedFiles.dll", + "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", + "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" + ] + }, + "System.IO.UnmanagedMemoryStream/4.0.1": { + "sha512": "Pb1D8pEiohHZV6J8uWucZq5T19jSZNk5/lvIRYuidFKHPwIPz4ezGcJMPDO9u3/bVvaLEuAhl3OzCwTlmsfj4Q==", + "type": "package", + "path": "system.io.unmanagedmemorystream/4.0.1", + "files": [ + "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", + "System.IO.UnmanagedMemoryStream.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.UnmanagedMemoryStream.dll", + "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.UnmanagedMemoryStream.dll", + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq/4.1.0": { + "sha512": "zrLjW1Ego8wsTeIH7mVJ4RYg3I6gNCDDuDnb0lCcxWzY2hG54e36i6BzzarXfRdbHOK5+sMWTqrv7p5xpB3ifQ==", + "type": "package", + "path": "system.linq/4.1.0", + "files": [ + "System.Linq.4.1.0.nupkg.sha512", + "System.Linq.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq.Expressions/4.1.0": { + "sha512": "3AoYHK1ecOutE0bZ4XAPi2LdmkLOfMmn7WlGeXqv/ep1Zb42EwlHrcO417waXS6xRezRMVH8e15wNnwJiCoMxw==", + "type": "package", + "path": "system.linq.expressions/4.1.0", + "files": [ + "System.Linq.Expressions.4.1.0.nupkg.sha512", + "System.Linq.Expressions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" + ] + }, + "System.Linq.Parallel/4.0.1": { + "sha512": "lydHObR76vNsZkL7Mn4uSTTo9XO6Dr/oMaSn1rRZegVe+Gb4pV8QGGHYQUAGNZaSIyirCGffrgcFxhlqfq2cQw==", + "type": "package", + "path": "system.linq.parallel/4.0.1", + "files": [ + "System.Linq.Parallel.4.0.1.nupkg.sha512", + "System.Linq.Parallel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Linq.Parallel.dll", + "lib/netstandard1.3/System.Linq.Parallel.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Linq.Parallel.dll", + "ref/netcore50/System.Linq.Parallel.xml", + "ref/netcore50/de/System.Linq.Parallel.xml", + "ref/netcore50/es/System.Linq.Parallel.xml", + "ref/netcore50/fr/System.Linq.Parallel.xml", + "ref/netcore50/it/System.Linq.Parallel.xml", + "ref/netcore50/ja/System.Linq.Parallel.xml", + "ref/netcore50/ko/System.Linq.Parallel.xml", + "ref/netcore50/ru/System.Linq.Parallel.xml", + "ref/netcore50/zh-hans/System.Linq.Parallel.xml", + "ref/netcore50/zh-hant/System.Linq.Parallel.xml", + "ref/netstandard1.1/System.Linq.Parallel.dll", + "ref/netstandard1.1/System.Linq.Parallel.xml", + "ref/netstandard1.1/de/System.Linq.Parallel.xml", + "ref/netstandard1.1/es/System.Linq.Parallel.xml", + "ref/netstandard1.1/fr/System.Linq.Parallel.xml", + "ref/netstandard1.1/it/System.Linq.Parallel.xml", + "ref/netstandard1.1/ja/System.Linq.Parallel.xml", + "ref/netstandard1.1/ko/System.Linq.Parallel.xml", + "ref/netstandard1.1/ru/System.Linq.Parallel.xml", + "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", + "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq.Queryable/4.0.1": { + "sha512": "vcjXDiU8uzARDIQH3gEYbv85+caFaFuS9M+7UFNzB+NODltzp3FlWS9lpylM/g0brzfguqfXSLLuozYnZgPbhw==", + "type": "package", + "path": "system.linq.queryable/4.0.1", + "files": [ + "System.Linq.Queryable.4.0.1.nupkg.sha512", + "System.Linq.Queryable.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Linq.Queryable.dll", + "lib/netstandard1.3/System.Linq.Queryable.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Linq.Queryable.dll", + "ref/netcore50/System.Linq.Queryable.xml", + "ref/netcore50/de/System.Linq.Queryable.xml", + "ref/netcore50/es/System.Linq.Queryable.xml", + "ref/netcore50/fr/System.Linq.Queryable.xml", + "ref/netcore50/it/System.Linq.Queryable.xml", + "ref/netcore50/ja/System.Linq.Queryable.xml", + "ref/netcore50/ko/System.Linq.Queryable.xml", + "ref/netcore50/ru/System.Linq.Queryable.xml", + "ref/netcore50/zh-hans/System.Linq.Queryable.xml", + "ref/netcore50/zh-hant/System.Linq.Queryable.xml", + "ref/netstandard1.0/System.Linq.Queryable.dll", + "ref/netstandard1.0/System.Linq.Queryable.xml", + "ref/netstandard1.0/de/System.Linq.Queryable.xml", + "ref/netstandard1.0/es/System.Linq.Queryable.xml", + "ref/netstandard1.0/fr/System.Linq.Queryable.xml", + "ref/netstandard1.0/it/System.Linq.Queryable.xml", + "ref/netstandard1.0/ja/System.Linq.Queryable.xml", + "ref/netstandard1.0/ko/System.Linq.Queryable.xml", + "ref/netstandard1.0/ru/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.Http/4.1.0": { + "sha512": "4CQSMfSmTC0DoxKAlpYU6CrDGgTt9Uzv3TMoIAUxIvDk+R8iPtZZsMCgTS7su6IhEh95I7D3hWLTJ3iRlcXeNQ==", + "type": "package", + "path": "system.net.http/4.1.0", + "files": [ + "System.Net.Http.4.1.0.nupkg.sha512", + "System.Net.Http.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" + ] + }, + "System.Net.NameResolution/4.0.0": { + "sha512": "P4UzI1FZ+NxnL725rVCjfdZ25lhn/b5BBH6Z1VMkWSuFgKmvG6Gp8q6ccTqUYHTZel1djqesAycP9RKPGY3gqg==", + "type": "package", + "path": "system.net.nameresolution/4.0.0", + "files": [ + "System.Net.NameResolution.4.0.0.nupkg.sha512", + "System.Net.NameResolution.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.NameResolution.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.NameResolution.dll", + "ref/netstandard1.3/System.Net.NameResolution.dll", + "ref/netstandard1.3/System.Net.NameResolution.xml", + "ref/netstandard1.3/de/System.Net.NameResolution.xml", + "ref/netstandard1.3/es/System.Net.NameResolution.xml", + "ref/netstandard1.3/fr/System.Net.NameResolution.xml", + "ref/netstandard1.3/it/System.Net.NameResolution.xml", + "ref/netstandard1.3/ja/System.Net.NameResolution.xml", + "ref/netstandard1.3/ko/System.Net.NameResolution.xml", + "ref/netstandard1.3/ru/System.Net.NameResolution.xml", + "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", + "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", + "runtimes/win/lib/net46/System.Net.NameResolution.dll", + "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", + "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" + ] + }, + "System.Net.Primitives/4.0.11": { + "sha512": "il8pFOeEAhFg6ZGDbO4h/ybODJrM8XyShNTLt/yUf3ApHbwP4Xv8GRM6TwbvLftsmJYTRqt0Oo+CGY0LGP92Yg==", + "type": "package", + "path": "system.net.primitives/4.0.11", + "files": [ + "System.Net.Primitives.4.0.11.nupkg.sha512", + "System.Net.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.Requests/4.0.11": { + "sha512": "YGMSLpwalKACBcTNKwMNShr+ox93248TXbLz9k4x15lhb1lrvDssGHKbgSfgJavAYv+YIF1nCEhmhZOsh7cGuA==", + "type": "package", + "path": "system.net.requests/4.0.11", + "files": [ + "System.Net.Requests.4.0.11.nupkg.sha512", + "System.Net.Requests.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/_._", + "ref/netcore50/System.Net.Requests.dll", + "ref/netcore50/System.Net.Requests.xml", + "ref/netcore50/de/System.Net.Requests.xml", + "ref/netcore50/es/System.Net.Requests.xml", + "ref/netcore50/fr/System.Net.Requests.xml", + "ref/netcore50/it/System.Net.Requests.xml", + "ref/netcore50/ja/System.Net.Requests.xml", + "ref/netcore50/ko/System.Net.Requests.xml", + "ref/netcore50/ru/System.Net.Requests.xml", + "ref/netcore50/zh-hans/System.Net.Requests.xml", + "ref/netcore50/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.0/System.Net.Requests.dll", + "ref/netstandard1.0/System.Net.Requests.xml", + "ref/netstandard1.0/de/System.Net.Requests.xml", + "ref/netstandard1.0/es/System.Net.Requests.xml", + "ref/netstandard1.0/fr/System.Net.Requests.xml", + "ref/netstandard1.0/it/System.Net.Requests.xml", + "ref/netstandard1.0/ja/System.Net.Requests.xml", + "ref/netstandard1.0/ko/System.Net.Requests.xml", + "ref/netstandard1.0/ru/System.Net.Requests.xml", + "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.1/System.Net.Requests.dll", + "ref/netstandard1.1/System.Net.Requests.xml", + "ref/netstandard1.1/de/System.Net.Requests.xml", + "ref/netstandard1.1/es/System.Net.Requests.xml", + "ref/netstandard1.1/fr/System.Net.Requests.xml", + "ref/netstandard1.1/it/System.Net.Requests.xml", + "ref/netstandard1.1/ja/System.Net.Requests.xml", + "ref/netstandard1.1/ko/System.Net.Requests.xml", + "ref/netstandard1.1/ru/System.Net.Requests.xml", + "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.3/System.Net.Requests.dll", + "ref/netstandard1.3/System.Net.Requests.xml", + "ref/netstandard1.3/de/System.Net.Requests.xml", + "ref/netstandard1.3/es/System.Net.Requests.xml", + "ref/netstandard1.3/fr/System.Net.Requests.xml", + "ref/netstandard1.3/it/System.Net.Requests.xml", + "ref/netstandard1.3/ja/System.Net.Requests.xml", + "ref/netstandard1.3/ko/System.Net.Requests.xml", + "ref/netstandard1.3/ru/System.Net.Requests.xml", + "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", + "runtimes/win/lib/net46/_._", + "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" + ] + }, + "System.Net.Security/4.0.0": { + "sha512": "PesXUt5FyvG2c6ti12xkuEpOrXnyAWgxUrpvLoGFnQHn/ZOCZaKzsmu5UrrbFBnMbV9wBToH/xAnMP7l4x38Cg==", + "type": "package", + "path": "system.net.security/4.0.0", + "files": [ + "System.Net.Security.4.0.0.nupkg.sha512", + "System.Net.Security.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Security.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Security.dll", + "ref/netstandard1.3/System.Net.Security.dll", + "ref/netstandard1.3/System.Net.Security.xml", + "ref/netstandard1.3/de/System.Net.Security.xml", + "ref/netstandard1.3/es/System.Net.Security.xml", + "ref/netstandard1.3/fr/System.Net.Security.xml", + "ref/netstandard1.3/it/System.Net.Security.xml", + "ref/netstandard1.3/ja/System.Net.Security.xml", + "ref/netstandard1.3/ko/System.Net.Security.xml", + "ref/netstandard1.3/ru/System.Net.Security.xml", + "ref/netstandard1.3/zh-hans/System.Net.Security.xml", + "ref/netstandard1.3/zh-hant/System.Net.Security.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", + "runtimes/win/lib/net46/System.Net.Security.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.Net.Sockets/4.1.0": { + "sha512": "/W5R4HdIxOGakKacFedlSyYv5z/jO2L0k6k8OHfkUD3BRNW60HxVlL5nSssM6ZUdVXUQxHrx9yv1c49XCug2Eg==", + "type": "package", + "path": "system.net.sockets/4.1.0", + "files": [ + "System.Net.Sockets.4.1.0.nupkg.sha512", + "System.Net.Sockets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.WebHeaderCollection/4.0.1": { + "sha512": "4WQARPJuH+HktTtLGnMS/40FgWfq/1DJywnbl5XST1q5bGu0zbhz01SCp1Xqn6dMMlXu4/qmH6C1NyFhQfQ0yA==", + "type": "package", + "path": "system.net.webheadercollection/4.0.1", + "files": [ + "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", + "System.Net.WebHeaderCollection.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", + "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Numerics.Vectors/4.1.1": { + "sha512": "vdKSS5kLAMIGSPDXt4XeUu/5QsSHrcMsJEoCj7w1uhm7ZUWPt6Yjz171XFt+0o9dkKMR8RQxp0d8uC7/oLLREg==", + "type": "package", + "path": "system.numerics.vectors/4.1.1", + "files": [ + "System.Numerics.Vectors.4.1.1.nupkg.sha512", + "System.Numerics.Vectors.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Numerics.Vectors.dll", + "lib/net46/System.Numerics.Vectors.xml", + "lib/netstandard1.0/System.Numerics.Vectors.dll", + "lib/netstandard1.0/System.Numerics.Vectors.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Numerics.Vectors.dll", + "ref/net46/System.Numerics.Vectors.xml", + "ref/netstandard1.0/System.Numerics.Vectors.dll", + "ref/netstandard1.0/System.Numerics.Vectors.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.ObjectModel/4.0.12": { + "sha512": "5QIZ0wZPw4ZVRx70m/X2PGvj4y879uSB6BISLnj5H1drygpUmHFoUFLgm3mmHwtPyrkgj6e/BdAZiv5XQ1Q17Q==", + "type": "package", + "path": "system.objectmodel/4.0.12", + "files": [ + "System.ObjectModel.4.0.12.nupkg.sha512", + "System.ObjectModel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection/4.1.0": { + "sha512": "GKcvIsJBHkbNYQvyj5IIP+olUGCCRUCFzHBIzGXhu6aJ6kTAnGb4k+/d0jyjjN2+VtbyN37omfXwNKIuWhrXMA==", + "type": "package", + "path": "system.reflection/4.1.0", + "files": [ + "System.Reflection.4.1.0.nupkg.sha512", + "System.Reflection.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.DispatchProxy/4.0.1": { + "sha512": "6IjjjP/SeKqan1gIRFH30/HWCGcFKZdeXAjBa4A84spo53Dh4W/EhFAME5ETx3RrjZlc+d7pD9bXDpm+pB6Pzg==", + "type": "package", + "path": "system.reflection.dispatchproxy/4.0.1", + "files": [ + "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", + "System.Reflection.DispatchProxy.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", + "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" + ] + }, + "System.Reflection.Emit/4.0.1": { + "sha512": "ODcZmN/d87j4+iKHl5Uok9HcEFXwwFgMVEof26EMchHXmF3i16Mk1jdhcc5ck0Ka/TJQh3wahmn2FEJA0yE/bg==", + "type": "package", + "path": "system.reflection.emit/4.0.1", + "files": [ + "System.Reflection.Emit.4.0.1.nupkg.sha512", + "System.Reflection.Emit.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/xamarinmac20/_._", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/xamarinmac20/_._" + ] + }, + "System.Reflection.Emit.ILGeneration/4.0.1": { + "sha512": "PsqrjQzBGC6GIimp57JNjFWAZ/Gz2by5axNUcufaZeZA7CxwndrsI589VFHoL0Po/RBYeAlB6y0sezkqWSrX0A==", + "type": "package", + "path": "system.reflection.emit.ilgeneration/4.0.1", + "files": [ + "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", + "System.Reflection.Emit.ILGeneration.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "runtimes/aot/lib/netcore50/_._" + ] + }, + "System.Reflection.Emit.Lightweight/4.0.1": { + "sha512": "Vrm6ju9GFOUYs7gg8puwSyKt1vqRlZh9Nv0qD+kv4lgE1IKxfHzviDmKvGqfT2AYYRtrSx1lphpMNMgv3+1cwg==", + "type": "package", + "path": "system.reflection.emit.lightweight/4.0.1", + "files": [ + "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", + "System.Reflection.Emit.Lightweight.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "runtimes/aot/lib/netcore50/_._" + ] + }, + "System.Reflection.Extensions/4.0.1": { + "sha512": "GyPPfc9qevCrUY9tOZUmWBKC2yUMSjuN9We6U+adJSgGID2TT2dyng2JV7H0HdJhpRbbFOqnTc6o8bQAh4E0gw==", + "type": "package", + "path": "system.reflection.extensions/4.0.1", + "files": [ + "System.Reflection.Extensions.4.0.1.nupkg.sha512", + "System.Reflection.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.Metadata/1.3.0": { + "sha512": "7P59cN2h7ppeRKnHACgFlOGQgbccW8YxwHFnmj7mDOW/AuL24OmIjUeztl+S+gv/049F9Nj4FAMaFLh5bqpZJA==", + "type": "package", + "path": "system.reflection.metadata/1.3.0", + "files": [ + "System.Reflection.Metadata.1.3.0.nupkg.sha512", + "System.Reflection.Metadata.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml" + ] + }, + "System.Reflection.Primitives/4.0.1": { + "sha512": "hGFZByoG2o1bF9uiew08wFwh0gtyd2VCYj7XMtIakrwReVr0w++cFtJKlM1OuPoryrldxhPASFP3x5zYnhjVbA==", + "type": "package", + "path": "system.reflection.primitives/4.0.1", + "files": [ + "System.Reflection.Primitives.4.0.1.nupkg.sha512", + "System.Reflection.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.TypeExtensions/4.1.0": { + "sha512": "/Xl3UUIeityOW3H9Z/7gxOXU32XZnieW4IVurnD+pR6czi9q6YvfVRtD5Tqf6Y+l61OzxcM8xIfPjCH/UT5bWQ==", + "type": "package", + "path": "system.reflection.typeextensions/4.1.0", + "files": [ + "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", + "System.Reflection.TypeExtensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" + ] + }, + "System.Resources.Reader/4.0.0": { + "sha512": "ylP/7XPvORWwP7bL3QTPSYJ2Na34seTA33c3DT72OcdlmmwrNi5Z83fE0AfunX0LEeJJeuvnOc3pRVvVkEqIqw==", + "type": "package", + "path": "system.resources.reader/4.0.0", + "files": [ + "System.Resources.Reader.4.0.0.nupkg.sha512", + "System.Resources.Reader.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Resources.Reader.dll" + ] + }, + "System.Resources.ResourceManager/4.0.1": { + "sha512": "gKLMuj/owdCHY0iPPtDI87lUfkVcjsXsqt9TajV9hHy9/bR56Oj6djYO8g8O1NM9XBIxdBY5RD5HIppb6eq2+A==", + "type": "package", + "path": "system.resources.resourcemanager/4.0.1", + "files": [ + "System.Resources.ResourceManager.4.0.1.nupkg.sha512", + "System.Resources.ResourceManager.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime/4.1.0": { + "sha512": "xo/NbdOGv24g9ZG0K0ODKtIF/rB2XLYNWxU2Z7kvvFdCDsLsCN6H/z8dpPl4/USBIT2xiyZyftXXSrq3ak6RDQ==", + "type": "package", + "path": "system.runtime/4.1.0", + "files": [ + "System.Runtime.4.1.0.nupkg.sha512", + "System.Runtime.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.Extensions/4.1.0": { + "sha512": "9QTtnNromGft2PYSQ9KkdoHJf18sAgDjsOPOAwFeaTvmA3M29UgZF3kCTmFKMRHaUbYqs4/01dXDnFyh4kUAQA==", + "type": "package", + "path": "system.runtime.extensions/4.1.0", + "files": [ + "System.Runtime.Extensions.4.1.0.nupkg.sha512", + "System.Runtime.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.Handles/4.0.1": { + "sha512": "R45CGUzfC+Woh81fbZANBbbdRRfIrWTqdsRtPl5U1A9VH5pdIbDZJtonIHGdQNXnbje7o1dySfdw+jRdJUTJ5A==", + "type": "package", + "path": "system.runtime.handles/4.0.1", + "files": [ + "System.Runtime.Handles.4.0.1.nupkg.sha512", + "System.Runtime.Handles.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.InteropServices/4.1.0": { + "sha512": "mgu5HB77onFMizYDCykMSYkLeqQwvY5OtGNjkQdjXNQmfR/ZDL7Qm0PVlzAWDIwPGaig0qM94U9mQSSxIrKYEg==", + "type": "package", + "path": "system.runtime.interopservices/4.1.0", + "files": [ + "System.Runtime.InteropServices.4.1.0.nupkg.sha512", + "System.Runtime.InteropServices.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { + "sha512": "K0ZGNBnTKdTMwev2bSNBPv13JN+ldrnbb6473sW3C+FIiCnqDwjf27GYnGf4XxgoSv5a4YH50+yC46jKCS7AMg==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.0.0", + "files": [ + "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", + "System.Runtime.InteropServices.RuntimeInformation.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" + ] + }, + "System.Runtime.Loader/4.0.0": { + "sha512": "rfBmahFBSNgIWIcY4h7k+/8lvDFVs8h1nnp6CH662jiKPh8oFACayyZnkJBbWCPoSOh6MN+OUFmij4Qo1mIJjQ==", + "type": "package", + "path": "system.runtime.loader/4.0.0", + "files": [ + "System.Runtime.Loader.4.0.0.nupkg.sha512", + "System.Runtime.Loader.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net462/_._", + "lib/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.xml", + "ref/netstandard1.5/de/System.Runtime.Loader.xml", + "ref/netstandard1.5/es/System.Runtime.Loader.xml", + "ref/netstandard1.5/fr/System.Runtime.Loader.xml", + "ref/netstandard1.5/it/System.Runtime.Loader.xml", + "ref/netstandard1.5/ja/System.Runtime.Loader.xml", + "ref/netstandard1.5/ko/System.Runtime.Loader.xml", + "ref/netstandard1.5/ru/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" + ] + }, + "System.Runtime.Numerics/4.0.1": { + "sha512": "+uDWR5vk2YhXEztJANPqFUGjoUmqCEzeAo1eIdD+kW3n6Gr2onYQks+aAnRagD5f5PimWtWSVvFED2H8ahdzIw==", + "type": "package", + "path": "system.runtime.numerics/4.0.1", + "files": [ + "System.Runtime.Numerics.4.0.1.nupkg.sha512", + "System.Runtime.Numerics.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Claims/4.0.1": { + "sha512": "Iy2Z8sgdbztk6ZV8aMk5ma6CJ0Pdq5PDxMAPCli9uOfyhmg9LB1h46Myo+uTLZkz1a1AC52rCap5gL/gSo88hA==", + "type": "package", + "path": "system.security.claims/4.0.1", + "files": [ + "System.Security.Claims.4.0.1.nupkg.sha512", + "System.Security.Claims.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Claims.dll", + "lib/netstandard1.3/System.Security.Claims.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Claims.dll", + "ref/netstandard1.3/System.Security.Claims.dll", + "ref/netstandard1.3/System.Security.Claims.xml", + "ref/netstandard1.3/de/System.Security.Claims.xml", + "ref/netstandard1.3/es/System.Security.Claims.xml", + "ref/netstandard1.3/fr/System.Security.Claims.xml", + "ref/netstandard1.3/it/System.Security.Claims.xml", + "ref/netstandard1.3/ja/System.Security.Claims.xml", + "ref/netstandard1.3/ko/System.Security.Claims.xml", + "ref/netstandard1.3/ru/System.Security.Claims.xml", + "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", + "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Cryptography.Algorithms/4.2.0": { + "sha512": "SxeJhuMeyo94iNw36tLZ3+ceVc2XBJZypGEpTB6XiUg4e6BF3KQ7nuyxG9NZmLaNhXct+mHHecDqo84fKi8tXA==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.2.0", + "files": [ + "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", + "System.Security.Cryptography.Algorithms.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" + ] + }, + "System.Security.Cryptography.Cng/4.2.0": { + "sha512": "+t+fP4NrEX0Y7YP/dpG9Nw8Bwuj0p3Tgk1hW+ZKPybWhPdPgLUT/5EnJGVUGQ+G60YQ1dOfeDBo+c3pUwAIN+Q==", + "type": "package", + "path": "system.security.cryptography.cng/4.2.0", + "files": [ + "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", + "System.Security.Cryptography.Cng.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net463/System.Security.Cryptography.Cng.dll", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net463/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" + ] + }, + "System.Security.Cryptography.Csp/4.0.0": { + "sha512": "wheZXjWMzVLkQame2Ih8xCDOQ+V2EYWFCNWd0JuTfjqZ2mgtu7eH/JE2RGyjcX7cdRqQS2S7A3uG7H9XMTI8zA==", + "type": "package", + "path": "system.security.cryptography.csp/4.0.0", + "files": [ + "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Csp.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" + ] + }, + "System.Security.Cryptography.Encoding/4.0.0": { + "sha512": "aRUak1DrRloCWBJwbQk4WFbFoHFBKMs8tCvLB3qIuVGfN4cUzattZLdmUBKE2DgnSOpCCtssdWYoClmGUP0ENA==", + "type": "package", + "path": "system.security.cryptography.encoding/4.0.0", + "files": [ + "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Encoding.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" + ] + }, + "System.Security.Cryptography.OpenSsl/4.0.0": { + "sha512": "XJOb9CM1wDhM1LV/0WO8ugklvOGzqQcm/S4nYudrzFCwD0hRkyCeqDeEnjx4l0a14qArG7kgM57CPUwhusSsJw==", + "type": "package", + "path": "system.security.cryptography.openssl/4.0.0", + "files": [ + "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", + "System.Security.Cryptography.OpenSsl.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" + ] + }, + "System.Security.Cryptography.Primitives/4.0.0": { + "sha512": "Sxqmk9UCb0lKkEKR4aPC9vnt+DNqRrqaGyQWQ2hNq6VEbxK0AnUW78resJnTMHe9WoAd5xxtGDVr39risB4BJw==", + "type": "package", + "path": "system.security.cryptography.primitives/4.0.0", + "files": [ + "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Cryptography.X509Certificates/4.1.0": { + "sha512": "9ojGSlgAEjxYBxsz7lk8FTmDanXhSehK4sWuyniVN9LhQ023MMolziNLLHQ/ONT7QTdQ0B2gypE1/9hxHTrMwg==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.1.0", + "files": [ + "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", + "System.Security.Cryptography.X509Certificates.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" + ] + }, + "System.Security.Principal/4.0.1": { + "sha512": "K+ZmITjYRLmaxCXgUI0b2g7w0wt3ynOHHxKeK9usffM1+kzlkjrvcCGkTu/yPe29+8O4mOgtAVLvvvVST52hWg==", + "type": "package", + "path": "system.security.principal/4.0.1", + "files": [ + "System.Security.Principal.4.0.1.nupkg.sha512", + "System.Security.Principal.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Security.Principal.dll", + "lib/netstandard1.0/System.Security.Principal.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Security.Principal.dll", + "ref/netcore50/System.Security.Principal.xml", + "ref/netcore50/de/System.Security.Principal.xml", + "ref/netcore50/es/System.Security.Principal.xml", + "ref/netcore50/fr/System.Security.Principal.xml", + "ref/netcore50/it/System.Security.Principal.xml", + "ref/netcore50/ja/System.Security.Principal.xml", + "ref/netcore50/ko/System.Security.Principal.xml", + "ref/netcore50/ru/System.Security.Principal.xml", + "ref/netcore50/zh-hans/System.Security.Principal.xml", + "ref/netcore50/zh-hant/System.Security.Principal.xml", + "ref/netstandard1.0/System.Security.Principal.dll", + "ref/netstandard1.0/System.Security.Principal.xml", + "ref/netstandard1.0/de/System.Security.Principal.xml", + "ref/netstandard1.0/es/System.Security.Principal.xml", + "ref/netstandard1.0/fr/System.Security.Principal.xml", + "ref/netstandard1.0/it/System.Security.Principal.xml", + "ref/netstandard1.0/ja/System.Security.Principal.xml", + "ref/netstandard1.0/ko/System.Security.Principal.xml", + "ref/netstandard1.0/ru/System.Security.Principal.xml", + "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", + "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Principal.Windows/4.0.0": { + "sha512": "N48FlIaw4yd7zGFNjEvMdl9MfYK0dxF0Gn9V7VVIOraRO2kmShnIyJgw42PAgXZj4dXUACJQCvZ8bZf9pnn7zQ==", + "type": "package", + "path": "system.security.principal.windows/4.0.0", + "files": [ + "System.Security.Principal.Windows.4.0.0.nupkg.sha512", + "System.Security.Principal.Windows.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Principal.Windows.dll", + "ref/net46/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", + "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" + ] + }, + "System.Text.Encoding/4.0.11": { + "sha512": "RcR3Hkm4raW8r4TDs6DKw20r6Vljnx3NHHykupIMc1tngv9nFCaPNPY0uqeQOZq1ux7qO+vPMKs74nWcWVQprQ==", + "type": "package", + "path": "system.text.encoding/4.0.11", + "files": [ + "System.Text.Encoding.4.0.11.nupkg.sha512", + "System.Text.Encoding.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Text.Encoding.CodePages/4.0.1": { + "sha512": "q4jHW+1OYIx3WxpeZhwtMgGEW+T5HP91vnapgvJpuLQcM18R+woA6pgH1d4cPFJOnAuNHXZBB5JPJqR6vl+wDw==", + "type": "package", + "path": "system.text.encoding.codepages/4.0.1", + "files": [ + "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", + "System.Text.Encoding.CodePages.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Text.Encoding.CodePages.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", + "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" + ] + }, + "System.Text.Encoding.Extensions/4.0.11": { + "sha512": "+Z9hfMix0fqSrXzcYLgeIeHh4q9xW1CAI3GOiUpFvlgvlOTcKIFSabI2cFt1tZZn+5uiA/oYnMivkemA3u2CKA==", + "type": "package", + "path": "system.text.encoding.extensions/4.0.11", + "files": [ + "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", + "System.Text.Encoding.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Text.RegularExpressions/4.1.0": { + "sha512": "6S1eWqIvhJgomg8VOCyCRib2KUBvd/8RfdYCkXAelhQr1POJabvCbQDT8Bda9kUc4+8Lg4cFkU68kbm6I2UinQ==", + "type": "package", + "path": "system.text.regularexpressions/4.1.0", + "files": [ + "System.Text.RegularExpressions.4.1.0.nupkg.sha512", + "System.Text.RegularExpressions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading/4.0.11": { + "sha512": "R2sW0S6z9HLO6oUFJbEkeUurs9TJhNn/3cXwTVgO9EA4P706aGNXLBDuLvPuUfjB2BWYTqQcsQlmEBnNQb6mHg==", + "type": "package", + "path": "system.threading/4.0.11", + "files": [ + "System.Threading.4.0.11.nupkg.sha512", + "System.Threading.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll" + ] + }, + "System.Threading.Overlapped/4.0.1": { + "sha512": "8SRWRTaspxCobR4Lawok80o+UriJ28LA12uxMoJ1SlusDE8/MWF365r1uc5XtgKhxM022jvNnP9s9ANUWRyYMw==", + "type": "package", + "path": "system.threading.overlapped/4.0.1", + "files": [ + "System.Threading.Overlapped.4.0.1.nupkg.sha512", + "System.Threading.Overlapped.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Threading.Overlapped.dll", + "ref/net46/System.Threading.Overlapped.dll", + "ref/netstandard1.3/System.Threading.Overlapped.dll", + "ref/netstandard1.3/System.Threading.Overlapped.xml", + "ref/netstandard1.3/de/System.Threading.Overlapped.xml", + "ref/netstandard1.3/es/System.Threading.Overlapped.xml", + "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", + "ref/netstandard1.3/it/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", + "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", + "runtimes/win/lib/net46/System.Threading.Overlapped.dll", + "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", + "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" + ] + }, + "System.Threading.Tasks/4.0.11": { + "sha512": "IB6iE91t3bcDlJlga/8iRG42241jo/nicq73BXWxgB3lgNSBOLcKK6ANE5rT/vAJSSw5E/mFhFA45arEVqX0hg==", + "type": "package", + "path": "system.threading.tasks/4.0.11", + "files": [ + "System.Threading.Tasks.4.0.11.nupkg.sha512", + "System.Threading.Tasks.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "sha512": "21UhggAhuA8zv58pr99oZxH0hZaynxV5t2B7o9uToWUmzhATE1VsOAL9utIHdHC7BWqecxqot8VrsKXJWHOs0Q==", + "type": "package", + "path": "system.threading.tasks.dataflow/4.6.0", + "files": [ + "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", + "System.Threading.Tasks.Dataflow.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" + ] + }, + "System.Threading.Tasks.Extensions/4.0.0": { + "sha512": "EuuETt5/NaBSiwK502xqSqagZItyhKOxOq3Bd1LaH2P8VhGt7g15DUXA4vda8WG3s+0XxPg74TELgSFHfVpRIg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.0.0", + "files": [ + "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", + "System.Threading.Tasks.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" + ] + }, + "System.Threading.Tasks.Parallel/4.0.1": { + "sha512": "MgZD6/y8ccybN3OnNqlY9uZfJuJ3c3HNsJAMa9Zo1jrlJvXMwYAUmmcqmLKGJ3QF00vrlo2R2z8zsPy4gKJLeQ==", + "type": "package", + "path": "system.threading.tasks.parallel/4.0.1", + "files": [ + "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", + "System.Threading.Tasks.Parallel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.Tasks.Parallel.dll", + "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.Parallel.dll", + "ref/netcore50/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", + "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Thread/4.0.0": { + "sha512": "YYS+wknUwloPKzRK20jKSqEc7t27JMAvZeOp3Q8Qj1e+njrzNnqeE7MgTxh+kROmdel7roLsbcm4JZVvpoghfA==", + "type": "package", + "path": "system.threading.thread/4.0.0", + "files": [ + "System.Threading.Thread.4.0.0.nupkg.sha512", + "System.Threading.Thread.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.Thread.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.Thread.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.xml", + "ref/netstandard1.3/de/System.Threading.Thread.xml", + "ref/netstandard1.3/es/System.Threading.Thread.xml", + "ref/netstandard1.3/fr/System.Threading.Thread.xml", + "ref/netstandard1.3/it/System.Threading.Thread.xml", + "ref/netstandard1.3/ja/System.Threading.Thread.xml", + "ref/netstandard1.3/ko/System.Threading.Thread.xml", + "ref/netstandard1.3/ru/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.ThreadPool/4.0.10": { + "sha512": "XTJ6K31lswfxW3CLhL/wGY+qNkkakc47h5R6OtKKGrfeIlV1F4tt7woDL/fOSPdvyJHjjAQwYW03YDsnjpWryQ==", + "type": "package", + "path": "system.threading.threadpool/4.0.10", + "files": [ + "System.Threading.ThreadPool.4.0.10.nupkg.sha512", + "System.Threading.ThreadPool.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.ThreadPool.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.ThreadPool.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Timer/4.0.1": { + "sha512": "oqbfAKnuR8KMFZd3lR0do13Im3WhaImg7Ks+zLgFfWu/3R2Qe/4GLRMX0NiuEFm/+wAI5FSivnLRxJz/NG7RKg==", + "type": "package", + "path": "system.threading.timer/4.0.1", + "files": [ + "System.Threading.Timer.4.0.1.nupkg.sha512", + "System.Threading.Timer.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.ReaderWriter/4.0.11": { + "sha512": "grM6iCN9rLAhwJ+rt9m59nG4Q28f6hWeqZKQHlJgF7ohe8pVv2IOi6GQ1QSerEvC/jdzNhdv6J08+Tev0kWfBQ==", + "type": "package", + "path": "system.xml.readerwriter/4.0.11", + "files": [ + "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", + "System.Xml.ReaderWriter.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XDocument/4.0.11": { + "sha512": "hfbrA/0SmKODLyLEl50lhDWKHUvzfvmkEXqQSEJAesMdD/fe5VvRuwmcD7a1EzQuobMKH8t4pZXabU8c+E//Gg==", + "type": "package", + "path": "system.xml.xdocument/4.0.11", + "files": [ + "System.Xml.XDocument.4.0.11.nupkg.sha512", + "System.Xml.XDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XmlDocument/4.0.1": { + "sha512": "ToOSpDN6htjvaJX1lpn2CuPzp9SK6a2mCz1uyznFE6fkjBDiQ4gCRfv/poTH3UYVn03MyyggRmtBnDxvRn1IFA==", + "type": "package", + "path": "system.xml.xmldocument/4.0.1", + "files": [ + "System.Xml.XmlDocument.4.0.1.nupkg.sha512", + "System.Xml.XmlDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XmlDocument.dll", + "lib/netstandard1.3/System.Xml.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XPath/4.0.1": { + "sha512": "/8tUgjtMgjwB1Gs62UBYlHOVUqR6+ddQ9vXiJfdncGdix1egte976SpbH3jL4e1c3Ua504a/ACDvoMEAxSYPYQ==", + "type": "package", + "path": "system.xml.xpath/4.0.1", + "files": [ + "System.Xml.XPath.4.0.1.nupkg.sha512", + "System.Xml.XPath.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XPath.dll", + "lib/netstandard1.3/System.Xml.XPath.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.xml", + "ref/netstandard1.3/de/System.Xml.XPath.xml", + "ref/netstandard1.3/es/System.Xml.XPath.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.xml", + "ref/netstandard1.3/it/System.Xml.XPath.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XPath.XDocument/4.0.1": { + "sha512": "j8Em0n3lK2YHcdtQwPM62NEwHrZar0H3Z2o7wuuW6pykesvnYUJfH8iiD+e3ynFdNt9BcDW20GgP2Ii/G60PqA==", + "type": "package", + "path": "system.xml.xpath.xdocument/4.0.1", + "files": [ + "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", + "System.Xml.XPath.XDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XPath.XDocument.dll", + "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XPath.XDocument.dll", + "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", + "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + } + }, + "projectFileDependencyGroups": { + "": [], + ".NETCoreApp,Version=v1.0": [ + "Microsoft.NETCore.App >= 1.0.0" + ] + }, + "tools": {}, + "projectFileToolGroups": {}, + "packageFolders": { + "C:\\.nuget\\packages\\": {} + } +} \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json new file mode 100644 index 000000000..804f8c5bb --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json @@ -0,0 +1,27 @@ +{ + "version": "1.0.0-*", + "buildOptions": { + "keyFile": "../../tools/Key.snk" + }, + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "Microsoft.DotNet.Core.Build.Tasks": { + "target": "project" + }, + "xunit": "2.1.0", + "dotnet-test-xunit": "1.0.0-rc2-192208-24" + }, + "testRunner": "xunit", + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "netstandardapp1.5", + "dotnet5.4", + "portable-net451+win8" + ] + } + } +} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json new file mode 100644 index 000000000..9e90ffa5a --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json @@ -0,0 +1,60 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v1.0", + "signature": "a813617eb7d3bb5d69fa51d48f64bc6455d8ca5f" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v1.0": { + "simple.dependencies/1.0.0": { + "dependencies": { + "System.Collections.NonGeneric": "4.0.1", + "Newtonsoft.Json": "9.0.1" + }, + "runtime": { + "simple.dependencies.dll": {} + } + }, + "newtonsoft.json/9.0.1": { + "dependencies": { + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "lib/netstandard1.0/Newtonsoft.Json.dll": {} + } + }, + "system.collections.nongeneric/4.0.1": { + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} + } + }, + "system.runtime.serialization.primitives/4.1.1": { + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + } + } + } + }, + "libraries": { + "simple.dependencies/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "newtonsoft.json/9.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==" + }, + "system.collections.nongeneric/4.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==" + }, + "system.runtime.serialization.primitives/4.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==" + } + } +} \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json new file mode 100644 index 000000000..029c87384 --- /dev/null +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json @@ -0,0 +1,6796 @@ +{ + "locked": false, + "version": 2, + "targets": { + ".NETCoreApp,Version=v1.0": { + "Libuv/1.9.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1" + }, + "runtimeTargets": { + "runtimes/osx/native/_._": { + "assetType": "native", + "rid": "osx" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/1.1.0": { + "type": "package" + }, + "Microsoft.CodeAnalysis.Common/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "1.1.0", + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Collections.Immutable": "1.2.0", + "System.Console": "4.0.0", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.FileVersionInfo": "4.0.0", + "System.Diagnostics.StackTrace": "4.0.1", + "System.Diagnostics.Tools": "4.0.1", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.CodePages": "4.0.1", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Tasks.Parallel": "4.0.1", + "System.Threading.Thread": "4.0.0", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11", + "System.Xml.XPath.XDocument": "4.0.1", + "System.Xml.XmlDocument": "4.0.1" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CodeAnalysis.CSharp/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[1.3.0]" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "1.3.0" + }, + "compile": { + "lib/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.CSharp/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.0/Microsoft.CSharp.dll": {} + }, + "runtime": { + "lib/netstandard1.3/Microsoft.CSharp.dll": {} + } + }, + "Microsoft.NETCore.App/1.0.0": { + "type": "package", + "dependencies": { + "Libuv": "1.9.0", + "Microsoft.CSharp": "4.0.1", + "Microsoft.CodeAnalysis.CSharp": "1.3.0", + "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", + "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", + "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", + "Microsoft.VisualBasic": "10.0.1", + "NETStandard.Library": "1.6.0", + "System.Buffers": "4.0.0", + "System.Collections.Immutable": "1.2.0", + "System.ComponentModel": "4.0.1", + "System.ComponentModel.Annotations": "4.1.0", + "System.Diagnostics.DiagnosticSource": "4.0.0", + "System.Diagnostics.Process": "4.1.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO.FileSystem.Watcher": "4.0.0", + "System.IO.MemoryMappedFiles": "4.0.0", + "System.IO.UnmanagedMemoryStream": "4.0.1", + "System.Linq.Expressions": "4.1.0", + "System.Linq.Parallel": "4.0.1", + "System.Linq.Queryable": "4.0.1", + "System.Net.NameResolution": "4.0.0", + "System.Net.Requests": "4.0.11", + "System.Net.Security": "4.0.0", + "System.Net.WebHeaderCollection": "4.0.1", + "System.Numerics.Vectors": "4.1.1", + "System.Reflection.DispatchProxy": "4.0.1", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.Reader": "4.0.0", + "System.Runtime.Loader": "4.0.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Threading.Tasks.Dataflow": "4.6.0", + "System.Threading.Tasks.Extensions": "4.0.0", + "System.Threading.Tasks.Parallel": "4.0.1", + "System.Threading.Thread": "4.0.0", + "System.Threading.ThreadPool": "4.0.10" + }, + "compile": { + "lib/netcoreapp1.0/_._": {} + }, + "runtime": { + "lib/netcoreapp1.0/_._": {} + } + }, + "Microsoft.NETCore.DotNetHost/1.0.1": { + "type": "package" + }, + "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.DotNetHostResolver": "1.0.1" + } + }, + "Microsoft.NETCore.DotNetHostResolver/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.DotNetHost": "1.0.1" + } + }, + "Microsoft.NETCore.Jit/1.0.2": { + "type": "package" + }, + "Microsoft.NETCore.Platforms/1.0.1": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Jit": "1.0.2", + "Microsoft.NETCore.Windows.ApiSets": "1.0.1" + } + }, + "Microsoft.NETCore.Targets/1.0.1": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1": { + "type": "package" + }, + "Microsoft.VisualBasic/10.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} + } + }, + "Microsoft.Win32.Registry/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "NETStandard.Library/1.6.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Console": "4.0.0", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tools": "4.0.1", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Calendars": "4.0.1", + "System.IO": "4.1.0", + "System.IO.Compression": "4.1.0", + "System.IO.Compression.ZipFile": "4.0.1", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Net.Http": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Net.Sockets": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Timer": "4.0.1", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11" + } + }, + "Newtonsoft.Json/9.0.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Serialization.Primitives": "4.1.1", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/netstandard1.0/Newtonsoft.Json.dll": {} + } + }, + "runtime.native.System/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Security/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.AppContext/4.1.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.6/System.AppContext.dll": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + } + }, + "System.Buffers/4.0.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Buffers.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Collections/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": {} + } + }, + "System.Collections.Concurrent/4.0.12": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Collections.Immutable/1.2.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Collections.NonGeneric/4.0.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} + } + }, + "System.ComponentModel/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.ComponentModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.ComponentModel.Annotations/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.ComponentModel": "4.0.1", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard1.4/_._": {} + } + }, + "System.Console/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Console.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Reflection.Metadata": "1.3.0", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.Process/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "Microsoft.Win32.Registry": "4.0.0", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Thread": "4.0.0", + "System.Threading.ThreadPool": "4.0.10", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.4/System.Diagnostics.Process.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.4/_._": { + "assetType": "runtime", + "rid": "osx" + } + } + }, + "System.Diagnostics.StackTrace/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "1.2.0", + "System.IO.FileSystem": "4.0.1", + "System.Reflection": "4.1.0", + "System.Reflection.Metadata": "1.3.0", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Diagnostics.Tools/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} + } + }, + "System.Diagnostics.Tracing/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} + } + }, + "System.Dynamic.Runtime/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": {} + } + }, + "System.Globalization.Calendars/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Globalization": "4.0.11", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Calendars.dll": {} + } + }, + "System.Globalization.Extensions/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Extensions.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": {} + } + }, + "System.IO.Compression/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.IO.Compression": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.0.1": { + "type": "package", + "dependencies": { + "System.Buffers": "4.0.0", + "System.IO": "4.1.0", + "System.IO.Compression": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.IO.FileSystem/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.dll": {} + } + }, + "System.IO.FileSystem.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.IO.FileSystem.Watcher/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Overlapped": "4.0.1", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Thread": "4.0.0", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "osx" + } + } + }, + "System.IO.MemoryMappedFiles/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.IO.UnmanagedMemoryStream": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.UnmanagedMemoryStream/4.0.1": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Linq/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Emit.Lightweight": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": {} + } + }, + "System.Linq.Parallel/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/System.Linq.Parallel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Linq.Queryable/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Linq.Queryable.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Net.Http/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.DiagnosticSource": "4.0.0", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Http": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Http.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.NameResolution/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Principal.Windows": "4.0.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.NameResolution.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/System.Net.Primitives.dll": {} + } + }, + "System.Net.Requests/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Net.Http": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Net.WebHeaderCollection": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Net.Requests.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Security/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Tracing": "4.1.0", + "System.Globalization": "4.0.11", + "System.Globalization.Extensions": "4.0.1", + "System.IO": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Claims": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Security.Cryptography.X509Certificates": "4.1.0", + "System.Security.Principal": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11", + "System.Threading.ThreadPool": "4.0.10", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Security": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Security.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Sockets/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Net.Primitives": "4.0.11", + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Net.Sockets.dll": {} + } + }, + "System.Net.WebHeaderCollection/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Numerics.Vectors/4.1.1": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Numerics.Vectors.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.ObjectModel/4.0.12": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": {} + } + }, + "System.Reflection/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.IO": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": {} + } + }, + "System.Reflection.DispatchProxy/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Reflection.Emit/4.0.1": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.1": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.1": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Metadata/1.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Immutable": "1.2.0", + "System.Diagnostics.Debug": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Reflection.Metadata.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Reflection.Primitives/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": {} + } + }, + "System.Reflection.TypeExtensions/4.1.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.Reader/4.0.0": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Resources.Reader.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Resources.ResourceManager/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Globalization": "4.0.11", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": {} + } + }, + "System.Runtime.Extensions/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.1/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Loader/4.0.0": { + "type": "package", + "dependencies": { + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.5/_._": {} + }, + "runtime": { + "lib/netstandard1.5/_._": {} + } + }, + "System.Runtime.Numerics/4.0.1": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.Numerics.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + } + }, + "System.Security.Claims/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Security.Principal": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Security.Cryptography.Algorithms/4.2.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/4.2.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Primitives/4.0.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.1.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Globalization.Calendars": "4.0.1", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.Numerics": "4.0.1", + "System.Security.Cryptography.Algorithms": "4.2.0", + "System.Security.Cryptography.Cng": "4.2.0", + "System.Security.Cryptography.Csp": "4.0.0", + "System.Security.Cryptography.Encoding": "4.0.0", + "System.Security.Cryptography.OpenSsl": "4.0.0", + "System.Security.Cryptography.Primitives": "4.0.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0", + "runtime.native.System.Net.Http": "4.0.1", + "runtime.native.System.Security.Cryptography": "4.0.0" + }, + "compile": { + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.6/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Principal/4.0.1": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Security.Principal.dll": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Security.Principal.Windows/4.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.Win32.Primitives": "4.0.1", + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Security.Claims": "4.0.1", + "System.Security.Principal": "4.0.1", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": {} + } + }, + "System.Text.Encoding.CodePages/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.Handles": "4.0.1", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding.Extensions/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0", + "System.Text.Encoding": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} + } + }, + "System.Text.RegularExpressions/4.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Globalization": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.0.11": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Overlapped/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard1.3/_._": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Threading.Tasks/4.0.11": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": {} + } + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} + }, + "runtime": { + "lib/netstandard1.1/_._": {} + } + }, + "System.Threading.Tasks.Extensions/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Runtime": "4.1.0", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} + } + }, + "System.Threading.Tasks.Parallel/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.Thread/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.ThreadPool/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.1.0", + "System.Runtime.Handles": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Threading.Timer/4.0.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.2/System.Threading.Timer.dll": {} + } + }, + "System.Xml.ReaderWriter/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.IO.FileSystem.Primitives": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Text.Encoding.Extensions": "4.0.11", + "System.Text.RegularExpressions": "4.1.0", + "System.Threading.Tasks": "4.0.11", + "System.Threading.Tasks.Extensions": "4.0.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tools": "4.0.1", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Text.Encoding": "4.0.11", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XPath/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + }, + "System.Xml.XPath.XDocument/4.0.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Xml.ReaderWriter": "4.0.11", + "System.Xml.XDocument": "4.0.11", + "System.Xml.XPath": "4.0.1" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/_._": {} + } + } + } + }, + "libraries": { + "Libuv/1.9.0": { + "sha512": "R8WOXQyvM/qtpss3OOAAHrvTAXjk3sU2Jycpn9b4o0d/V64odAveBG8iQBKv4Rn6y7IRsQj68TftGMO9mUducg==", + "type": "package", + "path": "Libuv/1.9.0", + "files": [ + "Libuv.1.9.0.nupkg.sha512", + "Libuv.nuspec", + "License.txt", + "runtimes/debian-x64/native/libuv.so", + "runtimes/fedora-x64/native/libuv.so", + "runtimes/opensuse-x64/native/libuv.so", + "runtimes/osx/native/libuv.dylib", + "runtimes/rhel-x64/native/libuv.so", + "runtimes/win7-arm/native/libuv.dll", + "runtimes/win7-x64/native/libuv.dll", + "runtimes/win7-x86/native/libuv.dll" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/1.1.0": { + "sha512": "DQBn3skrfcDH4k7D0U7Iy0p19Rgh9G5iVsSLwb2wKVXmVNNMerg62paMsbXvbPoAXmo/mswV81kFu3t233iqzg==", + "type": "package", + "path": "Microsoft.CodeAnalysis.Analyzers/1.1.0", + "files": [ + "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", + "Microsoft.CodeAnalysis.Analyzers.nuspec", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/1.3.0": { + "sha512": "c4MpVNVkXkeJbHAvrAtpZti8R7Fit7PL+Wxq6wZyudsZ/cUEp/h6owq1SgU6mlmEpkUjIkX5bK6z4VHeV4DfKA==", + "type": "package", + "path": "Microsoft.CodeAnalysis.Common/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.Common.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.dll", + "lib/net45/Microsoft.CodeAnalysis.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" + ] + }, + "Microsoft.CodeAnalysis.CSharp/1.3.0": { + "sha512": "l8wItUjeoiCQ4yNh3LAfmFUe1oZ/c+JhUSSGDw50HURu1c1Pvjt8rNJ7Mu4mwN7GiIHS/o+zVLiuBxs/fzI19A==", + "type": "package", + "path": "Microsoft.CodeAnalysis.CSharp/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.CSharp.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" + ] + }, + "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { + "sha512": "1e7G/c5WBVvXurbiyO5Xh7/9JVu4JfnuvmGe2IcsIdryvKfWnhLk36p84dEZwxQ2FCbch6JWn/xGUzTXXhVz0Q==", + "type": "package", + "path": "Microsoft.CodeAnalysis.VisualBasic/1.3.0", + "files": [ + "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", + "Microsoft.CodeAnalysis.VisualBasic.nuspec", + "ThirdPartyNotices.rtf", + "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", + "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", + "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" + ] + }, + "Microsoft.CSharp/4.0.1": { + "sha512": "XaADFLAIOncVa+cCzhZjnAmqUpiDlkcAl5e/rlHqmJkcqiYn+WYyZrtM2nWdhodNs+evRyg4wXSnvs1vkoleMQ==", + "type": "package", + "path": "Microsoft.CSharp/4.0.1", + "files": [ + "Microsoft.CSharp.4.0.1.nupkg.sha512", + "Microsoft.CSharp.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.NETCore.App/1.0.0": { + "sha512": "wCaPr6INGtw/mrBld2b6tKZoVtMnXBJoRHPjDf0lyBVvT37IG+oN2bSgbQgexp+sd+QHtzJ3mu3pxng0CEuv9g==", + "type": "package", + "path": "Microsoft.NETCore.App/1.0.0", + "files": [ + "Microsoft.NETCore.App.1.0.0.nupkg.sha512", + "Microsoft.NETCore.App.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netcoreapp1.0/_._" + ] + }, + "Microsoft.NETCore.DotNetHost/1.0.1": { + "sha512": "drmQROPm5utHQJfaIT0TFwQOuMop7hAJfXHQQ7EIZeVFninr6Iu4/UB3eKLPlODa2qjAWMsUUfiswXo0wBjO+g==", + "type": "package", + "path": "Microsoft.NETCore.DotNetHost/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHost.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { + "sha512": "0NdjfuteMXC+qBQyNysrSFVJ8r29boAjlvlMnLYql1X4QTfcYmWCUgFWWWGogtx/MC1RWH2riPgJ77enNm1QWw==", + "type": "package", + "path": "Microsoft.NETCore.DotNetHostPolicy/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHostPolicy.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.DotNetHostResolver/1.0.1": { + "sha512": "LhPQ2NH748RVJaI9sxA8UzS0fKYoaezTbkft6PGpsocqqsejyvHYi5CAul+2F/rgBpTASUH0JzpjVnkiHnFA0Q==", + "type": "package", + "path": "Microsoft.NETCore.DotNetHostResolver/1.0.1", + "files": [ + "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", + "Microsoft.NETCore.DotNetHostResolver.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Jit/1.0.2": { + "sha512": "DSP5BlZ/Fu7Cfhkd2CtAt6EZOiOlaRwcPYKkYElN9LBLr1h5bxf7BbMOnLGXFwBBtEFiKjmHK8/tsZAG8Sn/fg==", + "type": "package", + "path": "Microsoft.NETCore.Jit/1.0.2", + "files": [ + "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", + "Microsoft.NETCore.Jit.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Platforms/1.0.1": { + "sha512": "T/LgCB0BL7RK71g1sMvqsofDUPWD5tUrLCl6S/a9u5iYKeUkBJlwHNXVrjF0meoUI4/3dtfDYuIPh9UrBlgmOw==", + "type": "package", + "path": "Microsoft.NETCore.Platforms/1.0.1", + "files": [ + "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Platforms.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.json" + ] + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { + "sha512": "rU8ccMrcxuZ4BiJ7DBuzDI4blsg27p7ulP6cgydILvlGTjaKs1+vaIxr29gtQIThQsJ70H/lxjiGG4K6Mt/7CA==", + "type": "package", + "path": "Microsoft.NETCore.Runtime.CoreCLR/1.0.2", + "files": [ + "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", + "Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.NETCore.Targets/1.0.1": { + "sha512": "ciEwIQjtqSFLbNh+Cg4Rbi5saNjbRFy7bxi8gY7kPDHnr4Z8xVFgtBTOY24cfxx7FJYZ0MPRMc4Qhn8rFJIx0A==", + "type": "package", + "path": "Microsoft.NETCore.Targets/1.0.1", + "files": [ + "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Targets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.json" + ] + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1": { + "sha512": "WM1T+WUvi1UbFGHzP7Z1t7SlhCMaOPaknL5BCtUqwM3FPiQdhy+dZzm/vvE6E/1vC/M3Ea/rNiWV9yfVgM9mgQ==", + "type": "package", + "path": "Microsoft.NETCore.Windows.ApiSets/1.0.1", + "files": [ + "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", + "Microsoft.NETCore.Windows.ApiSets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.json" + ] + }, + "Microsoft.VisualBasic/10.0.1": { + "sha512": "K1mxxLGUicXpzTPSkEqxdglBem5v4NmqTqeg03gpxdzsfI/I0BaWYtc9JBD0mIOfRGp6uM9M5utgZiYJqAxyoA==", + "type": "package", + "path": "Microsoft.VisualBasic/10.0.1", + "files": [ + "Microsoft.VisualBasic.10.0.1.nupkg.sha512", + "Microsoft.VisualBasic.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/Microsoft.VisualBasic.dll", + "lib/netstandard1.3/Microsoft.VisualBasic.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.VisualBasic.dll", + "ref/netcore50/Microsoft.VisualBasic.xml", + "ref/netcore50/de/Microsoft.VisualBasic.xml", + "ref/netcore50/es/Microsoft.VisualBasic.xml", + "ref/netcore50/fr/Microsoft.VisualBasic.xml", + "ref/netcore50/it/Microsoft.VisualBasic.xml", + "ref/netcore50/ja/Microsoft.VisualBasic.xml", + "ref/netcore50/ko/Microsoft.VisualBasic.xml", + "ref/netcore50/ru/Microsoft.VisualBasic.xml", + "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", + "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/Microsoft.VisualBasic.dll", + "ref/netstandard1.1/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", + "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._" + ] + }, + "Microsoft.Win32.Primitives/4.0.1": { + "sha512": "l0ZrqK6NAJ/PBt6NPSloZ772BusAC6o0qJyI3PL9s8M+649hvuK++aEJ/KYZ7gtMjmWphrdhYoL6AhUVw/qCpQ==", + "type": "package", + "path": "Microsoft.Win32.Primitives/4.0.1", + "files": [ + "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", + "Microsoft.Win32.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.Win32.Registry/4.0.0": { + "sha512": "QZQsMYyHWyeeNHSqn6YZVprctxbhZ6QnK9os0kRHxm1LTdFPnw+u21Kj6+H5CLW9WCEnkTZxvrnNTuFLkQ4c1Q==", + "type": "package", + "path": "Microsoft.Win32.Registry/4.0.0", + "files": [ + "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", + "Microsoft.Win32.Registry.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/Microsoft.Win32.Registry.dll", + "ref/net46/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", + "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" + ] + }, + "NETStandard.Library/1.6.0": { + "sha512": "Jbpa0wLmcErrrp3TjO7uS/Bxwft6HWlL9wC8+LxwC8tHw/pcdDQVvND/9lLiX8Rn0kY+s1/EOz9yWie2TQ5gAQ==", + "type": "package", + "path": "NETStandard.Library/1.6.0", + "files": [ + "NETStandard.Library.1.6.0.nupkg.sha512", + "NETStandard.Library.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt" + ] + }, + "Newtonsoft.Json/9.0.1": { + "sha512": "U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==", + "type": "package", + "path": "Newtonsoft.Json/9.0.1", + "files": [ + "Newtonsoft.Json.9.0.1.nupkg.sha512", + "Newtonsoft.Json.nuspec", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", + "tools/install.ps1" + ] + }, + "runtime.native.System/4.0.0": { + "sha512": "41x2lcS1kEVczKU1ryUZykYDyw3CMCdTeUOwt6A1/FJGjWHSxPQm0U/JU4fC9bqmnD7vA4q3uWEaJ1IzrmyJPw==", + "type": "package", + "path": "runtime.native.System/4.0.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.4.0.0.nupkg.sha512", + "runtime.native.System.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.1.0": { + "sha512": "L9gcA8G8BREAHoWcOstDugB4/UVbTuQ38UV/Ju4b9IuwVqK80tE1pgy/+LeSnIiF9ws1KW3XQEwl3vb3KSEXXA==", + "type": "package", + "path": "runtime.native.System.IO.Compression/4.1.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", + "runtime.native.System.IO.Compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.0.1": { + "sha512": "MTLNQABiRAiyju80+M+kZUMUlTRP/V0ofcD6vdRzZS1I5ffr0KSxi//21lAS3hLEJfJ623Zi0btO4fR8dnPKPg==", + "type": "package", + "path": "runtime.native.System.Net.Http/4.0.1", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", + "runtime.native.System.Net.Http.nuspec" + ] + }, + "runtime.native.System.Net.Security/4.0.1": { + "sha512": "d3QUrmQ8fg3qLxAVYwS6B7rizx3+mmf6CbN3+6x43yYwUp27f74BwDPc2jLIgKPPwTzitangLWi+9YqqiES88g==", + "type": "package", + "path": "runtime.native.System.Net.Security/4.0.1", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", + "runtime.native.System.Net.Security.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography/4.0.0": { + "sha512": "6gLQEjlZ2e8AmNlH0YDd102/hZVICNe1folF5RenqK25X852P/IQ/llAwCJVoAKUQlpa8KDrLVuzhjX3JPawRA==", + "type": "package", + "path": "runtime.native.System.Security.Cryptography/4.0.0", + "files": [ + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", + "runtime.native.System.Security.Cryptography.nuspec" + ] + }, + "System.AppContext/4.1.0": { + "sha512": "kTXEWzCijc7u4XmD2zfHYmyyrxqc0eqBHeuFMIlwNikCqFJC6AiHfEIZYlZk8HbVTc2A8UWLTBOpBPMFflrqpw==", + "type": "package", + "path": "System.AppContext/4.1.0", + "files": [ + "System.AppContext.4.1.0.nupkg.sha512", + "System.AppContext.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll" + ] + }, + "System.Buffers/4.0.0": { + "sha512": "6hah3sqjZCX6Ba37GRGUY8vslT+KKqLwRom33XExKPh+yYFTA4X2w6fjMVD2wdOuahNr1M/R4Z6I+ogEyciHGQ==", + "type": "package", + "path": "System.Buffers/4.0.0", + "files": [ + "System.Buffers.4.0.0.nupkg.sha512", + "System.Buffers.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/.xml", + "lib/netstandard1.1/System.Buffers.dll" + ] + }, + "System.Collections/4.0.11": { + "sha512": "GetjWwFh14cMNU77nbTHe4Zx49WxFc78Bpwh/JkyQBmDVpLlwnUJQGHe2F1tdDaJMlj9stL1UHTFN/6bcjVv0A==", + "type": "package", + "path": "System.Collections/4.0.11", + "files": [ + "System.Collections.4.0.11.nupkg.sha512", + "System.Collections.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Collections.Concurrent/4.0.12": { + "sha512": "s6klY8LSbB2bOLGUAaEd1uuKgSk+uBRVknh9CnsXEIgHrEV66SAjZyC0IivkCxdsOUD4PcpgWvTpH/+p0SeyJA==", + "type": "package", + "path": "System.Collections.Concurrent/4.0.12", + "files": [ + "System.Collections.Concurrent.4.0.12.nupkg.sha512", + "System.Collections.Concurrent.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Collections.Immutable/1.2.0": { + "sha512": "NJM6bLtu0XMTIL1tbu4YvePct9oytxbrXGpKDkSBTowmWXtjw+UgK8duC/5QUZ4KP7sgJ82wWj0zJ7o/EiyQiQ==", + "type": "package", + "path": "System.Collections.Immutable/1.2.0", + "files": [ + "System.Collections.Immutable.1.2.0.nupkg.sha512", + "System.Collections.Immutable.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" + ] + }, + "System.Collections.NonGeneric/4.0.1": { + "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", + "type": "package", + "path": "System.Collections.NonGeneric/4.0.1", + "files": [ + "System.Collections.NonGeneric.4.0.1.nupkg.sha512", + "System.Collections.NonGeneric.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Collections.NonGeneric.dll", + "lib/netstandard1.3/System.Collections.NonGeneric.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Collections.NonGeneric.dll", + "ref/netstandard1.3/System.Collections.NonGeneric.dll", + "ref/netstandard1.3/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", + "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.ComponentModel/4.0.1": { + "sha512": "+WQW/7ThcXEyOmX48xzbn6k9wgpZUWFKal7lPaansIGp5KNt0Sqs4yAn48Hk+KSineDpmjRIfFyr9x7p7IX+WQ==", + "type": "package", + "path": "System.ComponentModel/4.0.1", + "files": [ + "System.ComponentModel.4.0.1.nupkg.sha512", + "System.ComponentModel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ComponentModel.dll", + "lib/netstandard1.3/System.ComponentModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ComponentModel.dll", + "ref/netcore50/System.ComponentModel.xml", + "ref/netcore50/de/System.ComponentModel.xml", + "ref/netcore50/es/System.ComponentModel.xml", + "ref/netcore50/fr/System.ComponentModel.xml", + "ref/netcore50/it/System.ComponentModel.xml", + "ref/netcore50/ja/System.ComponentModel.xml", + "ref/netcore50/ko/System.ComponentModel.xml", + "ref/netcore50/ru/System.ComponentModel.xml", + "ref/netcore50/zh-hans/System.ComponentModel.xml", + "ref/netcore50/zh-hant/System.ComponentModel.xml", + "ref/netstandard1.0/System.ComponentModel.dll", + "ref/netstandard1.0/System.ComponentModel.xml", + "ref/netstandard1.0/de/System.ComponentModel.xml", + "ref/netstandard1.0/es/System.ComponentModel.xml", + "ref/netstandard1.0/fr/System.ComponentModel.xml", + "ref/netstandard1.0/it/System.ComponentModel.xml", + "ref/netstandard1.0/ja/System.ComponentModel.xml", + "ref/netstandard1.0/ko/System.ComponentModel.xml", + "ref/netstandard1.0/ru/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", + "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.ComponentModel.Annotations/4.1.0": { + "sha512": "7e7YTOa1lmKn/SBiIH9OTwdt1gzvw57OleO8J1lDF3Mk4VjEmtBcao6ER3ESvsRYoZ/U9YiHj2g1mhX+fw556Q==", + "type": "package", + "path": "System.ComponentModel.Annotations/4.1.0", + "files": [ + "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", + "System.ComponentModel.Annotations.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Console/4.0.0": { + "sha512": "mDEy6iQe09abm2HpuCjSfeJMt8k4Bu7wnqqvfvpNn87A42NyjCbmJ3v1gF/P2M1NoyyoEcMyS9MO8rxeZF761Q==", + "type": "package", + "path": "System.Console/4.0.0", + "files": [ + "System.Console.4.0.0.nupkg.sha512", + "System.Console.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.Debug/4.0.11": { + "sha512": "GOUwHInyMvSBKENMfKGgL+trlGq27LOUqiggBMC69GntL/k0G4/3Dh7qqyp9aVZyraja5jy+YLs5R+5w3JZXeg==", + "type": "package", + "path": "System.Diagnostics.Debug/4.0.11", + "files": [ + "System.Diagnostics.Debug.4.0.11.nupkg.sha512", + "System.Diagnostics.Debug.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.DiagnosticSource/4.0.0": { + "sha512": "gqW2/wPdjw/O0c23ck8JUDWHsa57MqxE4yaqaL01KpLHoaC6IabRV3wLSJBsl6tnCDS4EJExIk5gSMvBJT9L8g==", + "type": "package", + "path": "System.Diagnostics.DiagnosticSource/4.0.0", + "files": [ + "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", + "System.Diagnostics.DiagnosticSource.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" + ] + }, + "System.Diagnostics.FileVersionInfo/4.0.0": { + "sha512": "/kVXI1j/fWw8bumaMmoA2Actx/pJGOrFucfEXcLBI5aRatSH5Mqk1hS49Q5REypcV32rbOI0agg/14cEWKpz2Q==", + "type": "package", + "path": "System.Diagnostics.FileVersionInfo/4.0.0", + "files": [ + "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", + "System.Diagnostics.FileVersionInfo.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.FileVersionInfo.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.FileVersionInfo.dll", + "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", + "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" + ] + }, + "System.Diagnostics.Process/4.1.0": { + "sha512": "2aYQppWQviG/0OKXTwe7FOnHDZLdCCvjN3u6zUw40lxrNzhRhlrz95uPcX/xSHxcxRpomqLhPKsp2R47yuWiQw==", + "type": "package", + "path": "System.Diagnostics.Process/4.1.0", + "files": [ + "System.Diagnostics.Process.4.1.0.nupkg.sha512", + "System.Diagnostics.Process.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.Process.dll", + "lib/net461/System.Diagnostics.Process.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.Process.dll", + "ref/net461/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.dll", + "ref/netstandard1.3/System.Diagnostics.Process.xml", + "ref/netstandard1.3/de/System.Diagnostics.Process.xml", + "ref/netstandard1.3/es/System.Diagnostics.Process.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.3/it/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", + "ref/netstandard1.4/System.Diagnostics.Process.dll", + "ref/netstandard1.4/System.Diagnostics.Process.xml", + "ref/netstandard1.4/de/System.Diagnostics.Process.xml", + "ref/netstandard1.4/es/System.Diagnostics.Process.xml", + "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", + "ref/netstandard1.4/it/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", + "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", + "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win/lib/net46/System.Diagnostics.Process.dll", + "runtimes/win/lib/net461/System.Diagnostics.Process.dll", + "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.Diagnostics.StackTrace/4.0.1": { + "sha512": "ZnFIBpSe/Uulh7R7nXorTnkL2POzkaFUL22YXBjthPeLyZSbXm8BMtDgCx1btgMFPF9oVQOS/nmzt4gJSM5z0A==", + "type": "package", + "path": "System.Diagnostics.StackTrace/4.0.1", + "files": [ + "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", + "System.Diagnostics.StackTrace.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.StackTrace.dll", + "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.StackTrace.dll", + "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", + "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" + ] + }, + "System.Diagnostics.Tools/4.0.1": { + "sha512": "oFPexUie0mHe3sVWqdvmmvszsm+FikNSeZToJc9lQ412eILHMF3f1WzXlqKJayUC9klA8WNsREtTnk1A5P+Ggg==", + "type": "package", + "path": "System.Diagnostics.Tools/4.0.1", + "files": [ + "System.Diagnostics.Tools.4.0.1.nupkg.sha512", + "System.Diagnostics.Tools.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Diagnostics.Tracing/4.1.0": { + "sha512": "vXwGhvfM0beIjP18dKIMPgx0L9mW06JwMwaY82ZQY6DlZrrR9mWyyOHW2u7ntm5A24yxOhGU60Ylo/Eu6DPoqw==", + "type": "package", + "path": "System.Diagnostics.Tracing/4.1.0", + "files": [ + "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", + "System.Diagnostics.Tracing.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Dynamic.Runtime/4.0.11": { + "sha512": "arcukY36dVZoxQD9tPqAC7qSn1khD5anIUMxIAsLFTKdy/il5yxXIw/gELCCIojxE5WDSiL54c5ENjxemLvY1A==", + "type": "package", + "path": "System.Dynamic.Runtime/4.0.11", + "files": [ + "System.Dynamic.Runtime.4.0.11.nupkg.sha512", + "System.Dynamic.Runtime.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netstandard1.3/System.Dynamic.Runtime.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Dynamic.Runtime.dll", + "ref/netcore50/System.Dynamic.Runtime.xml", + "ref/netcore50/de/System.Dynamic.Runtime.xml", + "ref/netcore50/es/System.Dynamic.Runtime.xml", + "ref/netcore50/fr/System.Dynamic.Runtime.xml", + "ref/netcore50/it/System.Dynamic.Runtime.xml", + "ref/netcore50/ja/System.Dynamic.Runtime.xml", + "ref/netcore50/ko/System.Dynamic.Runtime.xml", + "ref/netcore50/ru/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/System.Dynamic.Runtime.dll", + "ref/netstandard1.0/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/System.Dynamic.Runtime.dll", + "ref/netstandard1.3/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" + ] + }, + "System.Globalization/4.0.11": { + "sha512": "93EFhs2UoueVm5ZbDtoNv+gjlZgfV1FR1N9JS1XzFfe0VWfYEpi2zDRbavv71VtNKRpS7L19JGvkWXVaSUlKTQ==", + "type": "package", + "path": "System.Globalization/4.0.11", + "files": [ + "System.Globalization.4.0.11.nupkg.sha512", + "System.Globalization.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Globalization.Calendars/4.0.1": { + "sha512": "ZPoYOVSNSTbaSR/lDaYZdAtxMu5xsOSsu46LpNPlPgLc2mAbo/nLmkyU8S0A90XthMhhP0CT4GBYn8StVA1Hlw==", + "type": "package", + "path": "System.Globalization.Calendars/4.0.1", + "files": [ + "System.Globalization.Calendars.4.0.1.nupkg.sha512", + "System.Globalization.Calendars.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Globalization.Extensions/4.0.1": { + "sha512": "f6x3H/Lpw6K1MBGbC741p6y6BuVqVG2m0mCTF+XVCZOxxIOVS1NvUal6jukvRt339kt/XFvPI8FiPrMCB+35KA==", + "type": "package", + "path": "System.Globalization.Extensions/4.0.1", + "files": [ + "System.Globalization.Extensions.4.0.1.nupkg.sha512", + "System.Globalization.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" + ] + }, + "System.IO/4.1.0": { + "sha512": "JrXp07/ss3zp+XxstCDw0+nZ/br7btoR5atmKTm1KpbOjsWg/QLwGS8G06hwPSuGi2Gg72aT87XkmJPGTi/sDw==", + "type": "package", + "path": "System.IO/4.1.0", + "files": [ + "System.IO.4.1.0.nupkg.sha512", + "System.IO.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.Compression/4.1.0": { + "sha512": "eBdkXbRWXGtZq60g4xfAtHaMRrMls+V7kMZANCGq4lYVKiDhpa9T8UP/DgmAnm3sXQ7H0bwdj9CpIIq4+ap5Iw==", + "type": "package", + "path": "System.IO.Compression/4.1.0", + "files": [ + "System.IO.Compression.4.1.0.nupkg.sha512", + "System.IO.Compression.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" + ] + }, + "System.IO.Compression.ZipFile/4.0.1": { + "sha512": "gww8ubYRDaNbdObTWjxm3282U5n1IwWdefVsJDYY0GXjfoKaHaKdY9QAawe+EFoQLFcOMb2XKYj2SLrWNI+Uig==", + "type": "package", + "path": "System.IO.Compression.ZipFile/4.0.1", + "files": [ + "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", + "System.IO.Compression.ZipFile.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem/4.0.1": { + "sha512": "Yu1IGorsj0jZuIj2iAqlvR1bJ4ONT1vK77jaD0npgzTP3owP2PXZFoVekMMtkO2TO/0e/zXBVOmDCC4GhIpysg==", + "type": "package", + "path": "System.IO.FileSystem/4.0.1", + "files": [ + "System.IO.FileSystem.4.0.1.nupkg.sha512", + "System.IO.FileSystem.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem.Primitives/4.0.1": { + "sha512": "XhOqbO9JWdHU+d6ZkILXA96Yz3+XTwznJ78uyhtCgXharLT4mkhlBNNt2eZ8ynV9ChvyQusD7grQvA4H2lC+1Q==", + "type": "package", + "path": "System.IO.FileSystem.Primitives/4.0.1", + "files": [ + "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", + "System.IO.FileSystem.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.IO.FileSystem.Watcher/4.0.0": { + "sha512": "1Ai0CkKSOIuei9Ht04Ug5e/MHa4wuRDgl+yJDZcz8IrDclLDHodqr+lA9ziUncuHT5JbizLzMWEcM9KZW6jbJw==", + "type": "package", + "path": "System.IO.FileSystem.Watcher/4.0.0", + "files": [ + "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", + "System.IO.FileSystem.Watcher.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Watcher.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Watcher.dll", + "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", + "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.IO.MemoryMappedFiles/4.0.0": { + "sha512": "I6FvO5VWpPw/VW1DEuME9+jY7EnU3EiPvsfQILWWT7GQ7xirNg3rDOB+w1eWyAs8i8uJTQmt+wiMU1CJH8WF5w==", + "type": "package", + "path": "System.IO.MemoryMappedFiles/4.0.0", + "files": [ + "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", + "System.IO.MemoryMappedFiles.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.MemoryMappedFiles.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.MemoryMappedFiles.dll", + "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", + "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", + "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", + "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" + ] + }, + "System.IO.UnmanagedMemoryStream/4.0.1": { + "sha512": "C/q7XR1nJq4vk6rdnlR3nMRcIpWSP9M8vpfTQ8lTTMW586c0MwXUVpvthGzazELKRr+uY+juJVRfcJCiq8i1Rw==", + "type": "package", + "path": "System.IO.UnmanagedMemoryStream/4.0.1", + "files": [ + "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", + "System.IO.UnmanagedMemoryStream.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.UnmanagedMemoryStream.dll", + "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.UnmanagedMemoryStream.dll", + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", + "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", + "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq/4.1.0": { + "sha512": "AvDpmWdu5s2MdyCmrHjyeHed10zGSLLq7kjaZPDcdGz3HPOwRfG6mNcK6jL0XTGFbNfH6C4/5H6c9CuVkV2xqg==", + "type": "package", + "path": "System.Linq/4.1.0", + "files": [ + "System.Linq.4.1.0.nupkg.sha512", + "System.Linq.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq.Expressions/4.1.0": { + "sha512": "xSoEkwQSrkEx+kgs6maYU4Zn3Rkb0o/FvRyjDSgFsbKU/QPUlhhvAt2zc46WAqTqIaK3M/rYO5mdGAMAyPnQRw==", + "type": "package", + "path": "System.Linq.Expressions/4.1.0", + "files": [ + "System.Linq.Expressions.4.1.0.nupkg.sha512", + "System.Linq.Expressions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" + ] + }, + "System.Linq.Parallel/4.0.1": { + "sha512": "J7R9tTmkEIjuqh6pieeSmXf7m/8evxvHDAWZ2al/p74EHHeQRa3zTOaWi5UpOzCoKGB20QjFd+9hV6iM3CypTw==", + "type": "package", + "path": "System.Linq.Parallel/4.0.1", + "files": [ + "System.Linq.Parallel.4.0.1.nupkg.sha512", + "System.Linq.Parallel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Linq.Parallel.dll", + "lib/netstandard1.3/System.Linq.Parallel.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Linq.Parallel.dll", + "ref/netcore50/System.Linq.Parallel.xml", + "ref/netcore50/de/System.Linq.Parallel.xml", + "ref/netcore50/es/System.Linq.Parallel.xml", + "ref/netcore50/fr/System.Linq.Parallel.xml", + "ref/netcore50/it/System.Linq.Parallel.xml", + "ref/netcore50/ja/System.Linq.Parallel.xml", + "ref/netcore50/ko/System.Linq.Parallel.xml", + "ref/netcore50/ru/System.Linq.Parallel.xml", + "ref/netcore50/zh-hans/System.Linq.Parallel.xml", + "ref/netcore50/zh-hant/System.Linq.Parallel.xml", + "ref/netstandard1.1/System.Linq.Parallel.dll", + "ref/netstandard1.1/System.Linq.Parallel.xml", + "ref/netstandard1.1/de/System.Linq.Parallel.xml", + "ref/netstandard1.1/es/System.Linq.Parallel.xml", + "ref/netstandard1.1/fr/System.Linq.Parallel.xml", + "ref/netstandard1.1/it/System.Linq.Parallel.xml", + "ref/netstandard1.1/ja/System.Linq.Parallel.xml", + "ref/netstandard1.1/ko/System.Linq.Parallel.xml", + "ref/netstandard1.1/ru/System.Linq.Parallel.xml", + "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", + "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Linq.Queryable/4.0.1": { + "sha512": "D07uaRFTD+jLHZ91sVDFcZU0WivI3QrSishVDAHhQeC/m+dax+XD3XqC0OGpdAz7zEMunj5trg5HrmAHuRd+Yw==", + "type": "package", + "path": "System.Linq.Queryable/4.0.1", + "files": [ + "System.Linq.Queryable.4.0.1.nupkg.sha512", + "System.Linq.Queryable.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Linq.Queryable.dll", + "lib/netstandard1.3/System.Linq.Queryable.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Linq.Queryable.dll", + "ref/netcore50/System.Linq.Queryable.xml", + "ref/netcore50/de/System.Linq.Queryable.xml", + "ref/netcore50/es/System.Linq.Queryable.xml", + "ref/netcore50/fr/System.Linq.Queryable.xml", + "ref/netcore50/it/System.Linq.Queryable.xml", + "ref/netcore50/ja/System.Linq.Queryable.xml", + "ref/netcore50/ko/System.Linq.Queryable.xml", + "ref/netcore50/ru/System.Linq.Queryable.xml", + "ref/netcore50/zh-hans/System.Linq.Queryable.xml", + "ref/netcore50/zh-hant/System.Linq.Queryable.xml", + "ref/netstandard1.0/System.Linq.Queryable.dll", + "ref/netstandard1.0/System.Linq.Queryable.xml", + "ref/netstandard1.0/de/System.Linq.Queryable.xml", + "ref/netstandard1.0/es/System.Linq.Queryable.xml", + "ref/netstandard1.0/fr/System.Linq.Queryable.xml", + "ref/netstandard1.0/it/System.Linq.Queryable.xml", + "ref/netstandard1.0/ja/System.Linq.Queryable.xml", + "ref/netstandard1.0/ko/System.Linq.Queryable.xml", + "ref/netstandard1.0/ru/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.Http/4.1.0": { + "sha512": "BkAwb17jMBDijqtrjf8Tp8gtVK76nJWmMOgCC8vGP7PHIstlrGADxZH5AP1h0C6xeTGXrsztXVXasjb2A9QWjg==", + "type": "package", + "path": "System.Net.Http/4.1.0", + "files": [ + "System.Net.Http.4.1.0.nupkg.sha512", + "System.Net.Http.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" + ] + }, + "System.Net.NameResolution/4.0.0": { + "sha512": "jkERvZB3hT+eNXFJVAeAmro+AqWcHWdvt+ud0ymHtRn5goyuQ6gRGYj+J64QfuJ18hp6blmWaLDHAuyg3WVLcQ==", + "type": "package", + "path": "System.Net.NameResolution/4.0.0", + "files": [ + "System.Net.NameResolution.4.0.0.nupkg.sha512", + "System.Net.NameResolution.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.NameResolution.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.NameResolution.dll", + "ref/netstandard1.3/System.Net.NameResolution.dll", + "ref/netstandard1.3/System.Net.NameResolution.xml", + "ref/netstandard1.3/de/System.Net.NameResolution.xml", + "ref/netstandard1.3/es/System.Net.NameResolution.xml", + "ref/netstandard1.3/fr/System.Net.NameResolution.xml", + "ref/netstandard1.3/it/System.Net.NameResolution.xml", + "ref/netstandard1.3/ja/System.Net.NameResolution.xml", + "ref/netstandard1.3/ko/System.Net.NameResolution.xml", + "ref/netstandard1.3/ru/System.Net.NameResolution.xml", + "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", + "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", + "runtimes/win/lib/net46/System.Net.NameResolution.dll", + "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", + "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" + ] + }, + "System.Net.Primitives/4.0.11": { + "sha512": "0W1rJnR7bkg/kLU2BnHOLOdvJe9eWkzwd27yoR0zqwk5JjQTDJXFVgzr0joQMqffzCr8GAhOmsQ2Ic49VnXytw==", + "type": "package", + "path": "System.Net.Primitives/4.0.11", + "files": [ + "System.Net.Primitives.4.0.11.nupkg.sha512", + "System.Net.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.Requests/4.0.11": { + "sha512": "xbqbJz9ulEo77Trphha4CBiolIki7Go2xp2oEVBoSAzM+O4jf1yqAct9KxC0XPchBcywAB2szLCY74DlizAYXg==", + "type": "package", + "path": "System.Net.Requests/4.0.11", + "files": [ + "System.Net.Requests.4.0.11.nupkg.sha512", + "System.Net.Requests.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/_._", + "ref/netcore50/System.Net.Requests.dll", + "ref/netcore50/System.Net.Requests.xml", + "ref/netcore50/de/System.Net.Requests.xml", + "ref/netcore50/es/System.Net.Requests.xml", + "ref/netcore50/fr/System.Net.Requests.xml", + "ref/netcore50/it/System.Net.Requests.xml", + "ref/netcore50/ja/System.Net.Requests.xml", + "ref/netcore50/ko/System.Net.Requests.xml", + "ref/netcore50/ru/System.Net.Requests.xml", + "ref/netcore50/zh-hans/System.Net.Requests.xml", + "ref/netcore50/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.0/System.Net.Requests.dll", + "ref/netstandard1.0/System.Net.Requests.xml", + "ref/netstandard1.0/de/System.Net.Requests.xml", + "ref/netstandard1.0/es/System.Net.Requests.xml", + "ref/netstandard1.0/fr/System.Net.Requests.xml", + "ref/netstandard1.0/it/System.Net.Requests.xml", + "ref/netstandard1.0/ja/System.Net.Requests.xml", + "ref/netstandard1.0/ko/System.Net.Requests.xml", + "ref/netstandard1.0/ru/System.Net.Requests.xml", + "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.1/System.Net.Requests.dll", + "ref/netstandard1.1/System.Net.Requests.xml", + "ref/netstandard1.1/de/System.Net.Requests.xml", + "ref/netstandard1.1/es/System.Net.Requests.xml", + "ref/netstandard1.1/fr/System.Net.Requests.xml", + "ref/netstandard1.1/it/System.Net.Requests.xml", + "ref/netstandard1.1/ja/System.Net.Requests.xml", + "ref/netstandard1.1/ko/System.Net.Requests.xml", + "ref/netstandard1.1/ru/System.Net.Requests.xml", + "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", + "ref/netstandard1.3/System.Net.Requests.dll", + "ref/netstandard1.3/System.Net.Requests.xml", + "ref/netstandard1.3/de/System.Net.Requests.xml", + "ref/netstandard1.3/es/System.Net.Requests.xml", + "ref/netstandard1.3/fr/System.Net.Requests.xml", + "ref/netstandard1.3/it/System.Net.Requests.xml", + "ref/netstandard1.3/ja/System.Net.Requests.xml", + "ref/netstandard1.3/ko/System.Net.Requests.xml", + "ref/netstandard1.3/ru/System.Net.Requests.xml", + "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", + "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", + "runtimes/win/lib/net46/_._", + "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" + ] + }, + "System.Net.Security/4.0.0": { + "sha512": "DAdMigsDUPudVlFUpXuLmIpPixoWF2qg3nWwYPfh03xOdrK+pI2+PudxuxBC8hJJPCED53W/kelFItMT2lgcXQ==", + "type": "package", + "path": "System.Net.Security/4.0.0", + "files": [ + "System.Net.Security.4.0.0.nupkg.sha512", + "System.Net.Security.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Security.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Security.dll", + "ref/netstandard1.3/System.Net.Security.dll", + "ref/netstandard1.3/System.Net.Security.xml", + "ref/netstandard1.3/de/System.Net.Security.xml", + "ref/netstandard1.3/es/System.Net.Security.xml", + "ref/netstandard1.3/fr/System.Net.Security.xml", + "ref/netstandard1.3/it/System.Net.Security.xml", + "ref/netstandard1.3/ja/System.Net.Security.xml", + "ref/netstandard1.3/ko/System.Net.Security.xml", + "ref/netstandard1.3/ru/System.Net.Security.xml", + "ref/netstandard1.3/zh-hans/System.Net.Security.xml", + "ref/netstandard1.3/zh-hant/System.Net.Security.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", + "runtimes/win/lib/net46/System.Net.Security.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", + "runtimes/win7/lib/netcore50/_._" + ] + }, + "System.Net.Sockets/4.1.0": { + "sha512": "Vr4Zun+nSboRmNHxw1Caanhrbawsl/bYqUOmCkRleLny3OdsSU+/Heo5C6DVI9sPAzq2cCWi4FmNzkqVst70mg==", + "type": "package", + "path": "System.Net.Sockets/4.1.0", + "files": [ + "System.Net.Sockets.4.1.0.nupkg.sha512", + "System.Net.Sockets.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Net.WebHeaderCollection/4.0.1": { + "sha512": "PWVHl0iPXu3k16tkKPtcbb+I84QMm0G9WDXX5ax5re33RGpNluW8nSiM+qz+gGunHavDELXZWw8Iqwr+mkoaLw==", + "type": "package", + "path": "System.Net.WebHeaderCollection/4.0.1", + "files": [ + "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", + "System.Net.WebHeaderCollection.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", + "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", + "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Numerics.Vectors/4.1.1": { + "sha512": "pXF7egIi6aKokRdt8O5P4tC9b/3i9VnOZKLEsHj6fj6v1TMqtICfhwom3bcQJpVK6X5TOZTHKOZLcROnr+cjjQ==", + "type": "package", + "path": "System.Numerics.Vectors/4.1.1", + "files": [ + "System.Numerics.Vectors.4.1.1.nupkg.sha512", + "System.Numerics.Vectors.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Numerics.Vectors.dll", + "lib/net46/System.Numerics.Vectors.xml", + "lib/netstandard1.0/System.Numerics.Vectors.dll", + "lib/netstandard1.0/System.Numerics.Vectors.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Numerics.Vectors.dll", + "ref/net46/System.Numerics.Vectors.xml", + "ref/netstandard1.0/System.Numerics.Vectors.dll", + "ref/netstandard1.0/System.Numerics.Vectors.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.ObjectModel/4.0.12": { + "sha512": "O+q402luZF3nRK51XkyePYiBi6WVQeiPriESLWlcMK1NJaR6Afffh0WONmTQTwcka+Z6iiNgQzePli4Gl0oUdg==", + "type": "package", + "path": "System.ObjectModel/4.0.12", + "files": [ + "System.ObjectModel.4.0.12.nupkg.sha512", + "System.ObjectModel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection/4.1.0": { + "sha512": "hnsgRmEC7EQ4r920kkr4njHfM0PbHSmISiM8uWj0xh/tfj2QfBFVQbRY6jzDMIJI9NM180ztaAyu6xXFqJgbiw==", + "type": "package", + "path": "System.Reflection/4.1.0", + "files": [ + "System.Reflection.4.1.0.nupkg.sha512", + "System.Reflection.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.DispatchProxy/4.0.1": { + "sha512": "uc8ys/hjDLRbF3Dgq/h3yOu/scjXwfbA53GZvD5lrJyfMVnjW5I3kW+ohYA8jpiHtuX/qiyymNahHVMjWQ//og==", + "type": "package", + "path": "System.Reflection.DispatchProxy/4.0.1", + "files": [ + "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", + "System.Reflection.DispatchProxy.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", + "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" + ] + }, + "System.Reflection.Emit/4.0.1": { + "sha512": "LY/uzPD3sRNysXaZKMXD+WG5AF3VxDybEcwVQVqHEurO2fRj8lLGhXH3GwubeXbadEiYQ0eE2PeR0auXNtx6HA==", + "type": "package", + "path": "System.Reflection.Emit/4.0.1", + "files": [ + "System.Reflection.Emit.4.0.1.nupkg.sha512", + "System.Reflection.Emit.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/xamarinmac20/_._", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/xamarinmac20/_._" + ] + }, + "System.Reflection.Emit.ILGeneration/4.0.1": { + "sha512": "XfE7FOBbXdtD5uOrRkR6zd6hKLRBp1fpL3HQZbZ0QJW2ZNe7ELHvVZCspBpISMvm3Z7s5vw7hZ9w/yyeFtBEOg==", + "type": "package", + "path": "System.Reflection.Emit.ILGeneration/4.0.1", + "files": [ + "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", + "System.Reflection.Emit.ILGeneration.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "runtimes/aot/lib/netcore50/_._" + ] + }, + "System.Reflection.Emit.Lightweight/4.0.1": { + "sha512": "pOsk7aQYUH90F0fTqnUUUIZJfRBRd+J0ixAdQ593TFY1ISzL7xwKvZxWzEoeA9/elOf9eZawYaN2DdII1RMlqg==", + "type": "package", + "path": "System.Reflection.Emit.Lightweight/4.0.1", + "files": [ + "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", + "System.Reflection.Emit.Lightweight.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "runtimes/aot/lib/netcore50/_._" + ] + }, + "System.Reflection.Extensions/4.0.1": { + "sha512": "IfbmuGxvcwpWuHgvg15l4YAWc/0CPcsFFI+cMhF1Z00Q1ZtnyRYSW677KJIq5x7Oh4U3C6RM0UBbw+IbtD8Ntg==", + "type": "package", + "path": "System.Reflection.Extensions/4.0.1", + "files": [ + "System.Reflection.Extensions.4.0.1.nupkg.sha512", + "System.Reflection.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.Metadata/1.3.0": { + "sha512": "AqzJhKDLd5GV+McOb4nw1E4z6PaDzIdxIpb0QBIjAf4thoTqbg84CxFAfxTB3kzbVSLU9C4NYQyd9R/lU1YIMA==", + "type": "package", + "path": "System.Reflection.Metadata/1.3.0", + "files": [ + "System.Reflection.Metadata.1.3.0.nupkg.sha512", + "System.Reflection.Metadata.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml" + ] + }, + "System.Reflection.Primitives/4.0.1": { + "sha512": "jrEPZZ9lhfNsWYmubLHDHfLA/h/5H0dpq9mLfF8DEL2HwGoysd1QG36Szxt9N0D+NbXSftFQV4rCl7Me+QQGRQ==", + "type": "package", + "path": "System.Reflection.Primitives/4.0.1", + "files": [ + "System.Reflection.Primitives.4.0.1.nupkg.sha512", + "System.Reflection.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Reflection.TypeExtensions/4.1.0": { + "sha512": "oi2XhaXLryqd8IM+rrYAyI0z+ZLBXKBHXQ2pTkW53U0nHeavANuVcSUlKP/gBuyTdLKTtqDex2ZXps/L9oKVzQ==", + "type": "package", + "path": "System.Reflection.TypeExtensions/4.1.0", + "files": [ + "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", + "System.Reflection.TypeExtensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" + ] + }, + "System.Resources.Reader/4.0.0": { + "sha512": "nzI6DUrQKAwSNN7y4PjvpblOXt+4aTcogUV+EwkgeiuWjToUW2m4epup65N8FaLJeQybBpTEDiOhSis3qTC1QQ==", + "type": "package", + "path": "System.Resources.Reader/4.0.0", + "files": [ + "System.Resources.Reader.4.0.0.nupkg.sha512", + "System.Resources.Reader.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Resources.Reader.dll" + ] + }, + "System.Resources.ResourceManager/4.0.1": { + "sha512": "R73oCHfarGDuS724tGXmJsVGzQfk00OGW8JpiAYt/MMzfPu5T/5yYko/sSM97+sy8VMhP2y8083UzshyujageA==", + "type": "package", + "path": "System.Resources.ResourceManager/4.0.1", + "files": [ + "System.Resources.ResourceManager.4.0.1.nupkg.sha512", + "System.Resources.ResourceManager.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime/4.1.0": { + "sha512": "16wNLsqfhKCTcyWxq3EkWbfnCY/maOUqGLq35UOV2EGz99S5te9xgrqCqBkXwL1BnK62mqpxlK/tWt2Zjqp0Eg==", + "type": "package", + "path": "System.Runtime/4.1.0", + "files": [ + "System.Runtime.4.1.0.nupkg.sha512", + "System.Runtime.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.Extensions/4.1.0": { + "sha512": "t6l7jZsg/NcRHxg+276A+nqmJv/RvqsWTSl8LP3ullxyKu7ZK6rvlrsP10fMdDXuQOiusK7+7fOW3ePwbPXbVQ==", + "type": "package", + "path": "System.Runtime.Extensions/4.1.0", + "files": [ + "System.Runtime.Extensions.4.1.0.nupkg.sha512", + "System.Runtime.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.Handles/4.0.1": { + "sha512": "DrLy26SE00IJfn7X+7c09nibQXNP/XExX9+P03Ldu8NoN0b4Qa0x2wt6Ljok8XT6C+O9ucA+e9ZAe7YTDjFr9A==", + "type": "package", + "path": "System.Runtime.Handles/4.0.1", + "files": [ + "System.Runtime.Handles.4.0.1.nupkg.sha512", + "System.Runtime.Handles.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.InteropServices/4.1.0": { + "sha512": "AEz9Rp0bTyJZwQJLtLQtuAUFAo2y4Z/Hec4NmSPT1ySrpPsGGElSV87DI3jM9VBQv6JDPDzNH2JE9h19wxq5IA==", + "type": "package", + "path": "System.Runtime.InteropServices/4.1.0", + "files": [ + "System.Runtime.InteropServices.4.1.0.nupkg.sha512", + "System.Runtime.InteropServices.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { + "sha512": "uEdRRdxU5zCgv1H0bxo/vRHhdc8JFHeZtz8i35go4McrHMBT5n8va8ycyTYWrZSQ8bgLvD7ix8dw5k/bx6B2iQ==", + "type": "package", + "path": "System.Runtime.InteropServices.RuntimeInformation/4.0.0", + "files": [ + "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", + "System.Runtime.InteropServices.RuntimeInformation.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" + ] + }, + "System.Runtime.Loader/4.0.0": { + "sha512": "BOuixOICsGb5WsnmiVaBYSuptC1KApl1vzlRBfQU7Y3ltsszsUNwfMHdNse/yT1knz1Q2cCSXTnq2lfXvm9PFg==", + "type": "package", + "path": "System.Runtime.Loader/4.0.0", + "files": [ + "System.Runtime.Loader.4.0.0.nupkg.sha512", + "System.Runtime.Loader.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net462/_._", + "lib/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.dll", + "ref/netstandard1.5/System.Runtime.Loader.xml", + "ref/netstandard1.5/de/System.Runtime.Loader.xml", + "ref/netstandard1.5/es/System.Runtime.Loader.xml", + "ref/netstandard1.5/fr/System.Runtime.Loader.xml", + "ref/netstandard1.5/it/System.Runtime.Loader.xml", + "ref/netstandard1.5/ja/System.Runtime.Loader.xml", + "ref/netstandard1.5/ko/System.Runtime.Loader.xml", + "ref/netstandard1.5/ru/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" + ] + }, + "System.Runtime.Numerics/4.0.1": { + "sha512": "1gKGhH7nUFf7C1gr+bBoMvsBQ2/H4b9B/R+ZBVTVR+sEml+rns+PZF+GECpuCqs7bbNDXj8k7DtWgaBBFqglLQ==", + "type": "package", + "path": "System.Runtime.Numerics/4.0.1", + "files": [ + "System.Runtime.Numerics.4.0.1.nupkg.sha512", + "System.Runtime.Numerics.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", + "type": "package", + "path": "System.Runtime.Serialization.Primitives/4.1.1", + "files": [ + "System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512", + "System.Runtime.Serialization.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Runtime.Serialization.Primitives.dll", + "lib/netcore50/System.Runtime.Serialization.Primitives.dll", + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Runtime.Serialization.Primitives.dll", + "ref/netcore50/System.Runtime.Serialization.Primitives.dll", + "ref/netcore50/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", + "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", + "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll" + ] + }, + "System.Security.Claims/4.0.1": { + "sha512": "Uj4YL2pPL4HjGJV8NczP2Q66UVYjTTQLIi3uROiAwwJkRP2vPQgaZwaeAugciNZgNNZkqHzdvozJAV+Ec/0N/w==", + "type": "package", + "path": "System.Security.Claims/4.0.1", + "files": [ + "System.Security.Claims.4.0.1.nupkg.sha512", + "System.Security.Claims.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Claims.dll", + "lib/netstandard1.3/System.Security.Claims.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Claims.dll", + "ref/netstandard1.3/System.Security.Claims.dll", + "ref/netstandard1.3/System.Security.Claims.xml", + "ref/netstandard1.3/de/System.Security.Claims.xml", + "ref/netstandard1.3/es/System.Security.Claims.xml", + "ref/netstandard1.3/fr/System.Security.Claims.xml", + "ref/netstandard1.3/it/System.Security.Claims.xml", + "ref/netstandard1.3/ja/System.Security.Claims.xml", + "ref/netstandard1.3/ko/System.Security.Claims.xml", + "ref/netstandard1.3/ru/System.Security.Claims.xml", + "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", + "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Cryptography.Algorithms/4.2.0": { + "sha512": "nfDTD7z58eF8+OUt9R7UCNqRSzTgFfAH4q2Fbt3yHMP/+15Tu6uZEdUPu+/yE1vUY4PfozxaQ5a78isG/Ha5IA==", + "type": "package", + "path": "System.Security.Cryptography.Algorithms/4.2.0", + "files": [ + "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", + "System.Security.Cryptography.Algorithms.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" + ] + }, + "System.Security.Cryptography.Cng/4.2.0": { + "sha512": "qJ9pnGGae9+LnViB7xjeFAouF0OViIf6MqgqF4PEtNtjze+yDbXakzZcj4+9Acrw80uqhOsKN/Xu48SUuuerpA==", + "type": "package", + "path": "System.Security.Cryptography.Cng/4.2.0", + "files": [ + "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", + "System.Security.Cryptography.Cng.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net463/System.Security.Cryptography.Cng.dll", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net463/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" + ] + }, + "System.Security.Cryptography.Csp/4.0.0": { + "sha512": "NVEnNApnW+5UAQg96yfGX6bAihbemBQTkJT+wmEyxNe+0JUcvATBJhF15Dh/Z04/sJPTPBfeC2k3QbE0O7zGkw==", + "type": "package", + "path": "System.Security.Cryptography.Csp/4.0.0", + "files": [ + "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Csp.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" + ] + }, + "System.Security.Cryptography.Encoding/4.0.0": { + "sha512": "Ym5NRRQ1ZcHi+s/bME47Q9KuakimP/sJXfkY+dfHGu67hgBdrLcB0xs1LbKKVip1kGukZpS40qCpFm37KO/h+A==", + "type": "package", + "path": "System.Security.Cryptography.Encoding/4.0.0", + "files": [ + "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Encoding.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" + ] + }, + "System.Security.Cryptography.OpenSsl/4.0.0": { + "sha512": "pcPHa9ffsgALcBW/IpZSoHdKLuK8L1W1Rls9D32vKzbSYtBcZZacGb+tQLjgGX4TTK4BWsIN8c+RyTvnjly5Xw==", + "type": "package", + "path": "System.Security.Cryptography.OpenSsl/4.0.0", + "files": [ + "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", + "System.Security.Cryptography.OpenSsl.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" + ] + }, + "System.Security.Cryptography.Primitives/4.0.0": { + "sha512": "NoZUZptChcNKOUu6DEJjlBDMPoFvw4QnoHN5wlddmi9idGe0a9wXcRqLANsfsdwPR9wFCMC3B2DhwlN5XP/mug==", + "type": "package", + "path": "System.Security.Cryptography.Primitives/4.0.0", + "files": [ + "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", + "System.Security.Cryptography.Primitives.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Cryptography.X509Certificates/4.1.0": { + "sha512": "3e5jXb54vQuItYXB/KBMsqUw645c/JQjz1MoJ5uaco3mu+fLpscUeR0rQwcctjVAIMDEF6pGEa8falmDvyCIPg==", + "type": "package", + "path": "System.Security.Cryptography.X509Certificates/4.1.0", + "files": [ + "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", + "System.Security.Cryptography.X509Certificates.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" + ] + }, + "System.Security.Principal/4.0.1": { + "sha512": "awQM/V57TinvUv04eNBkuZfpZpS3TykQmw457uQIfb1c1NUb8s0WloI8F+8OefgMKFUArZqS/CTIo1MaxzI41A==", + "type": "package", + "path": "System.Security.Principal/4.0.1", + "files": [ + "System.Security.Principal.4.0.1.nupkg.sha512", + "System.Security.Principal.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Security.Principal.dll", + "lib/netstandard1.0/System.Security.Principal.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Security.Principal.dll", + "ref/netcore50/System.Security.Principal.xml", + "ref/netcore50/de/System.Security.Principal.xml", + "ref/netcore50/es/System.Security.Principal.xml", + "ref/netcore50/fr/System.Security.Principal.xml", + "ref/netcore50/it/System.Security.Principal.xml", + "ref/netcore50/ja/System.Security.Principal.xml", + "ref/netcore50/ko/System.Security.Principal.xml", + "ref/netcore50/ru/System.Security.Principal.xml", + "ref/netcore50/zh-hans/System.Security.Principal.xml", + "ref/netcore50/zh-hant/System.Security.Principal.xml", + "ref/netstandard1.0/System.Security.Principal.dll", + "ref/netstandard1.0/System.Security.Principal.xml", + "ref/netstandard1.0/de/System.Security.Principal.xml", + "ref/netstandard1.0/es/System.Security.Principal.xml", + "ref/netstandard1.0/fr/System.Security.Principal.xml", + "ref/netstandard1.0/it/System.Security.Principal.xml", + "ref/netstandard1.0/ja/System.Security.Principal.xml", + "ref/netstandard1.0/ko/System.Security.Principal.xml", + "ref/netstandard1.0/ru/System.Security.Principal.xml", + "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", + "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Security.Principal.Windows/4.0.0": { + "sha512": "6AjgoFpkgOXi6ff/QA8X7ptSzHgxfdDGFzXBrgtCuYWp7yZEA5UpgYXTUz+BRN0ghptF0QiT7XMks1VFWjdkPA==", + "type": "package", + "path": "System.Security.Principal.Windows/4.0.0", + "files": [ + "System.Security.Principal.Windows.4.0.0.nupkg.sha512", + "System.Security.Principal.Windows.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Principal.Windows.dll", + "ref/net46/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", + "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" + ] + }, + "System.Text.Encoding/4.0.11": { + "sha512": "qNhrsRyOiAJEebUgu4u8j0KKwVxE6ToQXD7SVI1ZEzDjBANJqWuGmJkCGyPavi/L5oW5c3nfZd+SWYy3gHpeQw==", + "type": "package", + "path": "System.Text.Encoding/4.0.11", + "files": [ + "System.Text.Encoding.4.0.11.nupkg.sha512", + "System.Text.Encoding.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Text.Encoding.CodePages/4.0.1": { + "sha512": "SPSEk/+yGF/8671SF4otT/7Ccy0v96cUfHIzxhTvzkttd7ilIUKXnFNi2pR0No9w0mN37FOZeWH/1anvUpvwLg==", + "type": "package", + "path": "System.Text.Encoding.CodePages/4.0.1", + "files": [ + "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", + "System.Text.Encoding.CodePages.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Text.Encoding.CodePages.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", + "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" + ] + }, + "System.Text.Encoding.Extensions/4.0.11": { + "sha512": "riSwTArdagYKjrp/DzoyVuK9wh6d3F+rHzR5/eyEb83VTIToGreYlnC/cDF/H1llhZhykBr7CG0gkxnUKTGtGA==", + "type": "package", + "path": "System.Text.Encoding.Extensions/4.0.11", + "files": [ + "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", + "System.Text.Encoding.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Text.RegularExpressions/4.1.0": { + "sha512": "kyy6kxns6bAysPO9m29a/lIgPthlAOl4AHuN55etAos2laoFdaWo6U/4OdyoBnJO+Bxh5FlFO7fpP5A69T0KLg==", + "type": "package", + "path": "System.Text.RegularExpressions/4.1.0", + "files": [ + "System.Text.RegularExpressions.4.1.0.nupkg.sha512", + "System.Text.RegularExpressions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading/4.0.11": { + "sha512": "dsJUbvClITs+Pznqq3N//aMDJNneTRYMoEsVKDmAHGh8EPjDB4FvAmcHMeoj4xyO3fZTpk5/7xcZBSG7PXb7kA==", + "type": "package", + "path": "System.Threading/4.0.11", + "files": [ + "System.Threading.4.0.11.nupkg.sha512", + "System.Threading.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll" + ] + }, + "System.Threading.Overlapped/4.0.1": { + "sha512": "41i+EAxyCW+/evnvXSKj0IHfUiMwHZohxyq7dalgZfO58o7ep5qll81/aLr5cvtPfS/91iHkFp5MGLED/ry7Dw==", + "type": "package", + "path": "System.Threading.Overlapped/4.0.1", + "files": [ + "System.Threading.Overlapped.4.0.1.nupkg.sha512", + "System.Threading.Overlapped.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Threading.Overlapped.dll", + "ref/net46/System.Threading.Overlapped.dll", + "ref/netstandard1.3/System.Threading.Overlapped.dll", + "ref/netstandard1.3/System.Threading.Overlapped.xml", + "ref/netstandard1.3/de/System.Threading.Overlapped.xml", + "ref/netstandard1.3/es/System.Threading.Overlapped.xml", + "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", + "ref/netstandard1.3/it/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", + "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", + "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", + "runtimes/win/lib/net46/System.Threading.Overlapped.dll", + "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", + "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" + ] + }, + "System.Threading.Tasks/4.0.11": { + "sha512": "TtdCvO0IIheiswtc9Ngly7J9QBkap5X23ujGaaUSBPuKqKl7U7JYtcRfIsQMwyZ+O91uyMradQPZGwCsMzeATw==", + "type": "package", + "path": "System.Threading.Tasks/4.0.11", + "files": [ + "System.Threading.Tasks.4.0.11.nupkg.sha512", + "System.Threading.Tasks.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "sha512": "OK7OxIJ9u4tpQ7K2rkal+qHqipIQ576CgHHm6nNlwMymqCPdihtFLhb1TV+MSSMWyeOTA3fT3eQNLlnBBlrQ5A==", + "type": "package", + "path": "System.Threading.Tasks.Dataflow/4.6.0", + "files": [ + "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", + "System.Threading.Tasks.Dataflow.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" + ] + }, + "System.Threading.Tasks.Extensions/4.0.0": { + "sha512": "tNrguBmbHTG/UsTJPlgZhlb2iAGJQVguY/amgbR4z36eB4bDelHSLl5/S5qxBVL/rzbAwWhlGntc6x1LiM3t8w==", + "type": "package", + "path": "System.Threading.Tasks.Extensions/4.0.0", + "files": [ + "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", + "System.Threading.Tasks.Extensions.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" + ] + }, + "System.Threading.Tasks.Parallel/4.0.1": { + "sha512": "Hck6r2cP4010W10GHj0T+2aC4BlwfR5Jryo66LuKneqWYv8woLvkB33wms+u99zkHowvrMyH5GyAn+3Xy/oNYQ==", + "type": "package", + "path": "System.Threading.Tasks.Parallel/4.0.1", + "files": [ + "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", + "System.Threading.Tasks.Parallel.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.Tasks.Parallel.dll", + "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.Parallel.dll", + "ref/netcore50/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", + "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", + "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Thread/4.0.0": { + "sha512": "bZZ1sPwuEgP+ldGNxjznhbr6l43j/FshRA5B79FEPK7JuRXfzywYijLVx7xwRWp6JspbjTJ6vyxCewU0SudBIQ==", + "type": "package", + "path": "System.Threading.Thread/4.0.0", + "files": [ + "System.Threading.Thread.4.0.0.nupkg.sha512", + "System.Threading.Thread.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.Thread.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.Thread.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.xml", + "ref/netstandard1.3/de/System.Threading.Thread.xml", + "ref/netstandard1.3/es/System.Threading.Thread.xml", + "ref/netstandard1.3/fr/System.Threading.Thread.xml", + "ref/netstandard1.3/it/System.Threading.Thread.xml", + "ref/netstandard1.3/ja/System.Threading.Thread.xml", + "ref/netstandard1.3/ko/System.Threading.Thread.xml", + "ref/netstandard1.3/ru/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.ThreadPool/4.0.10": { + "sha512": "XsayrwW56AZOeZODMbycHoip7UvhWo4gvP+lQuPWiRLoBmf5544Y7u1OqLCtyHpyVKfdwgUhvjmwnt2nDvOSJw==", + "type": "package", + "path": "System.Threading.ThreadPool/4.0.10", + "files": [ + "System.Threading.ThreadPool.4.0.10.nupkg.sha512", + "System.Threading.ThreadPool.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Threading.ThreadPool.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.ThreadPool.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.dll", + "ref/netstandard1.3/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", + "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Threading.Timer/4.0.1": { + "sha512": "IGPz3ncIsWGzTI31Ew6LF9vUfT9IbGLuaA7sZNT8HiJ5icwmQP4dZB1Iquvyyr5+6IshhyBZAYL+PT7WvW26HQ==", + "type": "package", + "path": "System.Threading.Timer/4.0.1", + "files": [ + "System.Threading.Timer.4.0.1.nupkg.sha512", + "System.Threading.Timer.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.ReaderWriter/4.0.11": { + "sha512": "hmEjrB85NCiD50cw9JkQvzHGAZ+I9guEg2zGLYKSZdjzPDYdg25mmGehf86zfJwZdW5XBi7owJpLZWRU5QDH2Q==", + "type": "package", + "path": "System.Xml.ReaderWriter/4.0.11", + "files": [ + "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", + "System.Xml.ReaderWriter.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XDocument/4.0.11": { + "sha512": "Kg0Ca0bBCniaLGY2EnmJ+GTZlrQswzd530hIiRi0Zm4iMdDdxV67Fv73B5gwh+sMGHqaW/Q917waIqmSFxTaOg==", + "type": "package", + "path": "System.Xml.XDocument/4.0.11", + "files": [ + "System.Xml.XDocument.4.0.11.nupkg.sha512", + "System.Xml.XDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XmlDocument/4.0.1": { + "sha512": "5fyjMTXJNcbDv4aCJN1RyNzu3/xObqJlfzX8OVgJ3DXHeapmjj7zkt1YoGiEzqamG1DPZ9epRVLsf+SxBjf5hQ==", + "type": "package", + "path": "System.Xml.XmlDocument/4.0.1", + "files": [ + "System.Xml.XmlDocument.4.0.1.nupkg.sha512", + "System.Xml.XmlDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XmlDocument.dll", + "lib/netstandard1.3/System.Xml.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.dll", + "ref/netstandard1.3/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XPath/4.0.1": { + "sha512": "HoPTx0vnO+b3F3/CbyERk+DTFTOQjYvie4wPgwdtRXmDa1zo4qzIUCT3FWFeRh9Bg/V5hhm6pHxY9arJD56SLA==", + "type": "package", + "path": "System.Xml.XPath/4.0.1", + "files": [ + "System.Xml.XPath.4.0.1.nupkg.sha512", + "System.Xml.XPath.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XPath.dll", + "lib/netstandard1.3/System.Xml.XPath.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.dll", + "ref/netstandard1.3/System.Xml.XPath.xml", + "ref/netstandard1.3/de/System.Xml.XPath.xml", + "ref/netstandard1.3/es/System.Xml.XPath.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.xml", + "ref/netstandard1.3/it/System.Xml.XPath.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "System.Xml.XPath.XDocument/4.0.1": { + "sha512": "dgXOf8OwZhN7XEQxU3goBEad6DvEZB3GoGXMdqu8XEG5HX1sJ8tIYIedsjJWqAsEHnbYnPDd82Y9gagu0jyVqQ==", + "type": "package", + "path": "System.Xml.XPath.XDocument/4.0.1", + "files": [ + "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", + "System.Xml.XPath.XDocument.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XPath.XDocument.dll", + "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XPath.XDocument.dll", + "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", + "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + } + }, + "projectFileDependencyGroups": { + "": [ + "Newtonsoft.Json >= 9.0.1" + ], + ".NETCoreApp,Version=v1.0": [ + "Microsoft.NETCore.App >= 1.0.0", + "System.Collections.NonGeneric >= 4.0.1" + ] + }, + "tools": {}, + "projectFileToolGroups": {} +} \ No newline at end of file From b3e69b139e856214b63c0ee09c593cb1963ace1a Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 1 Aug 2016 13:56:35 -0500 Subject: [PATCH 123/165] Update NuGet to 3.5.0-rc1-1697 --- build_projects/dotnet-cli-build/project.json | 2 +- src/Microsoft.DotNet.Cli.Utils/project.json | 8 ++++---- src/Microsoft.DotNet.ProjectModel/project.json | 6 +++--- src/dotnet/project.json | 4 ++-- test/Microsoft.DotNet.Cli.Utils.Tests/project.json | 8 ++++---- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 9a9fae22c..9350f4c12 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -20,7 +20,7 @@ "System.Runtime.Serialization.Primitives": "4.1.1", "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", - "NuGet.CommandLine.XPlat": "3.5.0-rc1-1653", + "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697", "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" }, diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index a76eba672..4ca0fc956 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -8,10 +8,10 @@ "Microsoft.DotNet.ProjectModel": { "target": "project" }, - "NuGet.Versioning": "3.5.0-rc1-1653", - "NuGet.Packaging": "3.5.0-rc1-1653", - "NuGet.Frameworks": "3.5.0-rc1-1653", - "NuGet.ProjectModel": "3.5.0-rc1-1653" + "NuGet.Versioning": "3.5.0-rc1-1697", + "NuGet.Packaging": "3.5.0-rc1-1697", + "NuGet.Frameworks": "3.5.0-rc1-1697", + "NuGet.ProjectModel": "3.5.0-rc1-1697" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index eee3196ec..5eb55a280 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -9,9 +9,9 @@ "target": "project" }, "Newtonsoft.Json": "9.0.1", - "NuGet.Configuration": "3.5.0-rc1-1653", - "NuGet.Packaging": "3.5.0-rc1-1653", - "NuGet.RuntimeModel": "3.5.0-rc1-1653", + "NuGet.Configuration": "3.5.0-rc1-1697", + "NuGet.Packaging": "3.5.0-rc1-1697", + "NuGet.RuntimeModel": "3.5.0-rc1-1697", "System.Reflection.Metadata": "1.3.0" }, "frameworks": { diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 0370a1dab..a4df97b88 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -34,10 +34,10 @@ }, "dependencies": { "NuGet.Commands": { - "version": "3.5.0-rc1-1653", + "version": "3.5.0-rc1-1697", "exclude": "compile" }, - "NuGet.CommandLine.XPlat": "3.5.0-rc1-1653", + "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697", "Newtonsoft.Json": "9.0.1", "System.Text.Encoding.CodePages": "4.0.1", "System.Diagnostics.FileVersionInfo": "4.0.0", diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json index 196170860..143f30899 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json @@ -20,10 +20,10 @@ }, "System.Diagnostics.TraceSource": "4.0.0", "System.Runtime.Serialization.Primitives": "4.1.1", - "NuGet.Versioning": "3.5.0-rc1-1653", - "NuGet.Packaging": "3.5.0-rc1-1653", - "NuGet.Frameworks": "3.5.0-rc1-1653", - "NuGet.ProjectModel": "3.5.0-rc1-1653", + "NuGet.Versioning": "3.5.0-rc1-1697", + "NuGet.Packaging": "3.5.0-rc1-1697", + "NuGet.Frameworks": "3.5.0-rc1-1697", + "NuGet.ProjectModel": "3.5.0-rc1-1697", "Microsoft.DotNet.ProjectModel": { "target": "project" }, From 10cfa744e568d34ad60506e00e828e2eac786f53 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 1 Aug 2016 15:02:22 -0500 Subject: [PATCH 124/165] PR feedback. Implement VersionPrefix and VersionSuffix MSBuild properties. Use FluentAssertions in the test. --- src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 5 ++++- .../GivenADependencyContextBuilder.cs | 6 ++++-- test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 811e7745f..35f0961d5 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -20,7 +20,10 @@ true - 1.0.0 + 1.0.0 + + $(VersionPrefix)-$(VersionSuffix) + $(VersionPrefix) diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs index a2e83f519..1278347c2 100644 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs @@ -1,8 +1,8 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System; using System.IO; +using FluentAssertions.Json; using Microsoft.Extensions.DependencyModel; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -36,7 +36,9 @@ namespace Microsoft.DotNet.Core.Build.Tasks.Tests JObject result = Save(dependencyContext); JObject baseline = ReadJson($"{mainProjectName}.deps.json"); - Assert.True(JToken.DeepEquals(baseline, result), $"Expected: {baseline}{Environment.NewLine}Result: {result}"); + baseline + .Should() + .BeEquivalentTo(result); } private static JObject ReadJson(string path) diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json index 804f8c5bb..6248490de 100644 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json @@ -12,6 +12,7 @@ "target": "project" }, "xunit": "2.1.0", + "FluentAssertions.Json": "4.12.0", "dotnet-test-xunit": "1.0.0-rc2-192208-24" }, "testRunner": "xunit", From b5d312e7faff0e551b58e493bbb1d0de48999954 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 1 Aug 2016 19:06:46 -0500 Subject: [PATCH 125/165] PR feedback. --- src/Microsoft.DotNet.Cli.Utils/PathUtility.cs | 4 +-- .../Executable.cs | 2 +- .../DependencyContextBuilder.cs | 14 ++++----- .../GenerateRuntimeConfigurationFiles.cs | 31 +++++++------------ src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 7 ++--- src/dotnet/commands/dotnet-run/RunCommand.cs | 2 +- 6 files changed, 25 insertions(+), 35 deletions(-) diff --git a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs index e9fdcb99c..abcea770b 100644 --- a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs +++ b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs @@ -56,12 +56,12 @@ namespace Microsoft.DotNet.Tools.Common return path + trailingCharacter; } - public static string EnsureNoTrailingSlash(string path) + public static string EnsureNoTrailingDirectorySeparator(string path) { if (!string.IsNullOrEmpty(path)) { char lastChar = path[path.Length - 1]; - if (lastChar == Path.DirectorySeparatorChar || lastChar == '/') + if (lastChar == Path.DirectorySeparatorChar) { path = path.Substring(0, path.Length - 1); } diff --git a/src/Microsoft.DotNet.Compiler.Common/Executable.cs b/src/Microsoft.DotNet.Compiler.Common/Executable.cs index 4427c7ecc..a3ee3544b 100644 --- a/src/Microsoft.DotNet.Compiler.Common/Executable.cs +++ b/src/Microsoft.DotNet.Compiler.Common/Executable.cs @@ -281,7 +281,7 @@ namespace Microsoft.DotNet.Cli.Compiler.Common foreach (var packageFolder in _context.LockFile.PackageFolders) { // DotNetHost doesn't handle additional probing paths with a trailing slash - additionalProbingPaths.Add(PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); + additionalProbingPaths.Add(PathUtility.EnsureNoTrailingDirectorySeparator(packageFolder.Path)); } runtimeOptions.Add("additionalProbingPaths", additionalProbingPaths); diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs b/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs index d7a7189cc..757a2c08a 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs @@ -31,10 +31,10 @@ namespace Microsoft.DotNet.Core.Build.Tasks IEnumerable runtimeExports = lockFileTarget.Libraries; // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. - var packageName = "Microsoft.NETCore.App"; + var platformPackageName = "Microsoft.NETCore.App"; var platformExport = lockFileTarget .Libraries - .FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); + .FirstOrDefault(e => e.Name.Equals(platformPackageName, StringComparison.OrdinalIgnoreCase)); bool portable = platformExport != null; if (portable) @@ -107,20 +107,20 @@ namespace Microsoft.DotNet.Core.Build.Tasks var builder = new StringBuilder(); var packages = runtimeExports .Where(libraryExport => libraryExport.Type == "package"); - var seperator = "|"; + var separator = "|"; foreach (var libraryExport in packages) { builder.Append(libraryExport.Name); - builder.Append(seperator); + builder.Append(separator); builder.Append(libraryExport.Version.ToString()); - builder.Append(seperator); + builder.Append(separator); } var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(builder.ToString())); builder.Clear(); - foreach (var b in hash) + foreach (var hashByte in hash) { - builder.AppendFormat("{0:x2}", b); + builder.AppendFormat("{0:x2}", hashByte); } return builder.ToString(); } diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs index 6d973f512..d32327b74 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -20,18 +20,15 @@ namespace Microsoft.DotNet.Core.Build.Tasks /// public class GenerateRuntimeConfigurationFiles : Task { - [Required] - public string RuntimeOutputPath { get; set; } - - [Required] - public string AssemblyName { get; set; } - [Required] public string LockFilePath { get; set; } - public string RawRuntimeOptions { get; set; } + [Required] + public string RuntimeConfigPath { get; set; } - public bool IncludeDevConfig { get; set; } + public string RuntimeConfigDevPath { get; set; } + + public string RawRuntimeOptions { get; set; } private LockFile LockFile { get; set; } @@ -41,7 +38,7 @@ namespace Microsoft.DotNet.Core.Build.Tasks WriteRuntimeConfig(); - if (IncludeDevConfig) + if (!string.IsNullOrEmpty(RuntimeConfigDevPath)) { WriteDevRuntimeConfig(); } @@ -57,10 +54,7 @@ namespace Microsoft.DotNet.Core.Build.Tasks AddFramework(config.RuntimeOptions); AddRuntimeOptions(config.RuntimeOptions); - var runtimeConfigJsonFile = - Path.Combine(RuntimeOutputPath, AssemblyName + ".runtimeconfig.json"); - - WriteToJsonFile(runtimeConfigJsonFile, config); + WriteToJsonFile(RuntimeConfigPath, config); } private void AddFramework(RuntimeOptions runtimeOptions) @@ -103,10 +97,7 @@ namespace Microsoft.DotNet.Core.Build.Tasks AddAdditionalProbingPaths(devConfig.RuntimeOptions); - var runtimeConfigDevJsonFile = - Path.Combine(RuntimeOutputPath, AssemblyName + ".runtimeconfig.dev.json"); - - WriteToJsonFile(runtimeConfigDevJsonFile, devConfig); + WriteToJsonFile(RuntimeConfigDevPath, devConfig); } private void AddAdditionalProbingPaths(RuntimeOptions runtimeOptions) @@ -119,16 +110,16 @@ namespace Microsoft.DotNet.Core.Build.Tasks } // DotNetHost doesn't handle additional probing paths with a trailing slash - runtimeOptions.AdditionalProbingPaths.Add(EnsureNoTrailingSlash(packageFolder.Path)); + runtimeOptions.AdditionalProbingPaths.Add(EnsureNoTrailingDirectorySeparator(packageFolder.Path)); } } - private static string EnsureNoTrailingSlash(string path) + private static string EnsureNoTrailingDirectorySeparator(string path) { if (!string.IsNullOrEmpty(path)) { char lastChar = path[path.Length - 1]; - if (lastChar == Path.DirectorySeparatorChar || lastChar == '/') + if (lastChar == Path.DirectorySeparatorChar) { path = path.Substring(0, path.Length - 1); } diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 35f0961d5..0faa0d006 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -67,10 +67,9 @@ TODO: Get RawRuntimeOptions from where it lives in the MSBuild world --> + RuntimeConfigPath="$(TargetDir)/$(AssemblyName).runtimeconfig.json" + RuntimeConfigDevPath="$(TargetDir)/$(AssemblyName).runtimeconfig.dev.json" + RawRuntimeOptions="" /> diff --git a/src/dotnet/commands/dotnet-run/RunCommand.cs b/src/dotnet/commands/dotnet-run/RunCommand.cs index 618f8074f..5653f98fb 100644 --- a/src/dotnet/commands/dotnet-run/RunCommand.cs +++ b/src/dotnet/commands/dotnet-run/RunCommand.cs @@ -154,7 +154,7 @@ namespace Microsoft.DotNet.Tools.Run foreach (var packageFolder in _context.LockFile.PackageFolders) { // DotNetHost doesn't handle additional probing paths with a trailing slash - hostArgs.Insert(0, PathUtility.EnsureNoTrailingSlash(packageFolder.Path)); + hostArgs.Insert(0, PathUtility.EnsureNoTrailingDirectorySeparator(packageFolder.Path)); hostArgs.Insert(0, probingPathArg); } } From 52ed2b090f104c9644ea6e3834ddcc4162771f9b Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Mon, 1 Aug 2016 19:11:40 -0700 Subject: [PATCH 126/165] Remove temporary hacks from new NuGet --- build/Microsoft.DotNet.Cli.Compile.targets | 12 ------------ .../compile/Microsoft.DotNet.Cli.LzmaArchive.targets | 5 ----- 2 files changed, 17 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index b79136187..3d444f65f 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -70,9 +70,6 @@ - - - @@ -83,7 +80,6 @@ - @@ -91,14 +87,6 @@ - - - - - - - - - - - Date: Mon, 1 Aug 2016 23:03:10 -0500 Subject: [PATCH 127/165] Fixing a small spelling error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ed0b0a67f..0efb18400 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Build Status Installers and Binaries ----------------------- -You can download .NET Core as either an installer (MSI, PKG) or a zip (zip, gzip). You can download the product in two flavours: +You can download .NET Core as either an installer (MSI, PKG) or a zip (zip, gzip). You can download the product in two flavors: - .NET Core - .NET Core runtime and framework - .NET Core SDK - .NET Core + CLI tools From 253d2329433b0b7b40917e10e949a66e8620d281 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Mon, 1 Aug 2016 23:22:39 -0700 Subject: [PATCH 128/165] Add missing dependencies to bundle targets --- build/package/Microsoft.DotNet.Cli.Installer.MSI.targets | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets index 412869f60..f709935ae 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -141,13 +141,15 @@ Condition=" '$(OS)' == 'Windows_NT'" /> - + - + From ddb6a877af5661b42d0127e15e0cff6ac7e45e77 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 2 Aug 2016 14:37:14 -0500 Subject: [PATCH 129/165] Add netstandard1.3 TFM to DependencyModel so the MSBuild task can target netstandard1.3 and still use it to write the .deps.json file. --- .../CompilationLibrary.cs | 3 +++ .../DependencyContext.cs | 6 ++++++ .../DependencyContextLoader.cs | 4 ++++ .../DependencyContextPaths.cs | 6 ++++-- .../Resolution/AppBaseCompilationAssemblyResolver.cs | 6 +++++- src/Microsoft.Extensions.DependencyModel/project.json | 8 ++++++++ 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs b/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs index 435068ceb..0177f6e69 100644 --- a/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs +++ b/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs @@ -28,6 +28,7 @@ namespace Microsoft.Extensions.DependencyModel public IReadOnlyList Assemblies { get; } +#if !NETSTANDARD1_3 internal static ICompilationAssemblyResolver DefaultResolver { get; } = new CompositeCompilationAssemblyResolver(new ICompilationAssemblyResolver[] { new PackageCacheCompilationAssemblyResolver(), @@ -45,5 +46,7 @@ namespace Microsoft.Extensions.DependencyModel } return assemblies; } +#endif + } } diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs index 32202c993..18cc251a5 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs @@ -10,7 +10,9 @@ namespace Microsoft.Extensions.DependencyModel { public class DependencyContext { +#if !NETSTANDARD1_3 private static readonly Lazy _defaultContext = new Lazy(LoadDefault); +#endif public DependencyContext(TargetInfo target, CompilationOptions compilationOptions, @@ -46,7 +48,9 @@ namespace Microsoft.Extensions.DependencyModel RuntimeGraph = runtimeGraph.ToArray(); } +#if !NETSTANDARD1_3 public static DependencyContext Default => _defaultContext.Value; +#endif public TargetInfo Target { get; } @@ -74,6 +78,7 @@ namespace Microsoft.Extensions.DependencyModel ); } +#if !NETSTANDARD1_3 private static DependencyContext LoadDefault() { return DependencyContextLoader.Default.Load(Assembly.GetEntryAssembly()); @@ -83,6 +88,7 @@ namespace Microsoft.Extensions.DependencyModel { return DependencyContextLoader.Default.Load(assembly); } +#endif private class LibraryMergeEqualityComparer : IEqualityComparer where T : Library { diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs index e7e4507f8..f848e602b 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs @@ -7,6 +7,8 @@ using System.Reflection; using System.Threading.Tasks; using Microsoft.Extensions.EnvironmentAbstractions; +#if !NETSTANDARD1_3 + namespace Microsoft.Extensions.DependencyModel { public class DependencyContextLoader @@ -131,3 +133,5 @@ namespace Microsoft.Extensions.DependencyModel } } } + +#endif diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs index 28700ba1b..6ea5b63ee 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs @@ -1,5 +1,7 @@ using System; +#if !NETSTANDARD1_3 + namespace Microsoft.Extensions.DependencyModel { internal class DependencyContextPaths @@ -31,7 +33,7 @@ namespace Microsoft.Extensions.DependencyModel files != null && files.Length > 0 ? files[0] : null, files != null && files.Length > 1 ? files[1] : null ); - } } -} \ No newline at end of file +} +#endif diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs index 774129043..38f7c1187 100644 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs +++ b/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs @@ -7,6 +7,8 @@ using System.IO; using Microsoft.DotNet.InternalAbstractions; using Microsoft.Extensions.EnvironmentAbstractions; +#if !NETSTANDARD1_3 + namespace Microsoft.Extensions.DependencyModel.Resolution { public class AppBaseCompilationAssemblyResolver : ICompilationAssemblyResolver @@ -114,4 +116,6 @@ namespace Microsoft.Extensions.DependencyModel.Resolution return true; } } -} \ No newline at end of file +} + +#endif diff --git a/src/Microsoft.Extensions.DependencyModel/project.json b/src/Microsoft.Extensions.DependencyModel/project.json index f7bacc973..41f49ab2f 100644 --- a/src/Microsoft.Extensions.DependencyModel/project.json +++ b/src/Microsoft.Extensions.DependencyModel/project.json @@ -13,6 +13,14 @@ }, "frameworks": { "net451": {}, + "netstandard1.3": { + "imports": "portable-net45+wp80+win8+wpa81+dnxcore50", + "dependencies": { + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0" + } + }, "netstandard1.6": { "imports": "portable-net45+wp80+win8+wpa81+dnxcore50", "dependencies": { From 479399ff47396758a707cc66dbf4a119d72e96bd Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 2 Aug 2016 12:59:45 -0700 Subject: [PATCH 130/165] Fix invocation of insignia.exe -ab http://wixtoolset.org/documentation/manual/v3/overview/insignia.html --- build/package/Microsoft.DotNet.Cli.Installer.MSI.targets | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets index f709935ae..589b317b2 100644 --- a/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets +++ b/build/package/Microsoft.DotNet.Cli.Installer.MSI.targets @@ -143,15 +143,11 @@ - + - + From ee6063b12b50ab94abbbb9082a62a03bb9fce403 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Tue, 2 Aug 2016 10:02:30 -0700 Subject: [PATCH 131/165] Use JsonTextReader in DependencyContextJsonReader (#3972) Using low level JsonTextReader in DependencyContextJsonReader class for performance reasons --- .../DependencyContextJsonReader.cs | 722 +++++++++++++----- .../JsonTextReaderExtensions.cs | 77 ++ .../DependencyContextJsonReaderTest.cs | 8 +- 3 files changed, 599 insertions(+), 208 deletions(-) create mode 100644 src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs index 5d3ac12fa..6c40ae6d5 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; namespace Microsoft.Extensions.DependencyModel { @@ -20,16 +19,15 @@ namespace Microsoft.Extensions.DependencyModel { throw new ArgumentNullException(nameof(stream)); } + using (var streamReader = new StreamReader(stream)) { using (var reader = new JsonTextReader(streamReader)) { - var root = JObject.Load(reader); - return Read(root); + return Read(reader); } } } - protected virtual void Dispose(bool disposing) { if (disposing) @@ -43,81 +41,77 @@ namespace Microsoft.Extensions.DependencyModel Dispose(true); } - private bool IsRuntimeTarget(string name) => name.Contains(DependencyContextStrings.VersionSeperator); - - private DependencyContext Read(JObject root) + private DependencyContext Read(JsonTextReader reader) { var runtime = string.Empty; - var target = string.Empty; + var framework = string.Empty; var isPortable = true; string runtimeTargetName = null; string runtimeSignature = null; - var runtimeTargetInfo = root[DependencyContextStrings.RuntimeTargetPropertyName]; + reader.ReadStartObject(); - // This fallback is temporary - if (runtimeTargetInfo is JValue) + CompilationOptions compilationOptions = null; + List targets = null; + Dictionary libraryStubs = null; + List runtimeFallbacks = null; + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { - runtimeTargetName = runtimeTargetInfo.Value(); - } - else - { - var runtimeTargetObject = (JObject) runtimeTargetInfo; - runtimeTargetName = runtimeTargetObject?[DependencyContextStrings.RuntimeTargetNamePropertyName]?.Value(); - runtimeSignature = runtimeTargetObject?[DependencyContextStrings.RuntimeTargetSignaturePropertyName]?.Value(); - } - - var libraryStubs = ReadLibraryStubs((JObject)root[DependencyContextStrings.LibrariesPropertyName]); - var targetsObject = (JObject)root[DependencyContextStrings.TargetsPropertyName]; - - JObject runtimeTarget = null; - JObject compileTarget = null; - - if (targetsObject == null) - { - throw new FormatException("Dependency file does not have 'targets' section"); - } - - if (!string.IsNullOrEmpty(runtimeTargetName)) - { - runtimeTarget = (JObject)targetsObject[runtimeTargetName]; - if (runtimeTarget == null) + switch ((string)reader.Value) { - throw new FormatException($"Target with name {runtimeTargetName} not found"); + case DependencyContextStrings.RuntimeTargetPropertyName: + ReadRuntimeTarget(reader, out runtimeTargetName, out runtimeSignature); + break; + case DependencyContextStrings.CompilationOptionsPropertName: + compilationOptions = ReadCompilationOptions(reader); + break; + case DependencyContextStrings.TargetsPropertyName: + targets = ReadTargets(reader); + break; + case DependencyContextStrings.LibrariesPropertyName: + libraryStubs = ReadLibraries(reader); + break; + case DependencyContextStrings.RuntimesPropertyName: + runtimeFallbacks = ReadRuntimes(reader); + break; + } } - else - { - var runtimeTargetProperty = targetsObject.Properties() - .FirstOrDefault(p => IsRuntimeTarget(p.Name)); - runtimeTarget = (JObject)runtimeTargetProperty?.Value; - runtimeTargetName = runtimeTargetProperty?.Name; + if (compilationOptions == null) + { + compilationOptions = CompilationOptions.Default; } + Target runtimeTarget = SelectRuntimeTarget(targets, runtimeTargetName); + runtimeTargetName = runtimeTarget?.Name; + if (runtimeTargetName != null) { var seperatorIndex = runtimeTargetName.IndexOf(DependencyContextStrings.VersionSeperator); if (seperatorIndex > -1 && seperatorIndex < runtimeTargetName.Length) { runtime = runtimeTargetName.Substring(seperatorIndex + 1); - target = runtimeTargetName.Substring(0, seperatorIndex); + framework = runtimeTargetName.Substring(0, seperatorIndex); isPortable = false; } else { - target = runtimeTargetName; + framework = runtimeTargetName; } } - var ridlessTargetProperty = targetsObject.Properties().FirstOrDefault(p => !IsRuntimeTarget(p.Name)); - if (ridlessTargetProperty != null) + Target compileTarget = null; + + var ridlessTarget = targets.FirstOrDefault(t => !IsRuntimeTarget(t.Name)); + if (ridlessTarget != null) { - compileTarget = (JObject)ridlessTargetProperty.Value; + compileTarget = ridlessTarget; if (runtimeTarget == null) { runtimeTarget = compileTarget; - target = ridlessTargetProperty.Name; + framework = ridlessTarget.Name; } } @@ -127,65 +121,445 @@ namespace Microsoft.Extensions.DependencyModel } return new DependencyContext( - new TargetInfo(target, runtime, runtimeSignature, isPortable), - ReadCompilationOptions((JObject)root[DependencyContextStrings.CompilationOptionsPropertName]), - ReadLibraries(compileTarget, false, libraryStubs).Cast().ToArray(), - ReadLibraries(runtimeTarget, true, libraryStubs).Cast().ToArray(), - ReadRuntimeGraph((JObject)root[DependencyContextStrings.RuntimesPropertyName]).ToArray() - ); + new TargetInfo(framework, runtime, runtimeSignature, isPortable), + compilationOptions, + CreateLibraries(compileTarget?.Libraries, false, libraryStubs).Cast().ToArray(), + CreateLibraries(runtimeTarget.Libraries, true, libraryStubs).Cast().ToArray(), + runtimeFallbacks ?? Enumerable.Empty()); } - private IEnumerable ReadRuntimeGraph(JObject runtimes) + private Target SelectRuntimeTarget(List targets, string runtimeTargetName) { - if (runtimes == null) + Target target; + + if (targets == null || targets.Count == 0) { - yield break; + throw new FormatException("Dependency file does not have 'targets' section"); } - foreach (var pair in runtimes) + if (!string.IsNullOrEmpty(runtimeTargetName)) { - yield return new RuntimeFallbacks(pair.Key, pair.Value.Values().ToArray()); + target = targets.FirstOrDefault(t => t.Name == runtimeTargetName); + if (target == null) + { + throw new FormatException($"Target with name {runtimeTargetName} not found"); + } } + else + { + target = targets.FirstOrDefault(t => IsRuntimeTarget(t.Name)); + } + + return target; } - private CompilationOptions ReadCompilationOptions(JObject compilationOptionsObject) + private bool IsRuntimeTarget(string name) { - if (compilationOptionsObject == null) + return name.Contains(DependencyContextStrings.VersionSeperator); + } + + private void ReadRuntimeTarget(JsonTextReader reader, out string runtimeTargetName, out string runtimeSignature) + { + runtimeTargetName = null; + runtimeSignature = null; + + reader.ReadStartObject(); + + string propertyName; + string propertyValue; + while (reader.TryReadStringProperty(out propertyName, out propertyValue)) { - return CompilationOptions.Default; + switch (propertyName) + { + case DependencyContextStrings.RuntimeTargetNamePropertyName: + runtimeTargetName = propertyValue; + break; + case DependencyContextStrings.RuntimeTargetSignaturePropertyName: + runtimeSignature = propertyValue; + break; + default: + throw new FormatException($"Unknown property name '{propertyName}'"); + } } + reader.CheckEndObject(); + } + + private CompilationOptions ReadCompilationOptions(JsonTextReader reader) + { + IEnumerable defines = null; + string languageVersion = null; + string platform = null; + bool? allowUnsafe = null; + bool? warningsAsErrors = null; + bool? optimize = null; + string keyFile = null; + bool? delaySign = null; + bool? publicSign = null; + string debugType = null; + bool? emitEntryPoint = null; + bool? generateXmlDocumentation = null; + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + switch ((string)reader.Value) + { + case DependencyContextStrings.DefinesPropertyName: + defines = reader.ReadStringArray(); + break; + case DependencyContextStrings.LanguageVersionPropertyName: + languageVersion = reader.ReadAsString(); + break; + case DependencyContextStrings.PlatformPropertyName: + platform = reader.ReadAsString(); + break; + case DependencyContextStrings.AllowUnsafePropertyName: + allowUnsafe = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.WarningsAsErrorsPropertyName: + warningsAsErrors = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.OptimizePropertyName: + optimize = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.KeyFilePropertyName: + keyFile = reader.ReadAsString(); + break; + case DependencyContextStrings.DelaySignPropertyName: + delaySign = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.PublicSignPropertyName: + publicSign = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.DebugTypePropertyName: + debugType = reader.ReadAsString(); + break; + case DependencyContextStrings.EmitEntryPointPropertyName: + emitEntryPoint = reader.ReadAsBoolean(); + break; + case DependencyContextStrings.GenerateXmlDocumentationPropertyName: + generateXmlDocumentation = reader.ReadAsBoolean(); + break; + default: + throw new FormatException($"Unknown property name '{reader.Value}'"); + } + } + + reader.CheckEndObject(); + return new CompilationOptions( - compilationOptionsObject[DependencyContextStrings.DefinesPropertyName]?.Values().ToArray() ?? Enumerable.Empty(), - // ToArray is here to prevent IEnumerable holding to json object graph - compilationOptionsObject[DependencyContextStrings.LanguageVersionPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.PlatformPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.AllowUnsafePropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.WarningsAsErrorsPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.OptimizePropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.KeyFilePropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.DelaySignPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.PublicSignPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.DebugTypePropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.EmitEntryPointPropertyName]?.Value(), - compilationOptionsObject[DependencyContextStrings.GenerateXmlDocumentationPropertyName]?.Value() - ); + defines ?? Enumerable.Empty(), + languageVersion, + platform, + allowUnsafe, + warningsAsErrors, + optimize, + keyFile, + delaySign, + publicSign, + debugType, + emitEntryPoint, + generateXmlDocumentation); } - private IEnumerable ReadLibraries(JObject librariesObject, bool runtime, Dictionary libraryStubs) + private List ReadTargets(JsonTextReader reader) { - if (librariesObject == null) + reader.ReadStartObject(); + + var targets = new List(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + targets.Add(ReadTarget(reader, (string)reader.Value)); + } + + reader.CheckEndObject(); + + return targets; + } + + private Target ReadTarget(JsonTextReader reader, string targetName) + { + reader.ReadStartObject(); + + var libraries = new List(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + libraries.Add(ReadTargetLibrary(reader, (string)reader.Value)); + } + + reader.CheckEndObject(); + + return new Target() + { + Name = targetName, + Libraries = libraries + }; + } + + private TargetLibrary ReadTargetLibrary(JsonTextReader reader, string targetLibraryName) + { + IEnumerable dependencies = null; + List runtimes = null; + List natives = null; + List compilations = null; + List runtimeTargets = null; + List resources = null; + bool? compileOnly = null; + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + switch ((string)reader.Value) + { + case DependencyContextStrings.DependenciesPropertyName: + dependencies = ReadTargetLibraryDependencies(reader); + break; + case DependencyContextStrings.RuntimeAssembliesKey: + runtimes = ReadPropertyNames(reader); + break; + case DependencyContextStrings.NativeLibrariesKey: + natives = ReadPropertyNames(reader); + break; + case DependencyContextStrings.CompileTimeAssembliesKey: + compilations = ReadPropertyNames(reader); + break; + case DependencyContextStrings.RuntimeTargetsPropertyName: + runtimeTargets = ReadTargetLibraryRuntimeTargets(reader); + break; + case DependencyContextStrings.ResourceAssembliesPropertyName: + resources = ReadTargetLibraryResources(reader); + break; + case DependencyContextStrings.CompilationOnlyPropertyName: + compileOnly = reader.ReadAsBoolean(); + break; + default: + throw new FormatException($"Unknown property name '{reader.Value}'"); + } + } + + reader.CheckEndObject(); + + return new TargetLibrary() + { + Name = targetLibraryName, + Dependencies = dependencies ?? Enumerable.Empty(), + Runtimes = runtimes, + Natives = natives, + Compilations = compilations, + RuntimeTargets = runtimeTargets, + Resources = resources, + CompileOnly = compileOnly + }; + } + + + + public IEnumerable ReadTargetLibraryDependencies(JsonTextReader reader) + { + var dependencies = new List(); + string name; + string version; + + reader.ReadStartObject(); + + while (reader.TryReadStringProperty(out name, out version)) + { + dependencies.Add(new Dependency(Pool(name), Pool(version))); + } + + reader.CheckEndObject(); + + return dependencies; + } + + private List ReadPropertyNames(JsonTextReader reader) + { + var runtimes = new List(); + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var libraryName = (string)reader.Value; + reader.Skip(); + + runtimes.Add(libraryName); + } + + reader.CheckEndObject(); + + return runtimes; + } + + private List ReadTargetLibraryRuntimeTargets(JsonTextReader reader) + { + var runtimeTargets = new List(); + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var runtimeTarget = new RuntimeTargetEntryStub(); + runtimeTarget.Path = (string)reader.Value; + + reader.ReadStartObject(); + + string propertyName; + string propertyValue; + while (reader.TryReadStringProperty(out propertyName, out propertyValue)) + { + switch (propertyName) + { + case DependencyContextStrings.RidPropertyName: + runtimeTarget.Rid = Pool(propertyValue); + break; + case DependencyContextStrings.AssetTypePropertyName: + runtimeTarget.Type = Pool(propertyValue); + break; + default: + throw new FormatException($"Unknown property name '{propertyName}'"); + } + } + + reader.CheckEndObject(); + + runtimeTargets.Add(runtimeTarget); + } + + reader.CheckEndObject(); + + return runtimeTargets; + } + + private List ReadTargetLibraryResources(JsonTextReader reader) + { + var resources = new List(); + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var path = (string)reader.Value; + string locale = null; + + reader.ReadStartObject(); + + string propertyName; + string propertyValue; + + while (reader.TryReadStringProperty(out propertyName, out propertyValue)) + { + if (propertyName == DependencyContextStrings.LocalePropertyName) + { + locale = propertyValue; + } + } + + reader.CheckEndObject(); + + if (locale != null) + { + resources.Add(new ResourceAssembly(path, Pool(locale))); + } + } + + reader.CheckEndObject(); + + return resources; + } + + private Dictionary ReadLibraries(JsonTextReader reader) + { + var libraries = new Dictionary(); + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var libraryName = (string)reader.Value; + + libraries.Add(Pool(libraryName), ReadOneLibrary(reader)); + } + + reader.CheckEndObject(); + + return libraries; + } + + private LibraryStub ReadOneLibrary(JsonTextReader reader) + { + string hash = null; + string type = null; + bool serviceable = false; + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + switch ((string)reader.Value) + { + case DependencyContextStrings.Sha512PropertyName: + hash = reader.ReadAsString(); + break; + case DependencyContextStrings.TypePropertyName: + type = reader.ReadAsString(); + break; + case DependencyContextStrings.ServiceablePropertyName: + serviceable = reader.ReadAsBoolean().GetValueOrDefault(false); + break; + default: + throw new FormatException($"Unknown property name '{reader.Value}'"); + } + } + + reader.CheckEndObject(); + + return new LibraryStub() + { + Hash = hash, + Type = Pool(type), + Serviceable = serviceable + }; + } + + private List ReadRuntimes(JsonTextReader reader) + { + var runtimeFallbacks = new List(); + + reader.ReadStartObject(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var runtime = (string)reader.Value; + var fallbacks = reader.ReadStringArray(); + + runtimeFallbacks.Add(new RuntimeFallbacks(runtime, fallbacks)); + } + + reader.CheckEndObject(); + + return runtimeFallbacks; + } + + private IEnumerable CreateLibraries(IEnumerable libraries, bool runtime, Dictionary libraryStubs) + { + if (libraries == null) { return Enumerable.Empty(); } - return librariesObject.Properties() - .Select(property => ReadLibrary(property, runtime, libraryStubs)) + return libraries + .Select(property => CreateLibrary(property, runtime, libraryStubs)) .Where(library => library != null); } - private Library ReadLibrary(JProperty property, bool runtime, Dictionary libraryStubs) + private Library CreateLibrary(TargetLibrary targetLibrary, bool runtime, Dictionary libraryStubs) { - var nameWithVersion = property.Name; + var nameWithVersion = targetLibrary.Name; LibraryStub stub; if (!libraryStubs.TryGetValue(nameWithVersion, out stub)) @@ -198,68 +572,57 @@ namespace Microsoft.Extensions.DependencyModel var name = Pool(nameWithVersion.Substring(0, seperatorPosition)); var version = Pool(nameWithVersion.Substring(seperatorPosition + 1)); - var libraryObject = (JObject)property.Value; - - var dependencies = ReadDependencies(libraryObject); - if (runtime) { // Runtime section of this library was trimmed by type:platform - var isCompilationOnly = libraryObject.Value(DependencyContextStrings.CompilationOnlyPropertyName); + var isCompilationOnly = targetLibrary.CompileOnly; if (isCompilationOnly == true) { return null; } - var runtimeTargetsObject = (JObject)libraryObject[DependencyContextStrings.RuntimeTargetsPropertyName]; - - var entries = ReadRuntimeTargetEntries(runtimeTargetsObject).ToArray(); - var runtimeAssemblyGroups = new List(); var nativeLibraryGroups = new List(); - foreach (var ridGroup in entries.GroupBy(e => e.Rid)) + if (targetLibrary.RuntimeTargets != null) { - var groupRuntimeAssemblies = ridGroup - .Where(e => e.Type == DependencyContextStrings.RuntimeAssetType) - .Select(e => e.Path) - .ToArray(); - - if (groupRuntimeAssemblies.Any()) + foreach (var ridGroup in targetLibrary.RuntimeTargets.GroupBy(e => e.Rid)) { - runtimeAssemblyGroups.Add(new RuntimeAssetGroup( - ridGroup.Key, - groupRuntimeAssemblies.Where(a => Path.GetFileName(a) != "_._"))); - } + var groupRuntimeAssemblies = ridGroup + .Where(e => e.Type == DependencyContextStrings.RuntimeAssetType) + .Select(e => e.Path) + .ToArray(); - var groupNativeLibraries = ridGroup - .Where(e => e.Type == DependencyContextStrings.NativeAssetType) - .Select(e => e.Path) - .ToArray(); + if (groupRuntimeAssemblies.Any()) + { + runtimeAssemblyGroups.Add(new RuntimeAssetGroup( + ridGroup.Key, + groupRuntimeAssemblies.Where(a => Path.GetFileName(a) != "_._"))); + } - if (groupNativeLibraries.Any()) - { - nativeLibraryGroups.Add(new RuntimeAssetGroup( - ridGroup.Key, - groupNativeLibraries.Where(a => Path.GetFileName(a) != "_._"))); + var groupNativeLibraries = ridGroup + .Where(e => e.Type == DependencyContextStrings.NativeAssetType) + .Select(e => e.Path) + .ToArray(); + + if (groupNativeLibraries.Any()) + { + nativeLibraryGroups.Add(new RuntimeAssetGroup( + ridGroup.Key, + groupNativeLibraries.Where(a => Path.GetFileName(a) != "_._"))); + } } } - var runtimeAssemblies = ReadAssetList(libraryObject, DependencyContextStrings.RuntimeAssembliesKey) - .ToArray(); - if (runtimeAssemblies.Any()) + if (targetLibrary.Runtimes != null && targetLibrary.Runtimes.Count > 0) { - runtimeAssemblyGroups.Add(new RuntimeAssetGroup(string.Empty, runtimeAssemblies)); + runtimeAssemblyGroups.Add(new RuntimeAssetGroup(string.Empty, targetLibrary.Runtimes)); } - var nativeLibraries = ReadAssetList(libraryObject, DependencyContextStrings.NativeLibrariesKey) - .ToArray(); - if(nativeLibraries.Any()) + if (targetLibrary.Natives != null && targetLibrary.Natives.Count > 0) { - nativeLibraryGroups.Add(new RuntimeAssetGroup(string.Empty, nativeLibraries)); + nativeLibraryGroups.Add(new RuntimeAssetGroup(string.Empty, targetLibrary.Natives)); } - var resourceAssemblies = ReadResourceAssemblies((JObject)libraryObject[DependencyContextStrings.ResourceAssembliesPropertyName]); - return new RuntimeLibrary( type: stub.Type, name: name, @@ -267,96 +630,17 @@ namespace Microsoft.Extensions.DependencyModel hash: stub.Hash, runtimeAssemblyGroups: runtimeAssemblyGroups, nativeLibraryGroups: nativeLibraryGroups, - resourceAssemblies: resourceAssemblies, - dependencies: dependencies, + resourceAssemblies: targetLibrary.Resources ?? Enumerable.Empty(), + dependencies: targetLibrary.Dependencies, serviceable: stub.Serviceable); } else { - var assemblies = ReadAssetList(libraryObject, DependencyContextStrings.CompileTimeAssembliesKey); - return new CompilationLibrary(stub.Type, name, version, stub.Hash, assemblies, dependencies, stub.Serviceable); + var assemblies = (targetLibrary.Compilations != null) ? targetLibrary.Compilations : Enumerable.Empty(); + return new CompilationLibrary(stub.Type, name, version, stub.Hash, assemblies, targetLibrary.Dependencies, stub.Serviceable); } } - private IEnumerable ReadResourceAssemblies(JObject resourcesObject) - { - if (resourcesObject == null) - { - yield break; - } - foreach (var resourceProperty in resourcesObject) - { - yield return new ResourceAssembly( - locale: Pool(resourceProperty.Value[DependencyContextStrings.LocalePropertyName]?.Value()), - path: resourceProperty.Key - ); - } - } - - private IEnumerable ReadRuntimeTargetEntries(JObject runtimeTargetObject) - { - if (runtimeTargetObject == null) - { - yield break; - } - foreach (var libraryProperty in runtimeTargetObject) - { - var libraryObject = (JObject)libraryProperty.Value; - yield return new RuntimeTargetEntryStub() - { - Path = libraryProperty.Key, - Rid = Pool(libraryObject[DependencyContextStrings.RidPropertyName].Value()), - Type = Pool(libraryObject[DependencyContextStrings.AssetTypePropertyName].Value()) - }; - } - } - - private static string[] ReadAssetList(JObject libraryObject, string name) - { - var assembliesObject = (JObject)libraryObject[name]; - - if (assembliesObject == null) - { - return new string[] { }; - } - - return assembliesObject.Properties().Select(property => property.Name).ToArray(); - } - - private Dependency[] ReadDependencies(JObject libraryObject) - { - var dependenciesObject = (JObject)libraryObject[DependencyContextStrings.DependenciesPropertyName]; - - if (dependenciesObject == null) - { - return new Dependency[] { }; - } - - return dependenciesObject.Properties() - .Select(property => new Dependency(Pool(property.Name), Pool((string)property.Value))).ToArray(); - } - - private Dictionary ReadLibraryStubs(JObject librariesObject) - { - var libraries = new Dictionary(); - if (librariesObject != null) - { - foreach (var libraryProperty in librariesObject) - { - var value = (JObject)libraryProperty.Value; - var stub = new LibraryStub - { - Name = Pool(libraryProperty.Key), - Hash = value[DependencyContextStrings.Sha512PropertyName]?.Value(), - Type = Pool(value[DependencyContextStrings.TypePropertyName].Value()), - Serviceable = value[DependencyContextStrings.ServiceablePropertyName]?.Value() == true - }; - libraries.Add(stub.Name, stub); - } - } - return libraries; - } - private string Pool(string s) { if (s == null) @@ -373,17 +657,43 @@ namespace Microsoft.Extensions.DependencyModel return result; } + private class Target + { + public string Name; + + public IEnumerable Libraries; + } + + private struct TargetLibrary + { + public string Name; + + public IEnumerable Dependencies; + + public List Runtimes; + + public List Natives; + + public List Compilations; + + public List RuntimeTargets; + + public List Resources; + + public bool? CompileOnly; + } + private struct RuntimeTargetEntryStub { public string Type; + public string Path; + public string Rid; } private struct LibraryStub { - public string Name; - public string Hash; public string Type; diff --git a/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs b/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs new file mode 100644 index 000000000..bf2122f03 --- /dev/null +++ b/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs @@ -0,0 +1,77 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Microsoft.Extensions.DependencyModel +{ + internal static class JsonTextReaderExtensions + { + internal static bool TryReadStringProperty(this JsonTextReader reader, out string name, out string value) + { + name = null; + value = null; + if (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + name = (string)reader.Value; + value = reader.ReadAsString(); + return true; + } + + return false; + } + + internal static void ReadStartObject(this JsonTextReader reader) + { + reader.Read(); + CheckStartObject(reader); + } + + internal static void CheckStartObject(this JsonTextReader reader) + { + if (reader.TokenType != JsonToken.StartObject) + { + throw CreateUnexpectedException(reader, "{"); + } + } + + internal static void CheckEndObject(this JsonTextReader reader) + { + if (reader.TokenType != JsonToken.EndObject) + { + throw CreateUnexpectedException(reader, "}"); + } + } + + internal static string[] ReadStringArray(this JsonTextReader reader) + { + reader.Read(); + if (reader.TokenType != JsonToken.StartArray) + { + throw CreateUnexpectedException(reader,"["); + } + + var items = new List(); + + while (reader.Read() && reader.TokenType == JsonToken.String) + { + items.Add((string)reader.Value); + } + + if (reader.TokenType != JsonToken.EndArray) + { + throw CreateUnexpectedException(reader, "]"); + } + + return items.ToArray(); + } + + internal static Exception CreateUnexpectedException(JsonTextReader reader, string expected) + { + return new FormatException($"Unexpected character encountered, excepted '{expected}' " + + $"at line {reader.LineNumber} position {reader.LinePosition} path {reader.Path}"); + } + } +} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs index 310042d82..6d807ab78 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs @@ -26,7 +26,8 @@ namespace Microsoft.Extensions.DependencyModel.Tests var context = Read( @"{ ""runtimeTarget"": { - ""name"":"".NETCoreApp,Version=v1.0/osx.10.10-x64"" + ""name"":"".NETCoreApp,Version=v1.0/osx.10.10-x64"", + ""signature"":""target-signature"" }, ""targets"": { "".NETCoreApp,Version=v1.0/osx.10.10-x64"": {}, @@ -35,6 +36,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests context.Target.IsPortable.Should().BeFalse(); context.Target.Framework.Should().Be(".NETCoreApp,Version=v1.0"); context.Target.Runtime.Should().Be("osx.10.10-x64"); + context.Target.RuntimeSignature.Should().Be("target-signature"); } [Fact] @@ -299,7 +301,9 @@ namespace Microsoft.Extensions.DependencyModel.Tests { var context = Read( @"{ - ""runtimeTarget"": "".NETCoreApp,Version=v1.0"", + ""runtimeTarget"": { + ""name"": "".NETCoreApp,Version=v1.0"" + }, ""targets"": { "".NETCoreApp,Version=v1.0"": { ""System.Banana/1.0.0"": { From 931e8fdf96dfff620ee4f199d3b706c11a05ed1b Mon Sep 17 00:00:00 2001 From: Bryan Thornbury Date: Tue, 2 Aug 2016 16:18:19 -0700 Subject: [PATCH 132/165] Add support for user runtimeconfig --- .../GenerateRuntimeConfigurationFiles.cs | 12 +++++++----- src/dotnet/Microsoft.DotNet.Core.Sdk.targets | 8 +++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs index d32327b74..277eb277c 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs @@ -28,7 +28,7 @@ namespace Microsoft.DotNet.Core.Build.Tasks public string RuntimeConfigDevPath { get; set; } - public string RawRuntimeOptions { get; set; } + public string UserRuntimeConfig { get; set; } private LockFile LockFile { get; set; } @@ -52,7 +52,7 @@ namespace Microsoft.DotNet.Core.Build.Tasks config.RuntimeOptions = new RuntimeOptions(); AddFramework(config.RuntimeOptions); - AddRuntimeOptions(config.RuntimeOptions); + AddUserRuntimeOptions(config.RuntimeOptions); WriteToJsonFile(RuntimeConfigPath, config); } @@ -76,14 +76,16 @@ namespace Microsoft.DotNet.Core.Build.Tasks } } - private void AddRuntimeOptions(RuntimeOptions runtimeOptions) + private void AddUserRuntimeOptions(RuntimeOptions runtimeOptions) { - if (string.IsNullOrEmpty(RawRuntimeOptions)) + if (string.IsNullOrEmpty(UserRuntimeConfig) || !File.Exists(UserRuntimeConfig)) { return; } - var runtimeOptionsFromProject = JObject.Parse(RawRuntimeOptions); + var rawRuntimeOptions = File.ReadAllText(UserRuntimeConfig); + + var runtimeOptionsFromProject = JObject.Parse(rawRuntimeOptions); foreach (var runtimeOption in runtimeOptionsFromProject) { runtimeOptions.RawOptions.Add(runtimeOption.Key, runtimeOption.Value); diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets index 0faa0d006..0a08997a5 100644 --- a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets +++ b/src/dotnet/Microsoft.DotNet.Core.Sdk.targets @@ -7,7 +7,7 @@ $(MSBuildToolsPath)/ - + + UserRuntimeConfig="$(UserRuntimeConfig)" /> From 79648f9ccb11f2238d528333aefd63f43bad2efc Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Sun, 7 Aug 2016 01:51:47 -0700 Subject: [PATCH 133/165] Update stage0 msbuild --- src/Microsoft.DotNet.Core.Build.Tasks/project.json | 6 +++--- src/dotnet/project.json | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json index 985721190..58b48191e 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -26,9 +26,9 @@ "portable-net45+wp80+win8+wpa81+dnxcore50" ], "dependencies": { - "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805" } } } diff --git a/src/dotnet/project.json b/src/dotnet/project.json index a4df97b88..f7cc39482 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -71,12 +71,12 @@ "exclude": "compile" }, - "MSBuild": "0.1.0-preview-00024-160610", - "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00024-160610", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610", - "Microsoft.Build.Targets": "0.1.0-preview-00024-160610", - "Microsoft.Build": "0.1.0-preview-00024-160610", + "MSBuild": "0.1.0-preview-00029-160805", + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Targets": "0.1.0-preview-00029-160805", + "Microsoft.Build": "0.1.0-preview-00029-160805", "Microsoft.Net.Compilers.netcore": "1.3.0", "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", "Microsoft.Cci": "4.0.0-rc3-24128-00", From f277103831acaaf8f60d4950bcbaecbda22cc554 Mon Sep 17 00:00:00 2001 From: PiotrP Date: Mon, 8 Aug 2016 13:44:44 -0700 Subject: [PATCH 134/165] Make GivenThatICopyLibraryAssets repeatable --- .../GivenThatICopyLibraryAssets.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs index b8421c27b..373d7a95e 100644 --- a/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs +++ b/test/Microsoft.DotNet.Compiler.Common.Tests/GivenThatICopyLibraryAssets.cs @@ -60,6 +60,13 @@ namespace Microsoft.DotNet.Cli.Compiler.Common.Tests var mockedLibraryAssetFileName = $"{mockedLibraryAssetName}.dll"; var fakeFile = Path.Combine(AppContext.BaseDirectory, mockedLibraryAssetFileName); + + if (File.Exists(fakeFile)) + { + File.SetAttributes(fakeFile, FileAttributes.Normal); + File.Delete(fakeFile); + } + File.WriteAllText(fakeFile, mockedLibraryAssetName); return new LibraryAsset(mockedLibraryAssetName, mockedLibraryAssetFileName, fakeFile); From 359f274626633f8636f2287e848b3f13bccca187 Mon Sep 17 00:00:00 2001 From: PiotrP Date: Mon, 8 Aug 2016 14:35:09 -0700 Subject: [PATCH 135/165] Workaround for msbuild #872 --- build/Microsoft.DotNet.Cli.Compile.targets | 7 ++ resources/MSBuild.exe.config | 75 ++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 resources/MSBuild.exe.config diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 3d444f65f..b1f329b1c 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -225,5 +225,12 @@ DestinationFiles="@(FilesToCopy->'$(StageSymbolsDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" /> + + + + + \ No newline at end of file diff --git a/resources/MSBuild.exe.config b/resources/MSBuild.exe.config new file mode 100644 index 000000000..76d340ed2 --- /dev/null +++ b/resources/MSBuild.exe.config @@ -0,0 +1,75 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From f09903d5c6e8b1d5724476355131bfefde573290 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 9 Aug 2016 00:28:41 -0700 Subject: [PATCH 136/165] Copy MSBuild.exe into root dir to work around MSBUILD #872 --- build/Microsoft.DotNet.Cli.Compile.targets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index b1f329b1c..24e9613f4 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -227,6 +227,9 @@ + + From 5f60c2cf379e825fa78312d4ffa15ccab137ebf3 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 9 Aug 2016 01:12:29 -0700 Subject: [PATCH 137/165] Move CLI Build to MSBuild 00024-160610 --- build_projects/dotnet-cli-build/project.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 9350f4c12..ba1afc5a5 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -21,8 +21,8 @@ "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697", - "Microsoft.Build.Framework": "0.1.0-preview-00024-160610", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00024-160610" + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805" }, "frameworks": { "netcoreapp1.0": { From 16692fc75c1bc194b7bfde24d9cb95d6c1cb9551 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 9 Aug 2016 02:41:12 -0700 Subject: [PATCH 138/165] Remove CDN caching from version files --- scripts/obtain/dotnet-install.ps1 | 5 +++-- scripts/obtain/dotnet-install.sh | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1 index 7823d80a5..291623c1c 100644 --- a/scripts/obtain/dotnet-install.ps1 +++ b/scripts/obtain/dotnet-install.ps1 @@ -59,6 +59,7 @@ param( [switch]$DryRun, [switch]$NoPath, [string]$AzureFeed="https://dotnetcli.azureedge.net/dotnet" + [string]$UncachedFeed="https://dotnetcli.azureedge.net/dotnet" ) Set-StrictMode -Version Latest @@ -120,10 +121,10 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$AzureChannel, [str $VersionFileUrl = $null if ($SharedRuntime) { - $VersionFileUrl = "$AzureFeed/$AzureChannel/dnvm/latest.sharedfx.win.$CLIArchitecture.version" + $VersionFileUrl = "$UncachedFeed/$AzureChannel/dnvm/latest.sharedfx.win.$CLIArchitecture.version" } else { - $VersionFileUrl = "$AzureFeed/Sdk/$AzureChannel/latest.version" + $VersionFileUrl = "$UncachedFeed/Sdk/$AzureChannel/latest.version" } $Response = Invoke-WebRequest -UseBasicParsing $VersionFileUrl diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh index 71bbb89cb..3abfb6772 100755 --- a/scripts/obtain/dotnet-install.sh +++ b/scripts/obtain/dotnet-install.sh @@ -286,9 +286,9 @@ get_latest_version_info() { local version_file_url=null if [ "$shared_runtime" = true ]; then - version_file_url="$azure_feed/$azure_channel/dnvm/latest.sharedfx.$osname.$normalized_architecture.version" + version_file_url="$uncached_feed/$azure_channel/dnvm/latest.sharedfx.$osname.$normalized_architecture.version" else - version_file_url="$azure_feed/Sdk/$azure_channel/latest.version" + version_file_url="$uncached_feed/Sdk/$azure_channel/latest.version" fi say_verbose "get_latest_version_info: latest url: $version_file_url" @@ -557,6 +557,7 @@ debug_symbols=false dry_run=false no_path=false azure_feed="https://dotnetcli.azureedge.net/dotnet" +uncached_feed="https://dotnetcli.blob.core.windows.net/dotnet" verbose=false shared_runtime=false From d5179f91685288ed7eea5eb8d6386af482a13832 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 08:28:23 -0500 Subject: [PATCH 139/165] Temporarily copy the dotnet/buildtools tasks we use into dotnet/cli to allow us to move up to a newer MSBuild. --- build/Microsoft.DotNet.Cli.Publish.targets | 6 +- build/Microsoft.DotNet.Cli.tasks | 7 +- build/publish/PublishContent.targets | 41 ++ .../dotnet-cli-build/AzureHelper.cs | 401 ++++++++++++++++++ .../dotnet-cli-build/CreateAzureContainer.cs | 167 ++++++++ .../dotnet-cli-build/UploadClient.cs | 183 ++++++++ .../dotnet-cli-build/UploadToAzure.cs | 186 ++++++++ .../ZipFileCreateFromDirectory.cs | 131 ++++++ .../ZipFileExtractToDirectory.cs | 65 +++ 9 files changed, 1179 insertions(+), 8 deletions(-) create mode 100644 build/publish/PublishContent.targets create mode 100644 build_projects/dotnet-cli-build/AzureHelper.cs create mode 100644 build_projects/dotnet-cli-build/CreateAzureContainer.cs create mode 100644 build_projects/dotnet-cli-build/UploadClient.cs create mode 100644 build_projects/dotnet-cli-build/UploadToAzure.cs create mode 100644 build_projects/dotnet-cli-build/ZipFileCreateFromDirectory.cs create mode 100644 build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs diff --git a/build/Microsoft.DotNet.Cli.Publish.targets b/build/Microsoft.DotNet.Cli.Publish.targets index 6d35e94f7..d791c9d3b 100644 --- a/build/Microsoft.DotNet.Cli.Publish.targets +++ b/build/Microsoft.DotNet.Cli.Publish.targets @@ -1,12 +1,8 @@ - + - - - - - - - + + + + diff --git a/build/publish/PublishContent.targets b/build/publish/PublishContent.targets new file mode 100644 index 000000000..63427baba --- /dev/null +++ b/build/publish/PublishContent.targets @@ -0,0 +1,41 @@ + + + + false + + + + + + + + + + + + $([System.String]::Copy('%(RecursiveDir)%(Filename)%(Extension)').Replace('\' ,'/')) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/AzureHelper.cs b/build_projects/dotnet-cli-build/AzureHelper.cs new file mode 100644 index 000000000..1c3f55e7f --- /dev/null +++ b/build_projects/dotnet-cli-build/AzureHelper.cs @@ -0,0 +1,401 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.DotNet.Build.CloudTestTasks +{ + public static class AzureHelper + { + /// + /// The storage api version. + /// + public static readonly string StorageApiVersion = "2015-04-05"; + + public const string DateHeaderString = "x-ms-date"; + + public const string VersionHeaderString = "x-ms-version"; + + public const string AuthorizationHeaderString = "Authorization"; + + public enum SasAccessType + { + Read, + Write, + }; + + public static string AuthorizationHeader( + string storageAccount, + string storageKey, + string method, + DateTime now, + HttpRequestMessage request, + string ifMatch = "", + string contentMD5 = "", + string size = "", + string contentType = "") + { + string stringToSign = string.Format( + "{0}\n\n\n{1}\n{5}\n{6}\n\n\n{2}\n\n\n\n{3}{4}", + method, + (size == string.Empty) ? string.Empty : size, + ifMatch, + GetCanonicalizedHeaders(request), + GetCanonicalizedResource(request.RequestUri, storageAccount), + contentMD5, + contentType); + + byte[] signatureBytes = Encoding.UTF8.GetBytes(stringToSign); + string authorizationHeader; + using (HMACSHA256 hmacsha256 = new HMACSHA256(Convert.FromBase64String(storageKey))) + { + authorizationHeader = "SharedKey " + storageAccount + ":" + + Convert.ToBase64String(hmacsha256.ComputeHash(signatureBytes)); + } + + return authorizationHeader; + } + + public static string CreateContainerSasToken( + string accountName, + string containerName, + string key, + SasAccessType accessType, + int validityTimeInDays) + { + string signedPermissions = string.Empty; + switch (accessType) + { + case SasAccessType.Read: + signedPermissions = "r"; + break; + case SasAccessType.Write: + signedPermissions = "wdl"; + break; + default: + throw new ArgumentOutOfRangeException(nameof(accessType), accessType, "Unrecognized value"); + } + + string signedStart = DateTime.UtcNow.ToString("O"); + string signedExpiry = DateTime.UtcNow.AddDays(validityTimeInDays).ToString("O"); + string canonicalizedResource = "/blob/" + accountName + "/" + containerName; + string signedIdentifier = string.Empty; + string signedVersion = StorageApiVersion; + + string stringToSign = ConstructServiceStringToSign( + signedPermissions, + signedVersion, + signedExpiry, + canonicalizedResource, + signedIdentifier, + signedStart); + + byte[] signatureBytes = Encoding.UTF8.GetBytes(stringToSign); + string signature; + using (HMACSHA256 hmacSha256 = new HMACSHA256(Convert.FromBase64String(key))) + { + signature = Convert.ToBase64String(hmacSha256.ComputeHash(signatureBytes)); + } + + string sasToken = string.Format( + "?sv={0}&sr={1}&sig={2}&st={3}&se={4}&sp={5}", + WebUtility.UrlEncode(signedVersion), + WebUtility.UrlEncode("c"), + WebUtility.UrlEncode(signature), + WebUtility.UrlEncode(signedStart), + WebUtility.UrlEncode(signedExpiry), + WebUtility.UrlEncode(signedPermissions)); + + return sasToken; + } + + public static string GetCanonicalizedHeaders(HttpRequestMessage request) + { + StringBuilder sb = new StringBuilder(); + List headerNameList = (from headerName in request.Headers + where + headerName.Key.ToLowerInvariant() + .StartsWith("x-ms-", StringComparison.Ordinal) + select headerName.Key.ToLowerInvariant()).ToList(); + headerNameList.Sort(); + foreach (string headerName in headerNameList) + { + StringBuilder builder = new StringBuilder(headerName); + string separator = ":"; + foreach (string headerValue in GetHeaderValues(request.Headers, headerName)) + { + string trimmedValue = headerValue.Replace("\r\n", string.Empty); + builder.Append(separator); + builder.Append(trimmedValue); + separator = ","; + } + + sb.Append(builder); + sb.Append("\n"); + } + + return sb.ToString(); + } + + public static string GetCanonicalizedResource(Uri address, string accountName) + { + StringBuilder str = new StringBuilder(); + StringBuilder builder = new StringBuilder("/"); + builder.Append(accountName); + builder.Append(address.AbsolutePath); + str.Append(builder); + Dictionary> queryKeyValues = ExtractQueryKeyValues(address); + Dictionary> dictionary = GetCommaSeparatedList(queryKeyValues); + + foreach (KeyValuePair> pair in dictionary.OrderBy(p => p.Key)) + { + StringBuilder stringBuilder = new StringBuilder(string.Empty); + stringBuilder.Append(pair.Key + ":"); + string commaList = string.Join(",", pair.Value); + stringBuilder.Append(commaList); + str.Append("\n"); + str.Append(stringBuilder); + } + + return str.ToString(); + } + + public static List GetHeaderValues(HttpRequestHeaders headers, string headerName) + { + List list = new List(); + IEnumerable values; + headers.TryGetValues(headerName, out values); + if (values != null) + { + list.Add((values.FirstOrDefault() ?? string.Empty).TrimStart(null)); + } + + return list; + } + + private static bool IsWithinRetryRange(HttpStatusCode statusCode) + { + // Retry on http client and server error codes (4xx - 5xx) as well as redirect + + var rawStatus = (int)statusCode; + if (rawStatus == 302) + return true; + else if (rawStatus >= 400 && rawStatus <= 599) + return true; + else + return false; + } + + public static async Task RequestWithRetry(TaskLoggingHelper loggingHelper, HttpClient client, + Func createRequest, Func validationCallback = null, int retryCount = 5, + int retryDelaySeconds = 5) + { + if (loggingHelper == null) + throw new ArgumentNullException(nameof(loggingHelper)); + if (client == null) + throw new ArgumentNullException(nameof(client)); + if (createRequest == null) + throw new ArgumentNullException(nameof(createRequest)); + if (retryCount < 1) + throw new ArgumentException(nameof(retryCount)); + if (retryDelaySeconds < 1) + throw new ArgumentException(nameof(retryDelaySeconds)); + + int retries = 0; + HttpResponseMessage response = null; + + // add a bit of randomness to the retry delay + var rng = new Random(); + + while (retries < retryCount) + { + if (retries > 0) + { + if (response != null) + { + response.Dispose(); + response = null; + } + + int delay = retryDelaySeconds * retries * rng.Next(1, 5); + loggingHelper.LogMessage(MessageImportance.Low, "Waiting {0} seconds before retry", delay); + await System.Threading.Tasks.Task.Delay(delay * 1000); + } + + try + { + using (var request = createRequest()) + response = await client.SendAsync(request); + } + catch (Exception e) + { + loggingHelper.LogWarningFromException(e, true); + + // if this is the final iteration let the exception bubble up + if (retries + 1 == retryCount) + throw; + } + + // response can be null if we fail to send the request + if (response != null) + { + if (validationCallback == null) + { + // check if the response code is within the range of failures + if (IsWithinRetryRange(response.StatusCode)) + { + loggingHelper.LogWarning("Request failed with status code {0}", response.StatusCode); + } + else + { + loggingHelper.LogMessage(MessageImportance.Low, "Response completed with status code {0}", response.StatusCode); + return response; + } + } + else + { + bool isSuccess = validationCallback(response); + if (!isSuccess) + { + loggingHelper.LogMessage("Validation callback returned retry for status code {0}", response.StatusCode); + } + else + { + loggingHelper.LogMessage("Validation callback returned success for status code {0}", response.StatusCode); + return response; + } + } + } + + ++retries; + } + + // retry count exceeded + loggingHelper.LogWarning("Retry count {0} exceeded", retryCount); + + // set some default values in case response is null + var statusCode = "None"; + var contentStr = "Null"; + if (response != null) + { + statusCode = response.StatusCode.ToString(); + contentStr = await response.Content.ReadAsStringAsync(); + response.Dispose(); + } + + throw new HttpRequestException(string.Format("Request failed with status {0} response {1}", statusCode, contentStr)); + } + + private static string ConstructServiceStringToSign( + string signedPermissions, + string signedVersion, + string signedExpiry, + string canonicalizedResource, + string signedIdentifier, + string signedStart, + string signedIP = "", + string signedProtocol = "", + string rscc = "", + string rscd = "", + string rsce = "", + string rscl = "", + string rsct = "") + { + // constructing string to sign based on spec in https://msdn.microsoft.com/en-us/library/azure/dn140255.aspx + var stringToSign = string.Join( + "\n", + signedPermissions, + signedStart, + signedExpiry, + canonicalizedResource, + signedIdentifier, + signedIP, + signedProtocol, + signedVersion, + rscc, + rscd, + rsce, + rscl, + rsct); + return stringToSign; + } + + private static Dictionary> ExtractQueryKeyValues(Uri address) + { + Dictionary> values = new Dictionary>(); + //Decode this to allow the regex to pull out the correct groups for signing + address = new Uri(WebUtility.UrlDecode(address.ToString())); + Regex newreg = new Regex(@"\?(\w+)\=([\w|\=]+)|\&(\w+)\=([\w|\=]+)"); + MatchCollection matches = newreg.Matches(address.Query); + foreach (Match match in matches) + { + string key, value; + if (!string.IsNullOrEmpty(match.Groups[1].Value)) + { + key = match.Groups[1].Value; + value = match.Groups[2].Value; + } + else + { + key = match.Groups[3].Value; + value = match.Groups[4].Value; + } + + HashSet setOfValues; + if (values.TryGetValue(key, out setOfValues)) + { + setOfValues.Add(value); + } + else + { + HashSet newSet = new HashSet { value }; + values.Add(key, newSet); + } + } + + return values; + } + + private static Dictionary> GetCommaSeparatedList( + Dictionary> queryKeyValues) + { + Dictionary> dictionary = new Dictionary>(); + + foreach (string queryKeys in queryKeyValues.Keys) + { + HashSet setOfValues; + queryKeyValues.TryGetValue(queryKeys, out setOfValues); + List list = new List(); + list.AddRange(setOfValues); + list.Sort(); + string commaSeparatedValues = string.Join(",", list); + string key = queryKeys.ToLowerInvariant(); + HashSet setOfValues2; + if (dictionary.TryGetValue(key, out setOfValues2)) + { + setOfValues2.Add(commaSeparatedValues); + } + else + { + HashSet newSet = new HashSet { commaSeparatedValues }; + dictionary.Add(key, newSet); + } + } + + return dictionary; + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/CreateAzureContainer.cs b/build_projects/dotnet-cli-build/CreateAzureContainer.cs new file mode 100644 index 000000000..9ad34e06c --- /dev/null +++ b/build_projects/dotnet-cli-build/CreateAzureContainer.cs @@ -0,0 +1,167 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Globalization; +using System.IO; +using System.Net; +using System.Threading.Tasks; +using System.Net.Http; +using Microsoft.Build.Framework; + +using Task = Microsoft.Build.Utilities.Task; + +namespace Microsoft.DotNet.Build.CloudTestTasks +{ + public sealed class CreateAzureContainer : Task + { + /// + /// The Azure account key used when creating the connection string. + /// + [Required] + public string AccountKey { get; set; } + + /// + /// The Azure account name used when creating the connection string. + /// + [Required] + public string AccountName { get; set; } + + /// + /// The name of the container to create. The specified name must be in the correct format, see the + /// following page for more info. https://msdn.microsoft.com/en-us/library/azure/dd135715.aspx + /// + [Required] + public string ContainerName { get; set; } + + /// + /// When false, if the specified container already exists get a reference to it. + /// When true, if the specified container already exists the task will fail. + /// + public bool FailIfExists { get; set; } + + /// + /// The read-only SAS token created when ReadOnlyTokenDaysValid is greater than zero. + /// + [Output] + public string ReadOnlyToken { get; set; } + + /// + /// The number of days for which the read-only token should be valid. + /// + public int ReadOnlyTokenDaysValid { get; set; } + + /// + /// The URI of the created container. + /// + [Output] + public string StorageUri { get; set; } + + /// + /// The write-only SAS token create when WriteOnlyTokenDaysValid is greater than zero. + /// + [Output] + public string WriteOnlyToken { get; set; } + + /// + /// The number of days for which the write-only token should be valid. + /// + public int WriteOnlyTokenDaysValid { get; set; } + + public override bool Execute() + { + return ExecuteAsync().GetAwaiter().GetResult(); + } + + public async Task ExecuteAsync() + { + Log.LogMessage( + MessageImportance.High, + "Creating container named '{0}' in storage account {1}.", + ContainerName, + AccountName); + string url = string.Format( + "https://{0}.blob.core.windows.net/{1}?restype=container", + AccountName, + ContainerName); + StorageUri = string.Format( + "https://{0}.blob.core.windows.net/{1}/", + AccountName, + ContainerName); + + Log.LogMessage(MessageImportance.Low, "Sending request to create Container"); + using (HttpClient client = new HttpClient()) + { + Func createRequest = () => + { + DateTime dt = DateTime.UtcNow; + var req = new HttpRequestMessage(HttpMethod.Put, url); + req.Headers.Add(AzureHelper.DateHeaderString, dt.ToString("R", CultureInfo.InvariantCulture)); + req.Headers.Add(AzureHelper.VersionHeaderString, AzureHelper.StorageApiVersion); + req.Headers.Add(AzureHelper.AuthorizationHeaderString, AzureHelper.AuthorizationHeader( + AccountName, + AccountKey, + "PUT", + dt, + req)); + byte[] bytestoWrite = new byte[0]; + int bytesToWriteLength = 0; + + Stream postStream = new MemoryStream(); + postStream.Write(bytestoWrite, 0, bytesToWriteLength); + req.Content = new StreamContent(postStream); + + return req; + }; + + Func validate = (HttpResponseMessage response) => + { + // the Conflict status (409) indicates that the container already exists, so + // if FailIfExists is set to false and we get a 409 don't fail the task. + return response.IsSuccessStatusCode || (!FailIfExists && response.StatusCode == HttpStatusCode.Conflict); + }; + + using (HttpResponseMessage response = await AzureHelper.RequestWithRetry(Log, client, createRequest, validate)) + { + try + { + Log.LogMessage( + MessageImportance.Low, + "Received response to create Container {0}: Status Code: {1} {2}", + ContainerName, response.StatusCode, response.Content.ToString()); + + // specifying zero is valid, it means "I don't want a token" + if (ReadOnlyTokenDaysValid > 0) + { + ReadOnlyToken = AzureHelper.CreateContainerSasToken( + AccountName, + ContainerName, + AccountKey, + AzureHelper.SasAccessType.Read, + ReadOnlyTokenDaysValid); + } + + // specifying zero is valid, it means "I don't want a token" + if (WriteOnlyTokenDaysValid > 0) + { + WriteOnlyToken = AzureHelper.CreateContainerSasToken( + AccountName, + ContainerName, + AccountKey, + AzureHelper.SasAccessType.Write, + WriteOnlyTokenDaysValid); + } + } + catch (Exception e) + { + Log.LogErrorFromException(e, true); + return false; + } + } + } + + return true; + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/UploadClient.cs b/build_projects/dotnet-cli-build/UploadClient.cs new file mode 100644 index 000000000..6fe51e31f --- /dev/null +++ b/build_projects/dotnet-cli-build/UploadClient.cs @@ -0,0 +1,183 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading; +using Task = System.Threading.Tasks.Task; + +namespace Microsoft.DotNet.Build.CloudTestTasks +{ + public class UploadClient + { + private TaskLoggingHelper log; + + public UploadClient(TaskLoggingHelper loggingHelper) + { + log = loggingHelper; + } + + public string EncodeBlockIds(int numberOfBlocks, int lengthOfId) + { + string numberOfBlocksString = numberOfBlocks.ToString("D" + lengthOfId); + if (Encoding.UTF8.GetByteCount(numberOfBlocksString) <= 64) + { + byte[] bytes = Encoding.UTF8.GetBytes(numberOfBlocksString); + return Convert.ToBase64String(bytes); + } + else + { + throw new Exception("Task failed - Could not encode block id."); + } + } + + public async Task UploadBlockBlobAsync( + CancellationToken ct, + string AccountName, + string AccountKey, + string ContainerName, + string filePath, + string destinationBlob) + { + + string resourceUrl = string.Format("https://{0}.blob.core.windows.net/{1}", AccountName, ContainerName); + + string fileName = destinationBlob; + fileName = fileName.Replace("\\", "/"); + string blobUploadUrl = resourceUrl + "/" + fileName; + int size = (int)new FileInfo(filePath).Length; + int blockSize = 4 * 1024 * 1024; //4MB max size of a block blob + int bytesLeft = size; + List blockIds = new List(); + int numberOfBlocks = (size / blockSize) + 1; + int countForId = 0; + using (FileStream fileStreamTofilePath = new FileStream(filePath, FileMode.Open)) + { + int offset = 0; + + while (bytesLeft > 0) + { + int nextBytesToRead = (bytesLeft < blockSize) ? bytesLeft : blockSize; + byte[] fileBytes = new byte[blockSize]; + int read = fileStreamTofilePath.Read(fileBytes, 0, nextBytesToRead); + + if (nextBytesToRead != read) + { + throw new Exception(string.Format( + "Number of bytes read ({0}) from file {1} isn't equal to the number of bytes expected ({2}) .", + read, fileName, nextBytesToRead)); + } + + string blockId = EncodeBlockIds(countForId, numberOfBlocks.ToString().Length); + + blockIds.Add(blockId); + string blockUploadUrl = blobUploadUrl + "?comp=block&blockid=" + WebUtility.UrlEncode(blockId); + + using (HttpClient client = new HttpClient()) + { + client.DefaultRequestHeaders.Clear(); + Func createRequest = () => + { + DateTime dt = DateTime.UtcNow; + var req = new HttpRequestMessage(HttpMethod.Put, blockUploadUrl); + req.Headers.Add( + AzureHelper.DateHeaderString, + dt.ToString("R", CultureInfo.InvariantCulture)); + req.Headers.Add(AzureHelper.VersionHeaderString, AzureHelper.StorageApiVersion); + req.Headers.Add( + AzureHelper.AuthorizationHeaderString, + AzureHelper.AuthorizationHeader( + AccountName, + AccountKey, + "PUT", + dt, + req, + string.Empty, + string.Empty, + nextBytesToRead.ToString(), + string.Empty)); + + Stream postStream = new MemoryStream(); + postStream.Write(fileBytes, 0, nextBytesToRead); + postStream.Seek(0, SeekOrigin.Begin); + req.Content = new StreamContent(postStream); + return req; + }; + + log.LogMessage(MessageImportance.Low, "Sending request to upload part {0} of file {1}", countForId, fileName); + + using (HttpResponseMessage response = await AzureHelper.RequestWithRetry(log, client, createRequest)) + { + log.LogMessage( + MessageImportance.Low, + "Received response to upload part {0} of file {1}: Status Code:{2} Status Desc: {3}", + countForId, + fileName, + response.StatusCode, + await response.Content.ReadAsStringAsync()); + } + } + + offset += read; + bytesLeft -= nextBytesToRead; + countForId += 1; + } + } + + string blockListUploadUrl = blobUploadUrl + "?comp=blocklist"; + + using (HttpClient client = new HttpClient()) + { + Func createRequest = () => + { + DateTime dt1 = DateTime.UtcNow; + var req = new HttpRequestMessage(HttpMethod.Put, blockListUploadUrl); + req.Headers.Add(AzureHelper.DateHeaderString, dt1.ToString("R", CultureInfo.InvariantCulture)); + req.Headers.Add(AzureHelper.VersionHeaderString, AzureHelper.StorageApiVersion); + + var body = new StringBuilder(""); + foreach (object item in blockIds) + body.AppendFormat("{0}", item); + + body.Append(""); + byte[] bodyData = Encoding.UTF8.GetBytes(body.ToString()); + req.Headers.Add( + AzureHelper.AuthorizationHeaderString, + AzureHelper.AuthorizationHeader( + AccountName, + AccountKey, + "PUT", + dt1, + req, + string.Empty, + string.Empty, + bodyData.Length.ToString(), + "")); + Stream postStream = new MemoryStream(); + postStream.Write(bodyData, 0, bodyData.Length); + postStream.Seek(0, SeekOrigin.Begin); + req.Content = new StreamContent(postStream); + return req; + }; + + using (HttpResponseMessage response = await AzureHelper.RequestWithRetry(log, client, createRequest)) + { + log.LogMessage( + MessageImportance.Low, + "Received response to combine block list for file {0}: Status Code:{1} Status Desc: {2}", + fileName, + response.StatusCode, + await response.Content.ReadAsStringAsync()); + } + } + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/UploadToAzure.cs b/build_projects/dotnet-cli-build/UploadToAzure.cs new file mode 100644 index 000000000..b166a87dc --- /dev/null +++ b/build_projects/dotnet-cli-build/UploadToAzure.cs @@ -0,0 +1,186 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Net; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; +using System.Linq; +using System.Net.Http; + +using Microsoft.Build.Framework; + +using Task = Microsoft.Build.Utilities.Task; +using ThreadingTask = System.Threading.Tasks.Task; + +namespace Microsoft.DotNet.Build.CloudTestTasks +{ + public class UploadToAzure : Task, ICancelableTask + { + private static readonly CancellationTokenSource TokenSource = new CancellationTokenSource(); + private static readonly CancellationToken CancellationToken = TokenSource.Token; + + /// + /// The Azure account key used when creating the connection string. + /// + [Required] + public string AccountKey { get; set; } + + /// + /// The Azure account name used when creating the connection string. + /// + [Required] + public string AccountName { get; set; } + + /// + /// The name of the container to access. The specified name must be in the correct format, see the + /// following page for more info. https://msdn.microsoft.com/en-us/library/azure/dd135715.aspx + /// + [Required] + public string ContainerName { get; set; } + + /// + /// An item group of files to upload. Each item must have metadata RelativeBlobPath + /// that specifies the path relative to ContainerName where the item will be uploaded. + /// + [Required] + public ITaskItem[] Items { get; set; } + + /// + /// Indicates if the destination blob should be overwritten if it already exists. The default if false. + /// + public bool Overwrite { get; set; } = false; + + /// + /// Specifies the maximum number of clients to concurrently upload blobs to azure + /// + public int MaxClients { get; set; } = 8; + + public void Cancel() + { + TokenSource.Cancel(); + } + + public override bool Execute() + { + return ExecuteAsync(CancellationToken).GetAwaiter().GetResult(); + } + + public async Task ExecuteAsync(CancellationToken ct) + { + Log.LogMessage( + MessageImportance.High, + "Begin uploading blobs to Azure account {0} in container {1}.", + AccountName, + ContainerName); + + if (Items.Length == 0) + { + Log.LogError("No items were provided for upload."); + return false; + } + + // first check what blobs are present + string checkListUrl = string.Format( + "https://{0}.blob.core.windows.net/{1}?restype=container&comp=list", + AccountName, + ContainerName); + + HashSet blobsPresent = new HashSet(StringComparer.OrdinalIgnoreCase); + + try + { + using (HttpClient client = new HttpClient()) + { + Func createRequest = () => + { + DateTime dt = DateTime.UtcNow; + var req = new HttpRequestMessage(HttpMethod.Get, checkListUrl); + req.Headers.Add(AzureHelper.DateHeaderString, dt.ToString("R", CultureInfo.InvariantCulture)); + req.Headers.Add(AzureHelper.VersionHeaderString, AzureHelper.StorageApiVersion); + req.Headers.Add(AzureHelper.AuthorizationHeaderString, AzureHelper.AuthorizationHeader( + AccountName, + AccountKey, + "GET", + dt, + req)); + return req; + }; + + Log.LogMessage(MessageImportance.Low, "Sending request to check whether Container blobs exist"); + using (HttpResponseMessage response = await AzureHelper.RequestWithRetry(Log, client, createRequest)) + { + var doc = new XmlDocument(); + doc.LoadXml(await response.Content.ReadAsStringAsync()); + + XmlNodeList nodes = doc.DocumentElement.GetElementsByTagName("Blob"); + + foreach (XmlNode node in nodes) + { + blobsPresent.Add(node["Name"].InnerText); + } + + Log.LogMessage(MessageImportance.Low, "Received response to check whether Container blobs exist"); + } + } + + using (var clientThrottle = new SemaphoreSlim(this.MaxClients, this.MaxClients)) + { + await ThreadingTask.WhenAll(Items.Select(item => UploadAsync(ct, item, blobsPresent, clientThrottle))); + } + + Log.LogMessage(MessageImportance.High, "Upload to Azure is complete, a total of {0} items were uploaded.", Items.Length); + return true; + } + catch (Exception e) + { + Log.LogErrorFromException(e, true); + return false; + } + } + + private async ThreadingTask UploadAsync(CancellationToken ct, ITaskItem item, HashSet blobsPresent, SemaphoreSlim clientThrottle) + { + if (ct.IsCancellationRequested) + { + Log.LogError("Task UploadToAzure cancelled"); + ct.ThrowIfCancellationRequested(); + } + + string relativeBlobPath = item.GetMetadata("RelativeBlobPath"); + if (string.IsNullOrEmpty(relativeBlobPath)) + throw new Exception(string.Format("Metadata 'RelativeBlobPath' is missing for item '{0}'.", item.ItemSpec)); + + if (!File.Exists(item.ItemSpec)) + throw new Exception(string.Format("The file '{0}' does not exist.", item.ItemSpec)); + + if (!Overwrite && blobsPresent.Contains(relativeBlobPath)) + throw new Exception(string.Format("The blob '{0}' already exists.", relativeBlobPath)); + + await clientThrottle.WaitAsync(); + + try + { + Log.LogMessage("Uploading {0} to {1}.", item.ItemSpec, ContainerName); + UploadClient uploadClient = new UploadClient(Log); + await + uploadClient.UploadBlockBlobAsync( + ct, + AccountName, + AccountKey, + ContainerName, + item.ItemSpec, + relativeBlobPath); + } + finally + { + clientThrottle.Release(); + } + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/ZipFileCreateFromDirectory.cs b/build_projects/dotnet-cli-build/ZipFileCreateFromDirectory.cs new file mode 100644 index 000000000..8ca191167 --- /dev/null +++ b/build_projects/dotnet-cli-build/ZipFileCreateFromDirectory.cs @@ -0,0 +1,131 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using System.IO.Compression; +using System.Text.RegularExpressions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.Build.Tasks +{ + public sealed class ZipFileCreateFromDirectory : Task + { + /// + /// The path to the directory to be archived. + /// + [Required] + public string SourceDirectory { get; set; } + + /// + /// The path of the archive to be created. + /// + [Required] + public string DestinationArchive { get; set; } + + /// + /// Indicates if the destination archive should be overwritten if it already exists. + /// + public bool OverwriteDestination { get; set; } + + /// + /// If zipping an entire folder without exclusion patterns, whether to include the folder in the archive. + /// + public bool IncludeBaseDirectory { get; set; } + + /// + /// An item group of regular expressions for content to exclude from the archive. + /// + public ITaskItem[] ExcludePatterns { get; set; } + + public override bool Execute() + { + try + { + if (File.Exists(DestinationArchive)) + { + if (OverwriteDestination == true) + { + Log.LogMessage(MessageImportance.Low, "{0} already existed, deleting before zipping...", DestinationArchive); + File.Delete(DestinationArchive); + } + else + { + Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationArchive, nameof(OverwriteDestination)); + } + } + + Log.LogMessage(MessageImportance.High, "Compressing {0} into {1}...", SourceDirectory, DestinationArchive); + if (!Directory.Exists(Path.GetDirectoryName(DestinationArchive))) + Directory.CreateDirectory(Path.GetDirectoryName(DestinationArchive)); + + if (ExcludePatterns == null) + { + ZipFile.CreateFromDirectory(SourceDirectory, DestinationArchive, CompressionLevel.Optimal, IncludeBaseDirectory); + } + else + { + // convert to regular expressions + Regex[] regexes = new Regex[ExcludePatterns.Length]; + for (int i = 0; i < ExcludePatterns.Length; ++i) + regexes[i] = new Regex(ExcludePatterns[i].ItemSpec, RegexOptions.IgnoreCase); + + using (FileStream writer = new FileStream(DestinationArchive, FileMode.CreateNew)) + { + using (ZipArchive zipFile = new ZipArchive(writer, ZipArchiveMode.Create)) + { + var files = Directory.GetFiles(SourceDirectory, "*", SearchOption.AllDirectories); + + foreach (var file in files) + { + // look for a match + bool foundMatch = false; + foreach (var regex in regexes) + { + if (regex.IsMatch(file)) + { + foundMatch = true; + break; + } + } + + if (foundMatch) + { + Log.LogMessage(MessageImportance.Low, "Excluding {0} from archive.", file); + continue; + } + + var relativePath = MakeRelativePath(SourceDirectory, file); + zipFile.CreateEntryFromFile(file, relativePath, CompressionLevel.Optimal); + } + } + } + } + } + catch (Exception e) + { + // We have 2 log calls because we want a nice error message but we also want to capture the callstack in the log. + Log.LogError("An exception has occured while trying to compress '{0}' into '{1}'.", SourceDirectory, DestinationArchive); + Log.LogMessage(MessageImportance.Low, e.ToString()); + return false; + } + + return true; + } + + private string MakeRelativePath(string root, string subdirectory) + { + if (!subdirectory.StartsWith(root)) + throw new Exception(string.Format("'{0}' is not a subdirectory of '{1}'.", subdirectory, root)); + + // returned string should not start with a directory separator + int chop = root.Length; + if (subdirectory[chop] == Path.DirectorySeparatorChar) + ++chop; + + return subdirectory.Substring(chop); + } + } +} \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs new file mode 100644 index 000000000..a17baf99a --- /dev/null +++ b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System; +using System.IO; +using System.IO.Compression; + +namespace Microsoft.DotNet.Build.Tasks +{ + public sealed class ZipFileExtractToDirectory : Task + { + /// + /// The path to the directory to be archived. + /// + [Required] + public string SourceArchive { get; set; } + + /// + /// The path of the archive to be created. + /// + [Required] + public string DestinationDirectory { get; set; } + + /// + /// Indicates if the destination archive should be overwritten if it already exists. + /// + public bool OverwriteDestination { get; set; } + + public override bool Execute() + { + try + { + if (Directory.Exists(DestinationDirectory)) + { + if (OverwriteDestination == true) + { + Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory); + Directory.Delete(DestinationDirectory, recursive: true); + } + else + { + Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination)); + } + } + + Log.LogMessage(MessageImportance.High, "Decompressing '{0}' into '{1}'...", SourceArchive, DestinationDirectory); + if (!Directory.Exists(Path.GetDirectoryName(DestinationDirectory))) + Directory.CreateDirectory(Path.GetDirectoryName(DestinationDirectory)); + + ZipFile.ExtractToDirectory(SourceArchive, DestinationDirectory); + } + catch (Exception e) + { + // We have 2 log calls because we want a nice error message but we also want to capture the callstack in the log. + Log.LogError("An exception has occured while trying to decompress '{0}' into '{1}'.", SourceArchive, DestinationDirectory); + Log.LogMessage(MessageImportance.Low, e.ToString()); + return false; + } + return true; + } + } +} \ No newline at end of file From 38d18eab4d3136b3d85344307108d17816a3f955 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 08:28:53 -0500 Subject: [PATCH 140/165] Fix dotnet-install.ps1. Allow directories named "publish" in .gitignore. Add files to the .sln. --- .gitignore | 3 --- Microsoft.DotNet.Cli.sln | 10 ++++++++++ scripts/obtain/dotnet-install.ps1 | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e653a4849..f1732c2e0 100644 --- a/.gitignore +++ b/.gitignore @@ -186,9 +186,6 @@ DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html -# Click-Once directory -publish/ - # Publish Web Output *.[Pp]ublish.xml *.azurePubxml diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 5a5e565e8..cf45fe99e 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -122,6 +122,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4 build\Microsoft.DotNet.Cli.Monikers.props = build\Microsoft.DotNet.Cli.Monikers.props build\Microsoft.DotNet.Cli.Package.targets = build\Microsoft.DotNet.Cli.Package.targets build\Microsoft.DotNet.Cli.Prepare.targets = build\Microsoft.DotNet.Cli.Prepare.targets + build\Microsoft.DotNet.Cli.Publish.targets = build\Microsoft.DotNet.Cli.Publish.targets + build\Microsoft.DotNet.Cli.Run.targets = build\Microsoft.DotNet.Cli.Run.targets + build\Microsoft.DotNet.Cli.tasks = build\Microsoft.DotNet.Cli.tasks build\Microsoft.DotNet.Cli.Test.targets = build\Microsoft.DotNet.Cli.Test.targets EndProjectSection EndProject @@ -153,6 +156,12 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Test EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks.Tests", "test\Microsoft.DotNet.Core.Build.Tasks.Tests\Microsoft.DotNet.Core.Build.Tasks.Tests.xproj", "{EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "publish", "publish", "{27B12960-ABB0-4903-9C60-5E9157E659C8}" + ProjectSection(SolutionItems) = preProject + build\publish\Microsoft.DotNet.Cli.Badge.targets = build\publish\Microsoft.DotNet.Cli.Badge.targets + build\publish\PublishContent.targets = build\publish\PublishContent.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -994,5 +1003,6 @@ Global {E8E7D24B-4830-4662-80A8-255D6FE3B0BE} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} + {27B12960-ABB0-4903-9C60-5E9157E659C8} = {89905EC4-BC0F-443B-8ADF-691321F10108} EndGlobalSection EndGlobal diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1 index 291623c1c..448b7d502 100644 --- a/scripts/obtain/dotnet-install.ps1 +++ b/scripts/obtain/dotnet-install.ps1 @@ -58,8 +58,8 @@ param( [switch]$DebugSymbols, # TODO: Switch does not work yet. Symbols zip is not being uploaded yet. [switch]$DryRun, [switch]$NoPath, - [string]$AzureFeed="https://dotnetcli.azureedge.net/dotnet" - [string]$UncachedFeed="https://dotnetcli.azureedge.net/dotnet" + [string]$AzureFeed="https://dotnetcli.azureedge.net/dotnet", + [string]$UncachedFeed="https://dotnetcli.blob.core.windows.net/dotnet" ) Set-StrictMode -Version Latest From 2bea6bac83e7d0dfa083ef242ba7f3d5c7c2e74d Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 10:13:49 -0500 Subject: [PATCH 141/165] Move 14.1 to 15.0 now that MSBuild is version 15.0. --- build/Microsoft.DotNet.Cli.Compile.targets | 4 ++++ .../ImportBefore/Microsoft.NETCore.ImportBefore.props | 0 .../ImportBefore/Microsoft.NuGet.ImportBefore.props | 0 .../ImportAfter/Microsoft.NETCore.ImportAfter.targets | 0 .../ImportAfter/Microsoft.NuGet.ImportAfter.targets | 0 src/dotnet/project.json | 2 +- 6 files changed, 5 insertions(+), 1 deletion(-) rename src/dotnet/{14.1 => 15.0}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props (100%) rename src/dotnet/{14.1 => 15.0}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props (100%) rename src/dotnet/{14.1 => 15.0}/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets (100%) rename src/dotnet/{14.1 => 15.0}/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets (100%) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 24e9613f4..023585664 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -210,6 +210,10 @@ + + + diff --git a/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props similarity index 100% rename from src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props rename to src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props diff --git a/src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props similarity index 100% rename from src/dotnet/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props rename to src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props diff --git a/src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets similarity index 100% rename from src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets rename to src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets diff --git a/src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets similarity index 100% rename from src/dotnet/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets rename to src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/src/dotnet/project.json b/src/dotnet/project.json index f7cc39482..5257e2d0d 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -27,7 +27,7 @@ }, "publishOptions": { "include": [ - "14.1/**", + "15.0/**", "*.props", "*.targets" ] From e6ed1bd32f8501a3992c08bfe8a1964bc3f00ad4 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 10:24:01 -0500 Subject: [PATCH 142/165] Completely remove buildtools from our build. --- build.proj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build.proj b/build.proj index a421f10e9..e86fa5a01 100644 --- a/build.proj +++ b/build.proj @@ -18,8 +18,6 @@ $(MSBuildThisFileDirectory) $(RepoRoot)/build_projects/dotnet-cli-build/bin/dotnet-cli-build $(CLIBuildFileName).dll - $(RepoRoot)/build_tools/ - $(BuildToolsDir)/ preview Microsoft.NETCore.App @@ -81,12 +79,10 @@ - - From 3a55a4182f49c6c63072ea7b47f8efde2cdd7355 Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 9 Aug 2016 13:22:22 -0700 Subject: [PATCH 143/165] src/redist/project.json --- build/Microsoft.DotNet.Cli.Compile.targets | 62 +++++++++---------- .../Microsoft.NETCore.ImportBefore.props | 0 .../Microsoft.NuGet.ImportBefore.props | 0 .../Microsoft.NETCore.ImportAfter.targets | 0 .../Microsoft.NuGet.ImportAfter.targets | 0 .../Microsoft.NETCore.ImportBefore.props | 17 +++++ .../Microsoft.NuGet.ImportBefore.props | 17 +++++ .../Microsoft.NETCore.ImportAfter.targets | 17 +++++ .../Microsoft.NuGet.ImportAfter.targets | 17 +++++ .../core-sdk}/Microsoft.DotNet.Core.Sdk.props | 0 .../Microsoft.DotNet.Core.Sdk.targets | 0 src/{compilers => csc}/Program.cs | 0 src/{compilers => csc}/project.json | 2 +- .../dotnet-build3 => }/ForwardingApp.cs | 0 .../dotnet-build3/MSBuildForwardingApp.cs | 7 +-- src/dotnet/commands/dotnet-restore/NuGet3.cs | 12 +--- .../dotnet-restore/NuGetForwardingApp.cs | 44 +++++++++++++ src/dotnet/commands/dotnet-restore/Program.cs | 30 +-------- src/dotnet/project.json | 26 +------- src/nuget/project.json | 27 ++++++++ src/redist/project.json | 26 ++++++++ src/tool_msbuild/project.json | 31 ++++++++++ 22 files changed, 235 insertions(+), 100 deletions(-) rename {src/dotnet/15.0 => resources/core-sdk/14.1}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props (100%) rename {src/dotnet/15.0 => resources/core-sdk/14.1}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props (100%) rename {src/dotnet/15.0 => resources/core-sdk/14.1}/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets (100%) rename {src/dotnet/15.0 => resources/core-sdk/14.1}/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets (100%) create mode 100644 resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props create mode 100644 resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props create mode 100644 resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets create mode 100644 resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets rename {src/dotnet => resources/core-sdk}/Microsoft.DotNet.Core.Sdk.props (100%) rename {src/dotnet => resources/core-sdk}/Microsoft.DotNet.Core.Sdk.targets (100%) rename src/{compilers => csc}/Program.cs (100%) rename src/{compilers => csc}/project.json (92%) rename src/dotnet/{commands/dotnet-build3 => }/ForwardingApp.cs (100%) create mode 100644 src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs create mode 100644 src/nuget/project.json create mode 100644 src/redist/project.json create mode 100644 src/tool_msbuild/project.json diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 023585664..3d4ad94f0 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -3,8 +3,16 @@ + + runtimes/any/native + $(RepoRoot)/resources/core-sdk + + + + + + @@ -85,7 +93,7 @@ + DestinationFiles="@(SharedFramework->'$(StageDirectory)/%(RecursiveDir)%(Filename)%(Extension)')" /> + ProjectPath="$(SrcDirectory)/redist" /> @@ -121,36 +129,26 @@ File="%(SdkOutputChModTargets.FullPath)" Mode="%(SdkOutputChModTargets.Mode)" /> - + - + - + - - - + + DepsFile="$(SdkOutputDirectory)/%(BundledTools.Identity).deps.json" + NewName="%(BundledTools.Identity).deps.json" /> - - - - - + + + + + + @@ -208,12 +210,8 @@ + DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)/%(RecursiveDir)%(Filename)%(Extension)')" /> - - - diff --git a/src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props similarity index 100% rename from src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props rename to resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props diff --git a/src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props similarity index 100% rename from src/dotnet/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props rename to resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props diff --git a/src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets similarity index 100% rename from src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets rename to resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets diff --git a/src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets similarity index 100% rename from src/dotnet/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets rename to resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props new file mode 100644 index 000000000..8d4b59d14 --- /dev/null +++ b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.props + + + diff --git a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props new file mode 100644 index 000000000..b535067fb --- /dev/null +++ b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.NuGet.props + + + diff --git a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets new file mode 100644 index 000000000..7f2fab3de --- /dev/null +++ b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.targets + + + diff --git a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets new file mode 100644 index 000000000..b1da40f46 --- /dev/null +++ b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets @@ -0,0 +1,17 @@ + + + + $(MSBuildExtensionsPath)\Microsoft.NuGet.targets + + + diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.props b/resources/core-sdk/Microsoft.DotNet.Core.Sdk.props similarity index 100% rename from src/dotnet/Microsoft.DotNet.Core.Sdk.props rename to resources/core-sdk/Microsoft.DotNet.Core.Sdk.props diff --git a/src/dotnet/Microsoft.DotNet.Core.Sdk.targets b/resources/core-sdk/Microsoft.DotNet.Core.Sdk.targets similarity index 100% rename from src/dotnet/Microsoft.DotNet.Core.Sdk.targets rename to resources/core-sdk/Microsoft.DotNet.Core.Sdk.targets diff --git a/src/compilers/Program.cs b/src/csc/Program.cs similarity index 100% rename from src/compilers/Program.cs rename to src/csc/Program.cs diff --git a/src/compilers/project.json b/src/csc/project.json similarity index 92% rename from src/compilers/project.json rename to src/csc/project.json index b2b6ed1b8..8240b45ff 100644 --- a/src/compilers/project.json +++ b/src/csc/project.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-*", + "version": "1.0.0-featmsbuild-*", "buildOptions": { "emitEntryPoint": true }, diff --git a/src/dotnet/commands/dotnet-build3/ForwardingApp.cs b/src/dotnet/ForwardingApp.cs similarity index 100% rename from src/dotnet/commands/dotnet-build3/ForwardingApp.cs rename to src/dotnet/ForwardingApp.cs diff --git a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs index d8037cd0c..2550aa17f 100644 --- a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs +++ b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs @@ -21,8 +21,6 @@ namespace Microsoft.DotNet.Cli _forwardingApp = new ForwardingApp( GetMSBuildExePath(), argsToForward, - depsFile: GetDepsFile(), - runtimeConfig: GetRuntimeConfig(), environmentVariables: GetEnvironmentVariables()); } @@ -56,19 +54,18 @@ namespace Microsoft.DotNet.Cli private static string GetRuntimeConfig() { - return Path.Combine(AppContext.BaseDirectory, "dotnet.runtimeconfig.json"); + return Path.Combine(AppContext.BaseDirectory, "msbuild.runtimeconfig.json"); } private static string GetDepsFile() { - return Path.Combine(AppContext.BaseDirectory, "dotnet.deps.json"); + return Path.Combine(AppContext.BaseDirectory, "msbuild.deps.json"); } private static string GetMSBuildExePath() { return Path.Combine( AppContext.BaseDirectory, - "runtimes", "any", "native", s_msbuildExeName); } diff --git a/src/dotnet/commands/dotnet-restore/NuGet3.cs b/src/dotnet/commands/dotnet-restore/NuGet3.cs index 8033f96f6..7fd2a4e84 100644 --- a/src/dotnet/commands/dotnet-restore/NuGet3.cs +++ b/src/dotnet/commands/dotnet-restore/NuGet3.cs @@ -4,7 +4,6 @@ using System.IO; using System.Linq; using System.Reflection; using Microsoft.DotNet.Cli.Utils; -using NugetProgram = NuGet.CommandLine.XPlat.Program; namespace Microsoft.DotNet.Tools.Restore { @@ -20,18 +19,11 @@ namespace Microsoft.DotNet.Tools.Restore } prefixArgs.Add("restore"); - var result = Run(Enumerable.Concat( + var result = new NuGetForwardingApp(Enumerable.Concat( prefixArgs, - args).ToArray()); + args).ToArray()).Execute(); return result; } - - private static int Run(string[] nugetArgs) - { - var nugetAsm = typeof(NugetProgram).GetTypeInfo().Assembly; - var mainMethod = nugetAsm.EntryPoint; - return (int)mainMethod.Invoke(null, new object[] { nugetArgs }); - } } } diff --git a/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs new file mode 100644 index 000000000..aacbb8d53 --- /dev/null +++ b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs @@ -0,0 +1,44 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.InternalAbstractions; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; + +namespace Microsoft.DotNet.Tools.Restore +{ + public class NuGetForwardingApp + { + private const string s_nugetExeName = "NuGet.CommandLine.XPlat.dll"; + private readonly ForwardingApp _forwardingApp; + + public NuGetForwardingApp(string[] argsToForward) + { + _forwardingApp = new ForwardingApp( + GetNuGetExePath(), + argsToForward); + } + + public int Execute() + { + return _forwardingApp.Execute(); + } + + private static string GetHostPath() + { + return new Muxer().MuxerPath; + } + + private static string GetNuGetExePath() + { + return Path.Combine( + AppContext.BaseDirectory, + s_nugetExeName); + } + } +} diff --git a/src/dotnet/commands/dotnet-restore/Program.cs b/src/dotnet/commands/dotnet-restore/Program.cs index 7d45322c1..c2ecf5205 100644 --- a/src/dotnet/commands/dotnet-restore/Program.cs +++ b/src/dotnet/commands/dotnet-restore/Program.cs @@ -17,35 +17,7 @@ namespace Microsoft.DotNet.Tools.Restore { DebugHelper.HandleDebugSwitch(ref args); - var app = new CommandLineApplication(false) - { - Name = "dotnet restore", - FullName = ".NET project dependency restorer", - Description = "Restores dependencies listed in project.json" - }; - - - app.OnExecute(() => - { - try - { - return NuGet3.Restore(args); - } - catch (InvalidOperationException e) - { - Console.WriteLine(e.Message); - - return -1; - } - catch (Exception e) - { - Console.WriteLine(e.Message); - - return -2; - } - }); - - return app.Execute(args); + return NuGet3.Restore(args); } } } diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 5257e2d0d..abb9cc548 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -25,19 +25,7 @@ ] } }, - "publishOptions": { - "include": [ - "15.0/**", - "*.props", - "*.targets" - ] - }, "dependencies": { - "NuGet.Commands": { - "version": "3.5.0-rc1-1697", - "exclude": "compile" - }, - "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697", "Newtonsoft.Json": "9.0.1", "System.Text.Encoding.CodePages": "4.0.1", "System.Diagnostics.FileVersionInfo": "4.0.0", @@ -71,17 +59,9 @@ "exclude": "compile" }, - "MSBuild": "0.1.0-preview-00029-160805", - "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", - "Microsoft.Build.Targets": "0.1.0-preview-00029-160805", - "Microsoft.Build": "0.1.0-preview-00029-160805", - "Microsoft.Net.Compilers.netcore": "1.3.0", - "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", - "Microsoft.Cci": "4.0.0-rc3-24128-00", - "Microsoft.Composition": "1.0.30", - "Microsoft.NuGet.Build.Tasks": "1.0.0-alpha-000002", + + "Microsoft.Build": "0.1.0-preview-00029-160805", + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", "Microsoft.DotNet.Core.Build.Tasks": { "target": "project" diff --git a/src/nuget/project.json b/src/nuget/project.json new file mode 100644 index 000000000..a1cd2078d --- /dev/null +++ b/src/nuget/project.json @@ -0,0 +1,27 @@ +{ + "version": "1.0.0-featmsbuild-*", + "buildOptions": { + "emitEntryPoint": true + }, + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "NuGet.Commands": { + "version": "3.5.0-rc1-1697", + "exclude": "compile" + }, + "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697" + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dnxcore50", + "netstandardapp1.5", + "portable-net45+win8", + "portable-net45+wp80+win8+wpa81+dnxcore50" + ] + } + } +} diff --git a/src/redist/project.json b/src/redist/project.json new file mode 100644 index 000000000..1a82d2be8 --- /dev/null +++ b/src/redist/project.json @@ -0,0 +1,26 @@ +{ + "version": "1.0.0-featmsbuild-*", + "buildOptions": { + "emitEntryPoint": true + }, + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "csc": "1.0.0-featmsbuild-*", + "dotnet": "1.0.0-featmsbuild-*", + "nuget": "1.0.0-featmsbuild-*", + "tool_msbuild": "1.0.0-featmsbuild-*" + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dnxcore50", + "netstandardapp1.5", + "portable-net45+win8", + "portable-net45+wp80+win8+wpa81+dnxcore50" + ] + } + } +} diff --git a/src/tool_msbuild/project.json b/src/tool_msbuild/project.json new file mode 100644 index 000000000..aaccda9a0 --- /dev/null +++ b/src/tool_msbuild/project.json @@ -0,0 +1,31 @@ +{ + "version": "1.0.0-featmsbuild-*", + "buildOptions": { + "emitEntryPoint": true + }, + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "MSBuild": "0.1.0-preview-00029-160805", + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Targets": "0.1.0-preview-00029-160805", + "Microsoft.Build": "0.1.0-preview-00029-160805", + "Microsoft.Net.Compilers.netcore": "1.3.0", + "Microsoft.Net.Compilers.Targets.NetCore": "0.1.5-dev", + "Microsoft.Cci": "4.0.0-rc3-24128-00", + "Microsoft.Composition": "1.0.30", + "Microsoft.NuGet.Build.Tasks": "1.0.0-alpha-000002" + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dnxcore50", + "portable-net45+win8" + ] + } + } +} From b3f5174f0004c5e00e44852d1fff975d965e046e Mon Sep 17 00:00:00 2001 From: Piotr Puszkiewicz Date: Tue, 9 Aug 2016 14:49:13 -0700 Subject: [PATCH 144/165] PR Feedback --- build/Microsoft.DotNet.Cli.Compile.targets | 17 +++++++++++------ .../Microsoft.NETCore.ImportBefore.props | 0 .../Microsoft.NuGet.ImportBefore.props | 0 .../Microsoft.NETCore.ImportAfter.targets | 0 .../Microsoft.NuGet.ImportAfter.targets | 0 .../Microsoft.DotNet.Core.Sdk.props | 0 .../Microsoft.DotNet.Core.Sdk.targets | 0 .../Microsoft.NETCore.ImportBefore.props | 17 ----------------- .../Microsoft.NuGet.ImportBefore.props | 17 ----------------- .../Microsoft.NETCore.ImportAfter.targets | 17 ----------------- .../Microsoft.NuGet.ImportAfter.targets | 17 ----------------- .../project.json | 2 +- src/csc/Program.cs | 11 ----------- .../dotnet-build3/MSBuildForwardingApp.cs | 10 ---------- .../dotnet-restore/NuGetForwardingApp.cs | 5 ----- src/redist/project.json | 13 ++++++++++--- src/{csc => tool_csc}/project.json | 0 src/{nuget => tool_nuget}/project.json | 10 ---------- 18 files changed, 22 insertions(+), 114 deletions(-) rename resources/{core-sdk/14.1 => MSBuildImports/15.0}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props (100%) rename resources/{core-sdk/14.1 => MSBuildImports/15.0}/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props (100%) rename resources/{core-sdk/14.1 => MSBuildImports/15.0}/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets (100%) rename resources/{core-sdk/14.1 => MSBuildImports/15.0}/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets (100%) rename resources/{core-sdk => MSBuildImports}/Microsoft.DotNet.Core.Sdk.props (100%) rename resources/{core-sdk => MSBuildImports}/Microsoft.DotNet.Core.Sdk.targets (100%) delete mode 100644 resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props delete mode 100644 resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props delete mode 100644 resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets delete mode 100644 resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets delete mode 100644 src/csc/Program.cs rename src/{csc => tool_csc}/project.json (100%) rename src/{nuget => tool_nuget}/project.json (54%) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index 3d4ad94f0..c45734c14 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -5,7 +5,7 @@ runtimes/any/native - $(RepoRoot)/resources/core-sdk + $(RepoRoot)/resources/MSBuildImports @@ -80,10 +80,10 @@ - - - - + + + + @@ -131,7 +131,7 @@ + AssetPath="$(BinaryToCorehostifyRelDir)/%(AssetsToRemoveFromDeps.Identity).exe" /> @@ -212,6 +212,11 @@ + + + + diff --git a/resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props similarity index 100% rename from resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props rename to resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props diff --git a/resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props similarity index 100% rename from resources/core-sdk/14.1/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props rename to resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props diff --git a/resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets similarity index 100% rename from resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets rename to resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets diff --git a/resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets similarity index 100% rename from resources/core-sdk/14.1/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets rename to resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/resources/core-sdk/Microsoft.DotNet.Core.Sdk.props b/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props similarity index 100% rename from resources/core-sdk/Microsoft.DotNet.Core.Sdk.props rename to resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props diff --git a/resources/core-sdk/Microsoft.DotNet.Core.Sdk.targets b/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets similarity index 100% rename from resources/core-sdk/Microsoft.DotNet.Core.Sdk.targets rename to resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets diff --git a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props deleted file mode 100644 index 8d4b59d14..000000000 --- a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.props - - - diff --git a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props b/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props deleted file mode 100644 index b535067fb..000000000 --- a/resources/core-sdk/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NuGet.ImportBefore.props +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.NuGet.props - - - diff --git a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets deleted file mode 100644 index 7f2fab3de..000000000 --- a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.targets - - - diff --git a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets deleted file mode 100644 index b1da40f46..000000000 --- a/resources/core-sdk/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.NuGet.targets - - - diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json index 58b48191e..3a8744936 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -8,7 +8,7 @@ "Microsoft.Extensions.DependencyModel": { "target": "project" }, - "NuGet.ProjectModel": "3.5.0-rc1-1653" + "NuGet.ProjectModel": "3.5.0-rc1-1697" }, "frameworks": { "net451": { diff --git a/src/csc/Program.cs b/src/csc/Program.cs deleted file mode 100644 index 4aa370b90..000000000 --- a/src/csc/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace ConsoleApplication -{ - public class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs index 2550aa17f..d06bbbd81 100644 --- a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs +++ b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs @@ -52,16 +52,6 @@ namespace Microsoft.DotNet.Cli return new Muxer().MuxerPath; } - private static string GetRuntimeConfig() - { - return Path.Combine(AppContext.BaseDirectory, "msbuild.runtimeconfig.json"); - } - - private static string GetDepsFile() - { - return Path.Combine(AppContext.BaseDirectory, "msbuild.deps.json"); - } - private static string GetMSBuildExePath() { return Path.Combine( diff --git a/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs index aacbb8d53..a43e591e1 100644 --- a/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs +++ b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs @@ -29,11 +29,6 @@ namespace Microsoft.DotNet.Tools.Restore return _forwardingApp.Execute(); } - private static string GetHostPath() - { - return new Muxer().MuxerPath; - } - private static string GetNuGetExePath() { return Path.Combine( diff --git a/src/redist/project.json b/src/redist/project.json index 1a82d2be8..42f112267 100644 --- a/src/redist/project.json +++ b/src/redist/project.json @@ -8,10 +8,17 @@ "type": "platform", "version": "1.0.0" }, - "csc": "1.0.0-featmsbuild-*", + "tool_csc": "1.0.0-featmsbuild-*", "dotnet": "1.0.0-featmsbuild-*", - "nuget": "1.0.0-featmsbuild-*", - "tool_msbuild": "1.0.0-featmsbuild-*" + "tool_nuget": "1.0.0-featmsbuild-*", + "tool_msbuild": "1.0.0-featmsbuild-*", + + "MSBuild": "0.1.0-preview-00029-160805", + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", + "Microsoft.Build.Targets": "0.1.0-preview-00029-160805", + "Microsoft.Build": "0.1.0-preview-00029-160805" }, "frameworks": { "netcoreapp1.0": { diff --git a/src/csc/project.json b/src/tool_csc/project.json similarity index 100% rename from src/csc/project.json rename to src/tool_csc/project.json diff --git a/src/nuget/project.json b/src/tool_nuget/project.json similarity index 54% rename from src/nuget/project.json rename to src/tool_nuget/project.json index a1cd2078d..7af3cf800 100644 --- a/src/nuget/project.json +++ b/src/tool_nuget/project.json @@ -8,20 +8,10 @@ "type": "platform", "version": "1.0.0" }, - "NuGet.Commands": { - "version": "3.5.0-rc1-1697", - "exclude": "compile" - }, "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697" }, "frameworks": { "netcoreapp1.0": { - "imports": [ - "dnxcore50", - "netstandardapp1.5", - "portable-net45+win8", - "portable-net45+wp80+win8+wpa81+dnxcore50" - ] } } } From 2b741bca27e7d4dbdf3c764044bd3b5b29669d98 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Wed, 10 Aug 2016 09:21:43 -0500 Subject: [PATCH 145/165] Fix and re-enable build3 tests. --- build/Microsoft.DotNet.Cli.Compile.targets | 4 ++ build/test/TestProjects.targets | 4 +- test/EndToEnd/GivenDotNetUsesMSBuild.cs | 56 ++++++++++++---------- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets index c45734c14..75bce5b58 100644 --- a/build/Microsoft.DotNet.Cli.Compile.targets +++ b/build/Microsoft.DotNet.Cli.Compile.targets @@ -136,6 +136,10 @@ + + + diff --git a/build/test/TestProjects.targets b/build/test/TestProjects.targets index a75c6cd4c..10ce8141e 100644 --- a/build/test/TestProjects.targets +++ b/build/test/TestProjects.targets @@ -58,7 +58,9 @@ - + + diff --git a/test/EndToEnd/GivenDotNetUsesMSBuild.cs b/test/EndToEnd/GivenDotNetUsesMSBuild.cs index bef2d8b18..98407b553 100644 --- a/test/EndToEnd/GivenDotNetUsesMSBuild.cs +++ b/test/EndToEnd/GivenDotNetUsesMSBuild.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Runtime.InteropServices; using Microsoft.DotNet.Tools.Test.Utilities; using Xunit; @@ -8,38 +9,43 @@ namespace Microsoft.DotNet.Tests.EndToEnd { public class GivenDotNetUsesMSBuild : TestBase { - [Fact(Skip="ResolveNuGetPackageAssets needs to be made case insensitive.")] + [Fact] public void ItCanNewRestoreBuildRunMSBuildProject() { - using (DisposableDirectory directory = Temp.CreateDirectory()) + // The current ResolveNuGetAssets target does not work on case-sensitive file systems. We need https://github.com/dotnet/sdk/pull/10 + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || + RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - string projectDirectory = directory.Path; + using (DisposableDirectory directory = Temp.CreateDirectory()) + { + string projectDirectory = directory.Path; - new NewCommand() - .WithWorkingDirectory(projectDirectory) - .Execute("-t msbuild") - .Should() - .Pass(); + new NewCommand() + .WithWorkingDirectory(projectDirectory) + .Execute("-t msbuild") + .Should() + .Pass(); - new RestoreCommand() - .WithWorkingDirectory(projectDirectory) - .Execute() - .Should() - .Pass(); + new RestoreCommand() + .WithWorkingDirectory(projectDirectory) + .Execute() + .Should() + .Pass(); - new Build3Command() - .WithWorkingDirectory(projectDirectory) - .Execute() - .Should() - .Pass(); + new Build3Command() + .WithWorkingDirectory(projectDirectory) + .Execute() + .Should() + .Pass(); - new Run3Command() - .WithWorkingDirectory(projectDirectory) - .ExecuteWithCapturedOutput() - .Should() - .Pass() - .And - .HaveStdOutContaining("Hello World!"); + new Run3Command() + .WithWorkingDirectory(projectDirectory) + .ExecuteWithCapturedOutput() + .Should() + .Pass() + .And + .HaveStdOutContaining("Hello World!"); + } } } } From a7d594049b04ddccbec0695c543ae23fd5e78190 Mon Sep 17 00:00:00 2001 From: PiotrP Date: Wed, 10 Aug 2016 11:55:56 -0700 Subject: [PATCH 146/165] Remove dotnet-build.tests This capability is being replaced by MSBuild, and the project.json tests are very long running. --- Documentation/developer-guide.md | 2 +- Microsoft.DotNet.Cli.sln | 19 - .../BuildInvalidArgumentsTests.cs | 55 --- test/dotnet-build.Tests/BuildOutputTests.cs | 387 ------------------ test/dotnet-build.Tests/BuildPortableTests.cs | 99 ----- .../BuildProjectToProjectTests.cs | 187 --------- .../BuildStandAloneTests.cs | 87 ---- test/dotnet-build.Tests/BuildWarningsTests.cs | 27 -- .../GivenDotnetBuildBuildsProjects.cs | 119 ------ .../dotnet-build.Tests/IncrementalTestBase.cs | 138 ------- test/dotnet-build.Tests/IncrementalTests.cs | 267 ------------ ...crementalTestsOnCultureSpecificResource.cs | 36 -- .../IncrementalTestsOnResources.cs | 34 -- .../IncrementalTestsTransitiveRuntime.cs | 48 --- .../IncrementalTestsVersionSuffix.cs | 29 -- .../ProjectNameArgumentTests.cs | 135 ------ .../dotnet-build.Tests/WrappedProjectTests.cs | 36 -- .../dotnet-build.Tests.xproj | 21 - test/dotnet-build.Tests/project.json | 28 -- 19 files changed, 1 insertion(+), 1753 deletions(-) delete mode 100644 test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs delete mode 100644 test/dotnet-build.Tests/BuildOutputTests.cs delete mode 100644 test/dotnet-build.Tests/BuildPortableTests.cs delete mode 100644 test/dotnet-build.Tests/BuildProjectToProjectTests.cs delete mode 100644 test/dotnet-build.Tests/BuildStandAloneTests.cs delete mode 100644 test/dotnet-build.Tests/BuildWarningsTests.cs delete mode 100644 test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestBase.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTests.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsOnResources.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs delete mode 100644 test/dotnet-build.Tests/ProjectNameArgumentTests.cs delete mode 100644 test/dotnet-build.Tests/WrappedProjectTests.cs delete mode 100644 test/dotnet-build.Tests/dotnet-build.Tests.xproj delete mode 100644 test/dotnet-build.Tests/project.json diff --git a/Documentation/developer-guide.md b/Documentation/developer-guide.md index 18cb44890..f4337b540 100644 --- a/Documentation/developer-guide.md +++ b/Documentation/developer-guide.md @@ -53,7 +53,7 @@ For E2E and functional tests, they all depend on the binaries located under `art 1. `cd src\dotnet\` 2. `dotnet build` 3. `cp bin\debug\netstandardapp1.5\dotnet.dll artifacts\rid\stage2` -4. `cd ..\..\test\dotnet-build.Tests` +4. `cd ..\..\test\dotnet.Tests` 5. `dotnet test` ##Adding a Command diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index cf45fe99e..1954dd288 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -32,8 +32,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProject EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet", "src\dotnet\dotnet.xproj", "{60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build.Tests", "test\dotnet-build.Tests\dotnet-build.Tests.xproj", "{833FFEE1-7EED-4F51-8DFD-946D48833333}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-compile.Tests", "test\dotnet-compile.Tests\dotnet-compile.Tests.xproj", "{833FFEE1-7EED-4F51-8DFD-946D48893D6E}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-publish.Tests", "test\dotnet-publish.Tests\dotnet-publish.Tests.xproj", "{386D412C-003C-47B1-8258-0E35865CB7C4}" @@ -302,22 +300,6 @@ Global {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|Any CPU.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|x64.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|x64.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|Any CPU.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|Any CPU.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|x64.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|x64.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -956,7 +938,6 @@ Global {65741CB1-8AEE-4C66-8198-10A7EA0E4258} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {713CBFBB-5392-438D-B766-A9A585EF1BB8} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} - {833FFEE1-7EED-4F51-8DFD-946D48833333} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {833FFEE1-7EED-4F51-8DFD-946D48893D6E} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {386D412C-003C-47B1-8258-0E35865CB7C4} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {D521DD9F-0614-4929-93B4-D8FA5682C174} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} diff --git a/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs b/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs deleted file mode 100644 index bb32eb447..000000000 --- a/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildInvalidArgumentsTests : TestBase - { - [Fact] - public void ErrorOccursWhenBuildingPortableProjectToSpecificOutputPathWithoutSpecifyingFramework() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp"), - output: Path.Combine(testInstance.TestRoot, "out")) - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrContaining("When the '--output' option is provided, the '--framework' option must also be provided."); - } - - [Fact] - public void ErrorOccursWhenBuildingPortableProjectAndSpecifyingFrameworkThatProjectDoesNotSupport() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp"), - output: Path.Combine(testInstance.TestRoot, "out"), - framework: "sl40") - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrMatching("Project '.*?' does not support framework: Silverlight,Version=v4\\.0\\."); - } - - [Fact] - public void ErrorOccursWhenBuildingStandaloneProjectToSpecificOutputPathWithoutSpecifyingFramework() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "StandaloneApp"), - output: Path.Combine(testInstance.TestRoot, "out")) - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrContaining("When the '--output' option is provided, the '--framework' option must also be provided."); - } - } -} diff --git a/test/dotnet-build.Tests/BuildOutputTests.cs b/test/dotnet-build.Tests/BuildOutputTests.cs deleted file mode 100644 index 71139968e..000000000 --- a/test/dotnet-build.Tests/BuildOutputTests.cs +++ /dev/null @@ -1,387 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.Tools.Test.Utilities; -using Newtonsoft.Json.Linq; -using NuGet.Frameworks; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildOutputTests : TestBase - { - private string _testProjectsRoot; - private string _runtime; - private DirectoryInfo _rootDirInfo; - private DirectoryInfo _testAppDirDirInfo; - private DirectoryInfo _testLibDirInfo; - - private readonly string[] _runtimeFiles = - { - "TestApp" + FileNameSuffixes.DotNet.DynamicLib, - "TestApp" + FileNameSuffixes.DotNet.ProgramDatabase, - "TestApp" + FileNameSuffixes.CurrentPlatform.Exe, - "TestApp" + FileNameSuffixes.DepsJson, - "TestApp" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.DotNet.DynamicLib, - "TestLibrary" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _runtimeExcludeFiles = - { - "TestLibrary" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.RuntimeConfigDevJson - }; - - private readonly string[] _appCompileFiles = - { - "TestApp" + FileNameSuffixes.DotNet.DynamicLib, - "TestApp" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _libCompileFiles = - { - "TestLibrary" + FileNameSuffixes.DotNet.DynamicLib, - "TestLibrary" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _libCompileExcludeFiles = - { - "TestLibrary" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.RuntimeConfigDevJson - }; - - - private void GetProjectInfo(string testRoot) - { - _testProjectsRoot = testRoot; - _rootDirInfo = new DirectoryInfo(_testProjectsRoot); - _testAppDirDirInfo = new DirectoryInfo(Path.Combine(_testProjectsRoot, "TestApp")); - _testLibDirInfo = new DirectoryInfo(Path.Combine(_testProjectsRoot, "TestLibrary")); - - var contexts = ProjectContext.CreateContextForEachFramework( - _testAppDirDirInfo.FullName, - null, - RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers()); - _runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier; - } - - private string FormatPath(string input, string framework, string runtime) - { - return input.Replace("{fw}", framework).Replace("{rid}", runtime); - } - - [Theory] - // global.json exists - [InlineData("1", true, null, null, "TestLibrary/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}/{rid}")] - [InlineData("2", true, "out", null, "TestLibrary/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}", "out")] - [InlineData("3", true, null, "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}/{rid}")] - [InlineData("4", true, "out", "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}", "out")] - //no global.json - //[InlineData(false, null, null, "TestLibrary/bin/debug/{fw}", "TestApp/bin/debug/{fw}", "TestApp/bin/debug/{fw}/{rid}")] - //[InlineData(false, "out", null, "TestLibrary/bin/debug/{fw}", "TestApp/bin/debug/{fw}", "out")] - //[InlineData(false, null, "build", "build/TestLibrary/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}/{rid}")] - //[InlineData(false, "out", "build", "build/TestLibrary/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}", "out")] - public void AppDefaultPaths(string testIdentifer, bool global, string outputValue, string baseValue, string expectedLibCompile, string expectedAppCompile, string expectedAppRuntime) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary", identifier: testIdentifer) - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - new BuildCommand(GetProjectPath(_testAppDirDirInfo), - output: outputValue != null ? Path.Combine(_testProjectsRoot, outputValue) : string.Empty, - buildBasePath: baseValue != null ? Path.Combine(_testProjectsRoot, baseValue) : string.Empty, - framework: DefaultFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _rootDirInfo.Sub(FormatPath(expectedLibCompile, DefaultLibraryFramework, _runtime)); - var appdebug = _rootDirInfo.Sub(FormatPath(expectedAppCompile, DefaultFramework, _runtime)); - var appruntime = _rootDirInfo.Sub(FormatPath(expectedAppRuntime, DefaultFramework, _runtime)); - - libdebug.Should().Exist() - .And.HaveFiles(_libCompileFiles) - .And.NotHaveFiles(_libCompileExcludeFiles); - appdebug.Should().Exist().And.HaveFiles(_appCompileFiles); - appruntime.Should().Exist() - .And.HaveFiles(_runtimeFiles) - .And.NotHaveFiles(_runtimeExcludeFiles); - } - - [Theory] - [InlineData("1", true, null, null, "TestLibrary/bin/Debug/{fw}", "TestLibrary/bin/Debug/{fw}/{rid}")] - [InlineData("2", true, "out", null, "TestLibrary/bin/Debug/{fw}", "out")] - [InlineData("3", true, null, "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestLibrary/bin/Debug/{fw}/{rid}")] - [InlineData("4", true, "out", "build", "build/TestLibrary/bin/Debug/{fw}", "out")] - public void LibDefaultPaths(string testIdentifer, bool global, string outputValue, string baseValue, string expectedLibCompile, string expectedLibOutput) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary", identifier: testIdentifer) - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - new BuildCommand(GetProjectPath(_testLibDirInfo), - output: outputValue != null ? Path.Combine(_testProjectsRoot, outputValue) : string.Empty, - buildBasePath: baseValue != null ? Path.Combine(_testProjectsRoot, baseValue) : string.Empty, - framework: DefaultLibraryFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _rootDirInfo.Sub(FormatPath(expectedLibCompile, DefaultLibraryFramework, _runtime)); - - libdebug.Should().Exist() - .And.HaveFiles(_libCompileFiles) - .And.NotHaveFiles(_libCompileExcludeFiles); - } - - [Fact] - public void SettingVersionInEnvironment_ShouldStampAssemblyInfoInOutputAssembly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithConfiguration") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: DefaultLibraryFramework); - cmd.Environment["DOTNET_BUILD_VERSION"] = "85"; - cmd.Environment["DOTNET_ASSEMBLY_FILE_VERSION"] = "345"; - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultLibraryFramework, "TestLibraryWithConfiguration.dll"); - var informationalVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyInformationalVersionAttribute"); - var fileVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyFileVersionAttribute"); - - informationalVersion.Should().NotBeNull(); - informationalVersion.Should().BeEquivalentTo("1.0.0-85"); - - fileVersion.Should().NotBeNull(); - fileVersion.Should().BeEquivalentTo("1.0.0.345"); - } - - [Fact] - public void SettingVersionSuffixFlag_ShouldStampAssemblyInfoInOutputAssembly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithConfiguration") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: DefaultLibraryFramework, versionSuffix: "85"); - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultLibraryFramework, "TestLibraryWithConfiguration.dll"); - var informationalVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyInformationalVersionAttribute"); - - informationalVersion.Should().NotBeNull(); - informationalVersion.Should().BeEquivalentTo("1.0.0-85"); - } - - [Fact] - public void BuildGlobbingMakesAllRunnable() - { - var testInstance = TestAssetsManager.CreateTestInstance("AppWithAppDependency") - .WithLockFiles(); - - var cmd = new BuildCommand(string.Format("*{0}project.json", Path.DirectorySeparatorChar), skipLoadProject: true) - .WithWorkingDirectory(testInstance.TestRoot) - .Execute() - .Should() - .Pass(); - - foreach (var project in new [] { "TestApp1", "TestApp2" }) - { - new DirectoryInfo(Path.Combine(testInstance.TestRoot, project, "bin", "Debug", DefaultFramework)) - .Should().HaveFile($"{project}.deps.json"); - } - } - - [Theory] - // [InlineData("net20", false, true)] - // [InlineData("net40", true, true)] - // [InlineData("net461", true, true)] - [InlineData("netstandard1.5", true, false)] - public void MultipleFrameworks_ShouldHaveValidTargetFrameworkAttribute(string frameworkName, bool shouldHaveTargetFrameworkAttribute, bool windowsOnly) - { - var framework = NuGetFramework.Parse(frameworkName); - - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithMultipleFrameworks") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: framework.GetShortFolderName()); - - if (windowsOnly && !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - // on non-windows platforms, desktop frameworks will not build - cmd.ExecuteWithCapturedOutput().Should().Fail(); - } - else - { - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", framework.GetShortFolderName(), "TestLibraryWithMultipleFrameworks.dll"); - var targetFramework = PeReaderUtils.GetAssemblyAttributeValue(output, "TargetFrameworkAttribute"); - - if (shouldHaveTargetFrameworkAttribute) - { - targetFramework.Should().NotBeNull(); - targetFramework.Should().BeEquivalentTo(framework.DotNetFrameworkName); - } - else - { - targetFramework.Should().BeNull(); - } - } - } - - [Fact] - public void UnresolvedReferenceCausesBuildToFailAndNotProduceOutput() - { - var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects"); - var testInstance = testAssetsManager.CreateTestInstance("TestProjectWithUnresolvedDependency") - .WithLockFiles(); - - var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot } - .ExecuteWithCapturedOutput() - .Should().Fail(); - - new DirectoryInfo(testInstance.TestRoot) - .Should().HaveFile("project.lock.json"); - - var buildCmd = new BuildCommand(testInstance.TestRoot); - var buildResult = buildCmd.ExecuteWithCapturedOutput(); - buildResult.Should().Fail(); - - buildResult.StdErr.Should().Contain("The dependency ThisIsNotARealDependencyAndIfSomeoneGoesAndAddsAProjectWithThisNameIWillFindThemAndPunishThem could not be resolved."); - - var outputDir = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "bin", "Debug", "netcoreapp1.0")); - outputDir.GetFiles().Length.Should().Be(0); - } - - [Fact] - public void PackageReferenceWithResourcesTest() - { - var testInstance = TestAssetsManager.CreateTestInstance("ResourcesTests") - .WithLockFiles(); - - var projectRoot = Path.Combine(testInstance.TestRoot, "TestApp"); - - var cmd = new BuildCommand(projectRoot); - var result = cmd.Execute(); - result.Should().Pass(); - - var outputDir = new DirectoryInfo(Path.Combine(projectRoot, "bin", "Debug", "netcoreapp1.0")); - - outputDir.Should().HaveFile("TestLibraryWithResources.dll"); - outputDir.Sub("fr").Should().HaveFile("TestLibraryWithResources.resources.dll"); - - var depsJson = JObject.Parse(File.ReadAllText(Path.Combine(outputDir.FullName, $"{Path.GetFileNameWithoutExtension(cmd.GetOutputExecutableName())}.deps.json"))); - - foreach (var library in new[] { Tuple.Create("Microsoft.Data.OData", "5.6.4"), Tuple.Create("TestLibraryWithResources", "1.0.0") }) - { - var resources = depsJson - ["targets"] - [".NETCoreApp,Version=v1.0"] - [library.Item1.ToLowerInvariant() + "/" + library.Item2.ToLowerInvariant()] - ["resources"]; - - resources.Should().NotBeNull(); - - foreach (var item in resources.Children()) - { - var locale = item.Value["locale"]; - locale.Should().NotBeNull(); - - item.Name.Should().EndWith($"{locale}/{library.Item1}.resources.dll"); - } - } - } - - [Fact] - public void ResourceTest() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary") - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - var names = new[] - { - "uk-UA", - "en", - "en-US" - }; - foreach (var folder in new[] { _testAppDirDirInfo, _testLibDirInfo }) - { - foreach (var name in names) - { - var resourceFile = Path.Combine(folder.FullName, $"Resource.{name}.resx"); - File.WriteAllText(resourceFile, ""); - } - } - - new BuildCommand(GetProjectPath(_testAppDirDirInfo), framework: DefaultFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _testLibDirInfo.Sub("bin/Debug").Sub(DefaultLibraryFramework); - var appdebug = _testAppDirDirInfo.Sub("bin/Debug").Sub(DefaultFramework); - var appruntime = appdebug.Sub(_runtime); - - foreach (var name in names) - { - libdebug.Sub(name).Should().Exist().And.HaveFile("TestLibrary.resources.dll"); - appdebug.Sub(name).Should().Exist().And.HaveFile("TestApp.resources.dll"); - appruntime.Sub(name).Should().Exist().And.HaveFiles(new[] { "TestLibrary.resources.dll", "TestApp.resources.dll" }); - } - - } - - [Fact] - private void StandaloneApp_WithoutCoreClrDll_Fails() - { - // Convert a Portable App to Standalone to simulate the customer scenario - var testInstance = TestAssetsManager.CreateTestInstance("DependencyChangeTest") - .WithLockFiles(); - - // Convert the portable test project to standalone by removing "type": "platform" and adding rids - var originalTestProject = Path.Combine(testInstance.TestRoot, "PortableApp_Standalone", "project.json"); - var modifiedTestProject = Path.Combine(testInstance.TestRoot, "PortableApp_Standalone", "project.json.modified"); - - // Simulate a user editting the project.json - File.Delete(originalTestProject); - File.Copy(modifiedTestProject, originalTestProject); - - var buildResult = new BuildCommand(originalTestProject, framework: DefaultFramework) - .ExecuteWithCapturedOutput(); - - buildResult.Should().Fail(); - - buildResult.StdErr.Should().Contain("Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes"); - buildResult.StdErr.Should().Contain("The project has not been restored or restore failed - run `dotnet restore`"); - } - - [Fact] - private void App_WithSelfReferencingDependency_FailsBuild() - { - var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects"); - var testInstance = testAssetsManager.CreateTestInstance("TestProjectWithSelfReferencingDependency") - .WithLockFiles(); - - var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot }.ExecuteWithCapturedOutput(); - restoreResult.Should().Fail(); - restoreResult.StdOut.Should().Contain("error: Cycle detected"); - } - - private void CopyProjectToTempDir(string projectDir, TempDirectory tempDir) - { - // copy all the files to temp dir - foreach (var file in Directory.EnumerateFiles(projectDir)) - { - tempDir.CopyFile(file); - } - } - - private string GetProjectPath(DirectoryInfo projectDir) - { - return Path.Combine(projectDir.FullName, "project.json"); - } - } -} diff --git a/test/dotnet-build.Tests/BuildPortableTests.cs b/test/dotnet-build.Tests/BuildPortableTests.cs deleted file mode 100644 index 76f782799..000000000 --- a/test/dotnet-build.Tests/BuildPortableTests.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using Microsoft.DotNet.TestFramework; -using Newtonsoft.Json.Linq; -using FluentAssertions; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildPortableTests : TestBase - { - [Fact] - public void BuildingAPortableProjectProducesDepsJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.deps.json"); - } - - [Fact] - public void BuildingAPortableProjectProducesADllFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.dll"); - } - - [Fact] - public void BuildingAPortableProjectProducesAPdbFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.pdb"); - } - - [Fact] - public void BuildingAPortableProjectProducesARuntimeConfigJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.runtimeconfig.json"); - } - - [Fact] - public void RuntimeOptionsGetsCopiedToRuntimeConfigJsonForAPortableApp() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - var runtimeConfigJsonPath = Path.Combine(netcoreAppOutput.FullName, "PortableApp.runtimeconfig.json"); - - using (var stream = new FileStream(runtimeConfigJsonPath, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - var reader = new StreamReader(stream); - - var rawProject = JObject.Parse(reader.ReadToEnd()); - var runtimeOptions = rawProject["runtimeOptions"]; - - runtimeOptions["somethingString"].Value().Should().Be("anything"); - runtimeOptions["somethingBoolean"].Value().Should().BeTrue(); - runtimeOptions["someArray"].ToObject().Should().Contain("one", "two"); - runtimeOptions["someObject"].Value()["someProperty"].Value().Should().Be("someValue"); - } - } - - [Fact] - public void BuildingAPortableProjectProducesARuntimeConfigDevJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.runtimeconfig.dev.json"); - } - - private DirectoryInfo Build(TestInstance testInstance) - { - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp")) - .ExecuteWithCapturedOutput(); - - result.Should().Pass(); - - var outputBase = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "PortableApp", "bin", "Debug")); - - return outputBase.Sub("netcoreapp1.0"); - } - } -} diff --git a/test/dotnet-build.Tests/BuildProjectToProjectTests.cs b/test/dotnet-build.Tests/BuildProjectToProjectTests.cs deleted file mode 100644 index 97ec5f9c7..000000000 --- a/test/dotnet-build.Tests/BuildProjectToProjectTests.cs +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using FluentAssertions; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class ProjectToProjectDependenciesIncrementalTest : IncrementalTestBase - { - private readonly string[] _projects = new[] { "L0", "L11", "L12", "L21", "L22" }; - private readonly string _appProject = "L0"; - - - private string MainProjectExe - { - get - { - return MainProject + (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ""); - } - } - - public ProjectToProjectDependenciesIncrementalTest() - { - MainProject = "L0"; - ExpectedOutput = "L0 L11 L12 L22 L21 L12 L22 " + Environment.NewLine; - - } - - [Theory] - [InlineData("1", "L0", new[] { "L0" })] - [InlineData("2", "L11", new[] { "L0", "L11" })] - [InlineData("3", "L12", new[] { "L0", "L11", "L12" })] - [InlineData("4", "L22", new[] { "L0", "L11", "L12", "L22" })] - [InlineData("5", "L21", new[] { "L0", "L11", "L21" })] - public void TestIncrementalBuildOfDependencyGraph(string testIdentifer, string projectToTouch, string[] expectedRebuiltProjects) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies", identifier: testIdentifer) - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - // second build; nothing changed; no project required compilation - var result2 = BuildProject(); - AssertRebuilt(result2, Array.Empty()); - - //modify the source code of a project - TouchSourcesOfProject(projectToTouch); - - // third build; all projects on the paths from touched project to root project need to be rebuilt - var result3 = BuildProject(); - AssertRebuilt(result3, expectedRebuiltProjects); - } - - [Fact] - public void TestNoDependencyFlag() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies") - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - var dependencies = new[] { "L11", "L12", "L21", "L22" }; - - // modify the source code of a leaf dependency - TouchSourcesOfProject("L22"); - - // second build with no dependencies and no incremental; only the root rebuilds - var result2 = BuildProject(noDependencies: true, noIncremental: true); - result2.Should().HaveStdOutMatching("Compiling.*L0.*"); - - AssertResultDoesNotContainStrings(result2, dependencies); - - // third build with no dependencies but incremental; nothing rebuilds - var result3 = BuildProject(noDependencies: true); - result3.Should().HaveSkippedProjectCompilation("L0", _appFrameworkFullName); - AssertResultDoesNotContainStrings(result3, dependencies); - } - - [Fact] - public void TestNoDependenciesDependencyRebuild() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies") - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - // modify the source code of a leaf dependency - TouchSourcesOfProject("L11"); - - // second build with no dependencies, rebuilding leaf - var result2 = new BuildCommand(GetProjectDirectory("L11"), noDependencies: true, framework: DefaultLibraryFramework).ExecuteWithCapturedOutput(); - result2.Should().HaveStdOutMatching("Compiling.*L11.*"); - - // third build with no dependencies but incremental; root project should rebuild - var result3 = BuildProject(noDependencies: true); - result3.Should().HaveCompiledProject("L0", _appFrameworkFullName); - } - - private static void AssertResultDoesNotContainStrings(CommandResult commandResult, string[] strings) - { - foreach (var s in strings) - { - commandResult.StdOut.Should().NotContain(s); - } - } - - // compute A - B - private T[] SetDifference(T[] A, T[] B) - { - var setA = new HashSet(A); - setA.ExceptWith(B); - return setA.ToArray(); - } - - private void AssertRebuilt(CommandResult buildResult, string[] expectedRebuilt) - { - foreach (var rebuiltProject in expectedRebuilt) - { - string frameworkFullName = null; - - if (TestProjectIsApp(rebuiltProject)) - { - buildResult - .Should() - .HaveCompiledProject(rebuiltProject, frameworkFullName: _appFrameworkFullName); - } - else - { - buildResult - .Should() - .HaveCompiledProject(rebuiltProject, _libraryFrameworkFullName); - } - } - - foreach (var skippedProject in SetDifference(_projects, expectedRebuilt)) - { - if (TestProjectIsApp(skippedProject)) - { - buildResult.Should().HaveSkippedProjectCompilation(skippedProject, _appFrameworkFullName); - } - else - { - buildResult.Should().HaveSkippedProjectCompilation(skippedProject, _libraryFrameworkFullName); - } - } - } - - private bool TestProjectIsApp(string testproject) - { - return testproject.Equals(_appProject, StringComparison.OrdinalIgnoreCase); - } - - protected override string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot, "src", projectName); - } - - protected override string GetOutputDir() - { - return ""; - } - - protected override string GetOutputExePath() - { - var outputExe = Directory.GetFiles(TestProjectRoot, MainProjectExe, SearchOption.AllDirectories) - .FirstOrDefault(); - - if (string.IsNullOrEmpty(outputExe)) - { - throw new FileNotFoundException($"Unable to find {outputExe} in {TestProjectRoot} or its subdirectories"); - } - - return Path.GetDirectoryName(outputExe); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/BuildStandAloneTests.cs b/test/dotnet-build.Tests/BuildStandAloneTests.cs deleted file mode 100644 index 042ee8d77..000000000 --- a/test/dotnet-build.Tests/BuildStandAloneTests.cs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; -using System.Linq; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildStandAloneTests : TestBase - { - [Fact] - public void BuildingAStandAloneProjectProducesARuntimeConfigDevJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - netstandardappOutput.Should().Exist().And.HaveFile("StandaloneApp.runtimeconfig.dev.json"); - } - - [Fact] - public void BuildingAStandAloneProjectProducesARuntimeConfigJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - netstandardappOutput.Should().Exist().And.HaveFile("StandaloneApp.runtimeconfig.json"); - } - - [Fact] - public void RuntimeOptionsGetsCopiedToRuntimeConfigJsonForAStandaloneApp() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - var runtimeConfigJsonPath = Path.Combine(netstandardappOutput.FullName, "StandaloneApp.runtimeconfig.json"); - - using (var stream = new FileStream(runtimeConfigJsonPath, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - var reader = new StreamReader(stream); - - var rawProject = JObject.Parse(reader.ReadToEnd()); - var runtimeOptions = rawProject["runtimeOptions"]; - - runtimeOptions["somethingString"].Value().Should().Be("anything"); - runtimeOptions["somethingBoolean"].Value().Should().BeTrue(); - runtimeOptions["someArray"].ToObject().Should().Contain("one", "two"); - runtimeOptions["someObject"].Value()["someProperty"].Value().Should().Be("someValue"); - } - } - - public DirectoryInfo Build(TestInstance testInstance) - { - var projectPath = Path.Combine(testInstance.TestRoot, "StandaloneApp"); - - var result = new BuildCommand( - projectPath: projectPath) - .ExecuteWithCapturedOutput(); - - var contexts = ProjectContext.CreateContextForEachFramework( - projectPath, - null, - RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers()); - - var runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier; - - result.Should().Pass(); - - var outputBase = new DirectoryInfo( - Path.Combine(testInstance.TestRoot, "StandaloneApp", "bin", "Debug", "netcoreapp1.0")); - - return outputBase.Sub(runtime); - } - } -} diff --git a/test/dotnet-build.Tests/BuildWarningsTests.cs b/test/dotnet-build.Tests/BuildWarningsTests.cs deleted file mode 100644 index e4f50f10e..000000000 --- a/test/dotnet-build.Tests/BuildWarningsTests.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using FluentAssertions; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildWarningsTests : TestBase - { - [Fact] - public void HavingDeprecatedProjectFileProducesWarning() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithDeprecatedProjectFile").WithLockFiles(); - - new BuildCommand(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass() - .And - .HaveStdErrContaining("DOTNET1015: The 'compilationOptions' option is deprecated. Use 'buildOptions' instead.") - .And - .HaveStdErrContaining("DOTNET1015: The 'packInclude' option is deprecated. Use 'files' in 'packOptions' instead."); - } - } -} diff --git a/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs b/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs deleted file mode 100644 index ea537a75e..000000000 --- a/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using FluentAssertions; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class GivenDotnetBuildBuildsProjects : TestBase - { - [Fact] - public void It_builds_projects_with_Unicode_in_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppWithUnicodéPath") - .WithLockFiles(); - - var testProjectDirectory = testInstance.TestRoot; - - var buildCommand = new BuildCommand(""); - buildCommand.WorkingDirectory = testProjectDirectory; - - buildCommand.ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_Unicode_in_path_project_path_passed() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppWithUnicodéPath") - .WithLockFiles(); - - var testProject = Path.Combine(testInstance.TestRoot, "project.json"); - - new BuildCommand(testProject) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_ruleset_relative_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestRuleSet") - .WithLockFiles(); - - new BuildCommand(Path.Combine("TestLibraryWithRuleSet", "project.json"), skipLoadProject: true) - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass() - .And - .HaveStdErrContaining("CA1001") - .And - .HaveStdErrContaining("CA2213") - .And - .NotHaveStdErrContaining("CA1018"); // this violation is hidden in the ruleset - } - - [Fact] - public void It_builds_projects_with_a_local_project_json_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppSimple") - .WithLockFiles(); - - new BuildCommand("project.json") - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_xmlDoc_and_spaces_in_the_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestLibraryWithXmlDoc", identifier: "With Space") - .WithLockFiles(); - - testInstance.TestRoot.Should().Contain(" "); - - var output = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "output")); - - new BuildCommand("", output: output.FullName, framework: DefaultLibraryFramework) - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - - output.Should().HaveFiles(new[] - { - "TestLibraryWithXmlDoc.dll", - "TestLibraryWithXmlDoc.xml" - }); - } - - [WindowsOnlyFact] - public void It_builds_projects_targeting_net46_and_Roslyn() - { - var testInstance = TestAssetsManager - .CreateTestInstance("AppWithNet46AndRoslyn") - .WithLockFiles(); - - var testProject = Path.Combine(testInstance.TestRoot, "project.json"); - - new BuildCommand(testProject) - .Execute() - .Should() - .Pass(); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestBase.cs b/test/dotnet-build.Tests/IncrementalTestBase.cs deleted file mode 100644 index 58293e342..000000000 --- a/test/dotnet-build.Tests/IncrementalTestBase.cs +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestBase : TestBase - { - protected readonly string _libraryFrameworkFullName = ".NETStandard,Version=v1.5"; - protected readonly string _appFrameworkFullName = ".NETCoreApp,Version=v1.0"; - - protected virtual string MainProject - { - get; set; - } - - protected virtual string ExpectedOutput - { - get; set; - } - - protected virtual string TestProjectRoot - { - get; set; - } - - protected IncrementalTestBase() - { - - } - - - public IncrementalTestBase(string testProjectsRoot, string mainProject, string expectedOutput) - { - MainProject = mainProject; - ExpectedOutput = expectedOutput; - TestProjectRoot = testProjectsRoot; - } - - protected void TouchSourcesOfProject() - { - TouchSourcesOfProject(MainProject); - } - - protected void TouchSourcesOfProject(string projectToTouch) - { - foreach (var sourceFile in GetSourceFilesForProject(projectToTouch)) - { - TouchFile(sourceFile); - } - } - - protected static void TouchFile(string file) - { - File.SetLastWriteTimeUtc(file, DateTime.UtcNow); - } - - protected CommandResult BuildProject(bool noDependencies = false, bool noIncremental = false, bool expectBuildFailure = false) - { - var mainProjectFile = GetProjectFile(MainProject); - return BuildProject(mainProjectFile, noDependencies, noIncremental, expectBuildFailure); - } - - protected CommandResult BuildProject(string projectFile, bool noDependencies = false, bool noIncremental = false, bool expectBuildFailure = false) - { - var buildCommand = new BuildCommand(projectFile, output: GetOutputDir(), framework: "netcoreapp1.0", noIncremental: noIncremental, noDependencies : noDependencies); - var result = buildCommand.ExecuteWithCapturedOutput(); - - if (!expectBuildFailure) - { - result.Should().Pass(); - TestOutputExecutable(GetOutputExePath(), buildCommand.GetOutputExecutableName(), ExpectedOutput); - } - else - { - result.Should().Fail(); - } - - return result; - } - - protected virtual string GetOutputExePath() - { - return GetBinRoot(); - } - - protected virtual string GetOutputDir() - { - return GetBinRoot(); - } - - protected string GetBinRoot() - { - return Path.Combine(TestProjectRoot, "bin"); - } - - protected virtual string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot); - } - - protected string GetProjectFile(string projectName) - { - return Path.Combine(GetProjectDirectory(projectName), "project.json"); - } - - private string GetOutputFileForProject(string projectName) - { - return Path.Combine(GetCompilationOutputPath(), projectName + ".dll"); - } - - private IEnumerable GetSourceFilesForProject(string projectName) - { - return Directory.EnumerateFiles(GetProjectDirectory(projectName)). - Where(f => f.EndsWith(".cs")); - } - - protected string GetCompilationOutputPath() - { - var executablePath = Path.Combine(GetBinRoot(), "Debug", "netcoreapp1.0"); - - return executablePath; - } - - protected string GetIntermediaryOutputPath() - { - var executablePath = Path.Combine(TestProjectRoot, "obj", "Debug", "netcoreapp1.0"); - - return executablePath; - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTests.cs b/test/dotnet-build.Tests/IncrementalTests.cs deleted file mode 100644 index be04e0436..000000000 --- a/test/dotnet-build.Tests/IncrementalTests.cs +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using System.Linq; -using FluentAssertions; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using Microsoft.DotNet.TestFramework; -using System.Diagnostics; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTests : IncrementalTestBase - { - public IncrementalTests() - { - MainProject = "TestSimpleIncrementalApp"; - ExpectedOutput = "Hello World!" + Environment.NewLine; - } - - private TestInstance _testInstance; - - private void CreateTestInstance() - { - _testInstance = TestAssetsManager.CreateTestInstance("TestSimpleIncrementalApp") - .WithLockFiles(); - TestProjectRoot = _testInstance.TestRoot; - } - - [Fact] - public void TestNoIncrementalFlag() - { - CreateTestInstance(); - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(noIncremental: true); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - Assert.Contains("[Forced Unsafe]", buildResult.StdOut); - } - - [Fact] - public void TestRebuildMissingPdb() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("pdb"); - } - - [Fact] - public void TestRebuildMissingDll() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("dll"); - } - - [Fact] - public void TestRebuildMissingXml() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("xml"); - } - - [Fact] - public void TestNoLockFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var lockFile = Path.Combine(TestProjectRoot, "project.lock.json"); - Assert.True(File.Exists(lockFile)); - - File.Delete(lockFile); - Assert.False(File.Exists(lockFile)); - - buildResult = BuildProject(expectBuildFailure: true); - Assert.Contains("does not have a lock file", buildResult.StdErr); - Assert.Contains("dotnet restore", buildResult.StdErr); - } - - [Fact] - public void TestModifiedVersionFile() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // change version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.AppendAllText(versionFile, "text"); - - // assert rebuilt - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestNoVersionFile() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // delete version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.Delete(versionFile); - File.Exists(versionFile).Should().BeFalse(); - - // assert build skipped due to no version file - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - - // the version file should have been regenerated during the build, even if compilation got skipped - File.Exists(versionFile).Should().BeTrue(); - } - - [Fact] - public void TestRebuildDeletedSource() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - File.Delete(sourceFile); - Assert.False(File.Exists(sourceFile)); - - // second build; should get rebuilt since we deleted a source file - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildRenamedSource() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - var destinationFile = Path.Combine(Path.GetDirectoryName(sourceFile), "ProgramNew.cs"); - File.Move(sourceFile, destinationFile); - Assert.False(File.Exists(sourceFile)); - Assert.True(File.Exists(destinationFile)); - - // second build; should get rebuilt since we renamed a source file - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildDeletedSourceAfterCliChanged() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // change version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.AppendAllText(versionFile, "text"); - - // delete a source file - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - File.Delete(sourceFile); - Assert.False(File.Exists(sourceFile)); - - // should get rebuilt since we changed version file and deleted source file - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildChangedLockFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var lockFile = Path.Combine(TestProjectRoot, "project.lock.json"); - TouchFile(lockFile); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildChangedProjectFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - TouchFile(GetProjectFile(MainProject)); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - // regression for https://github.com/dotnet/cli/issues/965 - [Fact] - public void TestInputWithSameTimeAsOutputCausesProjectToCompile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var outputTimestamp = SetAllOutputItemsToSameTime(); - - // set an input to have the same last write time as an output item - // this should trigger recompilation to account for file systems with second timestamp granularity - // (an input file that changed within the same second as the previous outputs should trigger a rebuild) - File.SetLastWriteTime(GetProjectFile(MainProject), outputTimestamp); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - private DateTime SetAllOutputItemsToSameTime() - { - var now = DateTime.Now; - foreach (var f in Directory.EnumerateFiles(GetCompilationOutputPath())) - { - File.SetLastWriteTime(f, now); - } - return now; - } - - private void TestDeleteOutputWithExtension(string extension) - { - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - Reporter.Verbose.WriteLine($"Files in {GetBinRoot()}"); - foreach (var file in Directory.EnumerateFiles(GetBinRoot())) - { - Reporter.Verbose.Write($"\t {file}"); - } - - // delete output files with extensions - foreach (var outputFile in Directory.EnumerateFiles(GetBinRoot()).Where(f => - { - var fileName = Path.GetFileName(f); - return fileName.StartsWith(MainProject, StringComparison.OrdinalIgnoreCase) && - fileName.EndsWith(extension, StringComparison.OrdinalIgnoreCase); - })) - { - Reporter.Output.WriteLine($"Deleted {outputFile}"); - - File.Delete(outputFile); - Assert.False(File.Exists(outputFile)); - } - - // second build; should get rebuilt since we deleted an output item - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs b/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs deleted file mode 100644 index 5b1dc1ffb..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsOnCultureSpecificResource : IncrementalTestBase - { - public IncrementalTestsOnCultureSpecificResource() - { - MainProject = "TestProjectWithCultureSpecificResource"; - ExpectedOutput = "Hello World!" + Environment.NewLine + "Bonjour!" + Environment.NewLine; - } - - // Sridhar-MS - temporarily disable the test and investigate why it is failing in CI machine. - // [Fact] - public void TestRebuildSkipsCompilationOnNonCultureResource() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectWithCultureSpecificResource") - .WithLockFiles(); - - TestProjectRoot = testInstance.TestRoot; - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(); - - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestsOnResources.cs b/test/dotnet-build.Tests/IncrementalTestsOnResources.cs deleted file mode 100644 index 815a2d6c6..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsOnResources.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsOnResources : IncrementalTestBase - { - public IncrementalTestsOnResources() - { - MainProject = "TestProjectWithResource"; - ExpectedOutput = "Hello World!" + Environment.NewLine; - } - - [Fact] - public void TestRebuildSkipsCompilationOnNonCultureResource() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectWithResource") - .WithLockFiles(); - - TestProjectRoot = testInstance.TestRoot; - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(); - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs b/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs deleted file mode 100644 index 9d2e82125..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsTransitiveRuntime : IncrementalTestBase - { - private const string TestLibraryWithAppDependency = "TestLibraryWithAppDependency"; - private const string LibraryProject = "TestLibrary"; - private const string AppProject = "TestApp"; - - public IncrementalTestsTransitiveRuntime() - { - MainProject = "TestLibrary2"; - ExpectedOutput = "This string came from the test library!" + Environment.NewLine; - } - - [Fact] - public void TestSkipsRebuildWithTransitiveExeDependency() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithTransitiveAppDependency") - .WithLockFiles(); - TestProjectRoot = testInstance.TestRoot; - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(TestLibraryWithAppDependency, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(AppProject, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(LibraryProject, _appFrameworkFullName); - - buildResult = BuildProject(); - - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(TestLibraryWithAppDependency, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(AppProject, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(LibraryProject, _appFrameworkFullName); - } - - protected override string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot, projectName); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs b/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs deleted file mode 100644 index 024a62760..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsVersionSuffix : IncrementalTestBase - { - [Fact] - public void TestRebuildWhenVersionSuffixChanged() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestSimpleIncrementalApp") - .WithLockFiles(); - - // Build with Version Suffix 1 - var command = new BuildCommand(testInstance.TestRoot, versionSuffix: "1"); - var result = command.ExecuteWithCapturedOutput(); - - // Verify the result - result.Should().HaveCompiledProject("TestSimpleIncrementalApp", ".NETCoreApp,Version=v1.0"); - - // Build with Version Suffix 2 - command = new BuildCommand(testInstance.TestRoot, versionSuffix: "2"); - result = command.ExecuteWithCapturedOutput(); - - // Verify the result - result.Should().HaveCompiledProject("TestSimpleIncrementalApp", ".NETCoreApp,Version=v1.0"); - } - } -} diff --git a/test/dotnet-build.Tests/ProjectNameArgumentTests.cs b/test/dotnet-build.Tests/ProjectNameArgumentTests.cs deleted file mode 100644 index c46ee18f3..000000000 --- a/test/dotnet-build.Tests/ProjectNameArgumentTests.cs +++ /dev/null @@ -1,135 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using FluentAssertions; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class ProjectNameArgumentTests : TestBase - { - private TestInstance _testInstance; - - [Fact] - public void TestProjectDirectoryPath() - { - Test(new[] { Path.Combine("src", "L21") }, new[] { "L21" }); - } - - [Fact] - public void TestProjectFile() - { - Test(new[] { Path.Combine("src", "L21", "project.json") }, new[] { "L21" }); - } - - [Fact] - public void TestMultipleProjectDirectories() - { - Test(new[] - { - Path.Combine("src", "L21"), - Path.Combine("src", "L11") - }, - new[] { "L21", "L11" }); - } - - [Fact] - public void TestMultipleProjectFiles() - { - Test(new[] - { - Path.Combine("src", "L21", "project.json"), - Path.Combine("src", "L11", "project.json"), - }, - new[] { "L21", "L11" }); - } - - [Fact] - public void TestGlobbing() - { - Test(new[] - { - Path.Combine("src", "**", "project.json") - }, - new[] { "L21", "L11", "L12" }); - } - - [Fact] - public void TestMultipleGlobbing() - { - Test(new[] - { - Path.Combine("src", "L1*", "project.json"), - Path.Combine("src", "L2*", "project.json") - }, - new[] { "L11", "L12", "L21", "L22" }); - } - - [Fact] - public void TestFailsWhenNoGlobbingNoMatch() - { - Test(new[] - { - Path.Combine("src", "L33*", "project.json") - }, - null); - } - - [Fact] - public void TestFailsFileDoedNotExist() - { - Test(new[] - { - Path.Combine("src", "L33", "project.json") - }, - null); - } - - [Fact] - public void TestFindsProjectJsonInCurrentDirectoryWithNoArguments() - { - Test(new string[] { }, new[] { "L21" }, workingDirectory: Path.Combine("src", "L21")); - } - - [Fact] - public void TestFailsIfNoProjectJsonInCurrentDirectoryWithNoArguments() - { - Test(new string[] { }, null, workingDirectory: "src"); - } - - private void Test(IEnumerable inputs, IEnumerable expectedProjects, string workingDirectory = null, [CallerMemberName] string testName = null) - { - var instance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies", testName) - .WithLockFiles() - .WithBuildArtifacts(); - string args = string.Join(" ", inputs); - - workingDirectory = workingDirectory != null - ? Path.Combine(instance.TestRoot, workingDirectory) - : instance.TestRoot; - - var result = new TestCommand("dotnet") - { - WorkingDirectory = Path.Combine(workingDirectory) - }.ExecuteWithCapturedOutput("--verbose build --no-dependencies " + args); - if (expectedProjects != null) - { - result.Should().Pass(); - foreach (var expectedProject in expectedProjects) - { - result.Should().HaveSkippedProjectCompilation(expectedProject, NuGetFramework.Parse("netstandard1.5").DotNetFrameworkName); - } - } - else - { - result.Should().Fail(); - } - } - } -} diff --git a/test/dotnet-build.Tests/WrappedProjectTests.cs b/test/dotnet-build.Tests/WrappedProjectTests.cs deleted file mode 100644 index 73f8ee102..000000000 --- a/test/dotnet-build.Tests/WrappedProjectTests.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using FluentAssertions; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class WrappedProjectTests: TestBase - { - [Fact] - public void WrappedProjectFilesResolvedCorrectly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithWrapperProjectDependency") - .WithBuildArtifacts() - .WithLockFiles(); - - var root = testInstance.TestRoot; - - // run compile - var outputDir = Path.Combine(root, "bin"); - var testProject = ProjectUtils.GetProjectJson(root, "TestApp"); - var buildCommand = new BuildCommand(testProject, output: outputDir, framework: DefaultFramework); - var result = buildCommand.ExecuteWithCapturedOutput(); - result.Should().Pass(); - - new DirectoryInfo(outputDir).Should() - .HaveFiles(new [] { "TestLibrary.dll", "TestLibrary.pdb" }); - } - - } -} diff --git a/test/dotnet-build.Tests/dotnet-build.Tests.xproj b/test/dotnet-build.Tests/dotnet-build.Tests.xproj deleted file mode 100644 index b23863bda..000000000 --- a/test/dotnet-build.Tests/dotnet-build.Tests.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - 14.0.23107 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 833ffee1-7eed-4f51-8dfd-946d48833333 - Microsoft.DotNet.Tools.Builder.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - - - - \ No newline at end of file diff --git a/test/dotnet-build.Tests/project.json b/test/dotnet-build.Tests/project.json deleted file mode 100644 index 7da2ca9b7..000000000 --- a/test/dotnet-build.Tests/project.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "1.0.0-*", - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "System.Runtime.Serialization.Primitives": "4.1.1", - "Microsoft.DotNet.Tools.Tests.Utilities": { - "target": "project" - }, - "Microsoft.DotNet.Cli.Utils": { - "target": "project" - }, - "Newtonsoft.Json": "9.0.1", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" - }, - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "dotnet5.4", - "portable-net451+win8" - ] - } - }, - "testRunner": "xunit" -} From ee1474c161f6c862ebfaa31506840cbbc449b1ac Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 4 Aug 2016 10:33:41 -0700 Subject: [PATCH 147/165] Removing dependency model from CLI repo. Conflicts: Microsoft.DotNet.Cli.sln build_projects/dotnet-cli-build/PackageTargets.cs build_projects/dotnet-cli-build/TestPackageProjects.cs build_projects/dotnet-cli-build/TestTargets.cs src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs src/Microsoft.Extensions.DependencyModel/DependencyContext.cs src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs src/Microsoft.Extensions.DependencyModel/project.json test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs --- Microsoft.DotNet.Cli.sln | 25 +- .../project.json | 4 +- .../DependencyContextValidator/project.json | 4 +- .../project.json | 4 +- .../CollectionExtensions.cs | 40 - .../CompilationLibrary.cs | 52 -- .../CompilationOptions.cs | 81 -- .../Dependency.cs | 47 -- .../DependencyContext.cs | 106 --- .../DependencyContextExtensions.cs | 155 ---- .../DependencyContextJsonReader.cs | 704 ------------------ .../DependencyContextLoader.cs | 137 ---- .../DependencyContextPaths.cs | 39 - .../DependencyContextStrings.cs | 80 -- .../DependencyContextWriter.cs | 341 --------- .../IDependencyContextReader.cs | 10 - .../JsonTextReaderExtensions.cs | 77 -- .../Library.cs | 50 -- ...Microsoft.Extensions.DependencyModel.xproj | 18 - .../Properties/Properties.cs | 5 - .../AppBaseCompilationAssemblyResolver.cs | 121 --- .../CompositeCompilationAssemblyResolver.cs | 30 - .../DotNetReferenceAssembliesPathResolver.cs | 57 -- .../ICompilationAssemblyResolver.cs | 12 - ...PackageCacheCompilationAssemblyResolver.cs | 75 -- .../PackageCompilationAssemblyResolver.cs | 85 --- .../ReferenceAssemblyPathResolver.cs | 141 ---- .../Resolution/ResolverUtils.cs | 50 -- .../ResourceAssembly.cs | 29 - .../RuntimeAssembly.cs | 47 -- .../RuntimeAssetGroup.cs | 29 - .../RuntimeFallbacks.cs | 30 - .../RuntimeLibrary.cs | 54 -- .../TargetInfo.cs | 34 - .../project.json | 40 - .../AppBaseResolverTests.cs | 370 --------- .../CompositeResolverTests.cs | 94 --- .../DependencyContextBuilderTests.cs | 412 ---------- .../DependencyContextJsonReaderTest.cs | 370 --------- .../DependencyContextJsonWriterTests.cs | 518 ------------- .../DependencyContextLoaderTests.cs | 186 ----- .../DependencyContextTests.cs | 138 ---- .../EnvironmentMockBuilder.cs | 48 -- .../FunctionalTests.cs | 132 ---- .../JsonAssetions.cs | 59 -- ...oft.Extensions.DependencyModel.Tests.xproj | 21 - .../PackageCacheResolverTest.cs | 139 ---- .../PackageResolverTest.cs | 101 --- .../ReferenceAssemblyResolverTests.cs | 142 ---- .../TestLibraryFactory.cs | 54 -- .../project.json | 33 - 51 files changed, 9 insertions(+), 5621 deletions(-) delete mode 100644 src/Microsoft.Extensions.DependencyModel/CollectionExtensions.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/CompilationOptions.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Dependency.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContext.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextExtensions.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextStrings.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/IDependencyContextReader.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Library.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Microsoft.Extensions.DependencyModel.xproj delete mode 100644 src/Microsoft.Extensions.DependencyModel/Properties/Properties.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/CompositeCompilationAssemblyResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/DotNetReferenceAssembliesPathResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/ICompilationAssemblyResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/PackageCompilationAssemblyResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/ReferenceAssemblyPathResolver.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/ResourceAssembly.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/RuntimeAssembly.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/RuntimeAssetGroup.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/RuntimeFallbacks.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/RuntimeLibrary.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/TargetInfo.cs delete mode 100644 src/Microsoft.Extensions.DependencyModel/project.json delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/CompositeResolverTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextBuilderTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/EnvironmentMockBuilder.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/JsonAssetions.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/Microsoft.Extensions.DependencyModel.Tests.xproj delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/ReferenceAssemblyResolverTests.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs delete mode 100644 test/Microsoft.Extensions.DependencyModel.Tests/project.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 1954dd288..6bc2d6330 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -24,7 +24,13 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.Testin EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}" EndProject +<<<<<<< HEAD Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.DependencyModel", "src\Microsoft.Extensions.DependencyModel\Microsoft.Extensions.DependencyModel.xproj", "{688870C8-9843-4F9E-8576-D39290AD0F25}" +======= +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{0722D325-24C8-4E83-B5AF-0A083E7F0749}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MultiProjectValidator", "tools\MultiProjectValidator\MultiProjectValidator.xproj", "{08A68C6A-86F6-4ED2-89A7-B166D33E9F85}" +>>>>>>> 20c8295... Removing dependency model from CLI repo. EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EndToEnd", "test\EndToEnd\EndToEnd.xproj", "{65741CB1-8AEE-4C66-8198-10A7EA0E4258}" EndProject @@ -56,8 +62,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installer", "Installer", "{ EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Cli.Msi.Tests", "test\Installer\Microsoft.DotNet.Cli.Msi.Tests\Microsoft.DotNet.Cli.Msi.Tests.xproj", "{0B31C336-149D-471A-B7B1-27B0F1E80F83}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.DependencyModel.Tests", "test\Microsoft.Extensions.DependencyModel.Tests\Microsoft.Extensions.DependencyModel.Tests.xproj", "{4A4711D8-4312-49FC-87B5-4F183F4C6A51}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.TestFramework", "src\Microsoft.DotNet.TestFramework\Microsoft.DotNet.TestFramework.xproj", "{0724ED7C-56E3-4604-9970-25E600611383}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-test.UnitTests", "test\dotnet-test.UnitTests\dotnet-test.UnitTests.xproj", "{857274AC-E741-4266-A7FD-14DEE0C1CC96}" @@ -460,22 +464,6 @@ Global {0B31C336-149D-471A-B7B1-27B0F1E80F83}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {0B31C336-149D-471A-B7B1-27B0F1E80F83}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {0B31C336-149D-471A-B7B1-27B0F1E80F83}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Debug|x64.ActiveCfg = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Debug|x64.Build.0 = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Release|Any CPU.Build.0 = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Release|x64.ActiveCfg = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.Release|x64.Build.0 = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {4A4711D8-4312-49FC-87B5-4F183F4C6A51}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {0724ED7C-56E3-4604-9970-25E600611383}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0724ED7C-56E3-4604-9970-25E600611383}.Debug|Any CPU.Build.0 = Debug|Any CPU {0724ED7C-56E3-4604-9970-25E600611383}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -949,7 +937,6 @@ Global {0745410A-6629-47EB-AAB5-08D6288CAD72} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {0E3300A4-DF54-40BF-87D8-E7658330C288} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {0B31C336-149D-471A-B7B1-27B0F1E80F83} = {0E3300A4-DF54-40BF-87D8-E7658330C288} - {4A4711D8-4312-49FC-87B5-4F183F4C6A51} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {0724ED7C-56E3-4604-9970-25E600611383} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {857274AC-E741-4266-A7FD-14DEE0C1CC96} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {60C33D0A-A5D8-4AB0-9956-1F804654DF05} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} diff --git a/TestAssets/TestPackages/dotnet-dependency-context-test/project.json b/TestAssets/TestPackages/dotnet-dependency-context-test/project.json index b42583346..1f8caa758 100644 --- a/TestAssets/TestPackages/dotnet-dependency-context-test/project.json +++ b/TestAssets/TestPackages/dotnet-dependency-context-test/project.json @@ -8,9 +8,7 @@ "type": "platform", "version": "1.0.0" }, - "Microsoft.Extensions.DependencyModel": { - "target": "project" - } + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-003395" }, "frameworks": { "netcoreapp1.0": { diff --git a/TestAssets/TestProjects/DependencyContextValidator/DependencyContextValidator/project.json b/TestAssets/TestProjects/DependencyContextValidator/DependencyContextValidator/project.json index ece3b95e7..d0557799a 100644 --- a/TestAssets/TestProjects/DependencyContextValidator/DependencyContextValidator/project.json +++ b/TestAssets/TestProjects/DependencyContextValidator/DependencyContextValidator/project.json @@ -1,9 +1,7 @@ { "version": "1.0.0-*", "dependencies": { - "Microsoft.Extensions.DependencyModel": { - "target": "project" - } + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-003395" }, "frameworks": { "netstandard1.6": { diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index 5eb55a280..b1dca0083 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -5,9 +5,7 @@ }, "description": "Types to model a .NET Project", "dependencies": { - "Microsoft.Extensions.DependencyModel": { - "target": "project" - }, + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-003394", "Newtonsoft.Json": "9.0.1", "NuGet.Configuration": "3.5.0-rc1-1697", "NuGet.Packaging": "3.5.0-rc1-1697", diff --git a/src/Microsoft.Extensions.DependencyModel/CollectionExtensions.cs b/src/Microsoft.Extensions.DependencyModel/CollectionExtensions.cs deleted file mode 100644 index 6e3f94356..000000000 --- a/src/Microsoft.Extensions.DependencyModel/CollectionExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Microsoft.Extensions.DependencyModel; -using System.Linq; - -namespace System.Collections.Generic -{ - public static class CollectionExtensions - { - public static RuntimeAssetGroup GetDefaultGroup(this IEnumerable self) => GetGroup(self, string.Empty); - public static RuntimeAssetGroup GetRuntimeGroup(this IEnumerable self, string runtime) - { - if(string.IsNullOrEmpty(runtime)) - { - throw new ArgumentNullException(nameof(runtime)); - } - return GetGroup(self, runtime); - } - - private static RuntimeAssetGroup GetGroup(IEnumerable groups, string runtime) - { - return groups.FirstOrDefault(g => g.Runtime == runtime); - } - - public static IEnumerable GetDefaultAssets(this IEnumerable self) => GetAssets(self, string.Empty); - public static IEnumerable GetRuntimeAssets(this IEnumerable self, string runtime) - { - if(string.IsNullOrEmpty(runtime)) - { - throw new ArgumentNullException(nameof(runtime)); - } - return GetAssets(self, runtime); - } - - private static IEnumerable GetAssets(IEnumerable groups, string runtime) - { - return groups - .Where(a => string.Equals(a.Runtime, runtime, StringComparison.Ordinal)) - .SelectMany(a => a.AssetPaths); - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs b/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs deleted file mode 100644 index 0177f6e69..000000000 --- a/src/Microsoft.Extensions.DependencyModel/CompilationLibrary.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.Extensions.DependencyModel.Resolution; - -namespace Microsoft.Extensions.DependencyModel -{ - public class CompilationLibrary : Library - { - public CompilationLibrary(string type, - string name, - string version, - string hash, - IEnumerable assemblies, - IEnumerable dependencies, - bool serviceable) - : base(type, name, version, hash, dependencies, serviceable) - { - if (assemblies == null) - { - throw new ArgumentNullException(nameof(assemblies)); - } - Assemblies = assemblies.ToArray(); - } - - public IReadOnlyList Assemblies { get; } - -#if !NETSTANDARD1_3 - internal static ICompilationAssemblyResolver DefaultResolver { get; } = new CompositeCompilationAssemblyResolver(new ICompilationAssemblyResolver[] - { - new PackageCacheCompilationAssemblyResolver(), - new AppBaseCompilationAssemblyResolver(), - new ReferenceAssemblyPathResolver(), - new PackageCompilationAssemblyResolver() - }); - - public IEnumerable ResolveReferencePaths() - { - var assemblies = new List(); - if (!DefaultResolver.TryResolveAssemblyPaths(this, assemblies)) - { - throw new InvalidOperationException($"Can not find compilation library location for package '{Name}'"); - } - return assemblies; - } -#endif - - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/CompilationOptions.cs b/src/Microsoft.Extensions.DependencyModel/CompilationOptions.cs deleted file mode 100644 index f37e553cb..000000000 --- a/src/Microsoft.Extensions.DependencyModel/CompilationOptions.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.Extensions.DependencyModel -{ - public class CompilationOptions - { - public IReadOnlyList Defines { get; } - - public string LanguageVersion { get; } - - public string Platform { get; } - - public bool? AllowUnsafe { get; } - - public bool? WarningsAsErrors { get; } - - public bool? Optimize { get; } - - public string KeyFile { get; } - - public bool? DelaySign { get; } - - public bool? PublicSign { get; } - - public string DebugType { get; } - - public bool? EmitEntryPoint { get; } - - public bool? GenerateXmlDocumentation { get; } - - public static CompilationOptions Default { get; } = new CompilationOptions( - defines: Enumerable.Empty(), - languageVersion: null, - platform: null, - allowUnsafe: null, - warningsAsErrors: null, - optimize: null, - keyFile: null, - delaySign: null, - publicSign: null, - debugType: null, - emitEntryPoint: null, - generateXmlDocumentation: null); - - public CompilationOptions(IEnumerable defines, - string languageVersion, - string platform, - bool? allowUnsafe, - bool? warningsAsErrors, - bool? optimize, - string keyFile, - bool? delaySign, - bool? publicSign, - string debugType, - bool? emitEntryPoint, - bool? generateXmlDocumentation) - { - if (defines == null) - { - throw new ArgumentNullException(nameof(defines)); - } - Defines = defines.ToArray(); - LanguageVersion = languageVersion; - Platform = platform; - AllowUnsafe = allowUnsafe; - WarningsAsErrors = warningsAsErrors; - Optimize = optimize; - KeyFile = keyFile; - DelaySign = delaySign; - PublicSign = publicSign; - DebugType = debugType; - EmitEntryPoint = emitEntryPoint; - GenerateXmlDocumentation = generateXmlDocumentation; - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/Dependency.cs b/src/Microsoft.Extensions.DependencyModel/Dependency.cs deleted file mode 100644 index 6f7672ff0..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Dependency.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Microsoft.DotNet.InternalAbstractions; - -namespace Microsoft.Extensions.DependencyModel -{ - public struct Dependency - { - public Dependency(string name, string version) - { - if (string.IsNullOrEmpty(name)) - { - throw new ArgumentException(nameof(name)); - } - if (string.IsNullOrEmpty(version)) - { - throw new ArgumentException(nameof(version)); - } - Name = name; - Version = version; - } - - public string Name { get; } - public string Version { get; } - - public bool Equals(Dependency other) - { - return string.Equals(Name, other.Name) && string.Equals(Version, other.Version); - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - return obj is Dependency && Equals((Dependency) obj); - } - - public override int GetHashCode() - { - var combiner = HashCodeCombiner.Start(); - combiner.Add(Name); - combiner.Add(Version); - return combiner.CombinedHash; - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs deleted file mode 100644 index 18cc251a5..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -namespace Microsoft.Extensions.DependencyModel -{ - public class DependencyContext - { -#if !NETSTANDARD1_3 - private static readonly Lazy _defaultContext = new Lazy(LoadDefault); -#endif - - public DependencyContext(TargetInfo target, - CompilationOptions compilationOptions, - IEnumerable compileLibraries, - IEnumerable runtimeLibraries, - IEnumerable runtimeGraph) - { - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } - if (compilationOptions == null) - { - throw new ArgumentNullException(nameof(compilationOptions)); - } - if (compileLibraries == null) - { - throw new ArgumentNullException(nameof(compileLibraries)); - } - if (runtimeLibraries == null) - { - throw new ArgumentNullException(nameof(runtimeLibraries)); - } - if (runtimeGraph == null) - { - throw new ArgumentNullException(nameof(runtimeGraph)); - } - - Target = target; - CompilationOptions = compilationOptions; - CompileLibraries = compileLibraries.ToArray(); - RuntimeLibraries = runtimeLibraries.ToArray(); - RuntimeGraph = runtimeGraph.ToArray(); - } - -#if !NETSTANDARD1_3 - public static DependencyContext Default => _defaultContext.Value; -#endif - - public TargetInfo Target { get; } - - public CompilationOptions CompilationOptions { get; } - - public IReadOnlyList CompileLibraries { get; } - - public IReadOnlyList RuntimeLibraries { get; } - - public IReadOnlyList RuntimeGraph { get; } - - public DependencyContext Merge(DependencyContext other) - { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - - return new DependencyContext( - Target, - CompilationOptions, - CompileLibraries.Union(other.CompileLibraries, new LibraryMergeEqualityComparer()), - RuntimeLibraries.Union(other.RuntimeLibraries, new LibraryMergeEqualityComparer()), - RuntimeGraph.Union(other.RuntimeGraph) - ); - } - -#if !NETSTANDARD1_3 - private static DependencyContext LoadDefault() - { - return DependencyContextLoader.Default.Load(Assembly.GetEntryAssembly()); - } - - public static DependencyContext Load(Assembly assembly) - { - return DependencyContextLoader.Default.Load(assembly); - } -#endif - - private class LibraryMergeEqualityComparer : IEqualityComparer where T : Library - { - public bool Equals(T x, T y) - { - return StringComparer.OrdinalIgnoreCase.Equals(x.Name, y.Name); - } - - public int GetHashCode(T obj) - { - return StringComparer.OrdinalIgnoreCase.GetHashCode(obj.Name); - } - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextExtensions.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextExtensions.cs deleted file mode 100644 index 59f73ea61..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextExtensions.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; - -namespace Microsoft.Extensions.DependencyModel -{ - public static class DependencyContextExtensions - { - private const string NativeImageSufix = ".ni"; - - public static IEnumerable GetDefaultNativeAssets(this DependencyContext self) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - return self.RuntimeLibraries.SelectMany(library => library.GetDefaultNativeAssets(self)); - } - - public static IEnumerable GetRuntimeNativeAssets(this DependencyContext self, string runtimeIdentifier) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } - return self.RuntimeLibraries.SelectMany(library => library.GetRuntimeNativeAssets(self, runtimeIdentifier)); - } - - public static IEnumerable GetDefaultNativeAssets(this RuntimeLibrary self, DependencyContext context) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - return ResolveAssets(context, string.Empty, self.NativeLibraryGroups); - } - - public static IEnumerable GetRuntimeNativeAssets(this RuntimeLibrary self, DependencyContext context, string runtimeIdentifier) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } - return ResolveAssets(context, runtimeIdentifier, self.NativeLibraryGroups); - } - - public static IEnumerable GetDefaultAssemblyNames(this DependencyContext self) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - return self.RuntimeLibraries.SelectMany(library => library.GetDefaultAssemblyNames(self)); - } - - public static IEnumerable GetRuntimeAssemblyNames(this DependencyContext self, string runtimeIdentifier) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } - return self.RuntimeLibraries.SelectMany(library => library.GetRuntimeAssemblyNames(self, runtimeIdentifier)); - } - - public static IEnumerable GetDefaultAssemblyNames(this RuntimeLibrary self, DependencyContext context) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - return ResolveAssets(context, string.Empty, self.RuntimeAssemblyGroups).Select(GetAssemblyName); - } - - public static IEnumerable GetRuntimeAssemblyNames(this RuntimeLibrary self, DependencyContext context, string runtimeIdentifier) - { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } - return ResolveAssets(context, runtimeIdentifier, self.RuntimeAssemblyGroups).Select(GetAssemblyName); - } - - private static AssemblyName GetAssemblyName(string assetPath) - { - var name = Path.GetFileNameWithoutExtension(assetPath); - if (name == null) - { - throw new ArgumentException($"Provided path has empty file name '{assetPath}'", nameof(assetPath)); - } - - if (name.EndsWith(NativeImageSufix)) - { - name = name.Substring(0, name.Length - NativeImageSufix.Length); - } - - return new AssemblyName(name); - } - - private static IEnumerable ResolveAssets( - DependencyContext context, - string runtimeIdentifier, - IEnumerable assets) - { - var fallbacks = context.RuntimeGraph.FirstOrDefault(f => f.Runtime == runtimeIdentifier); - var rids = Enumerable.Concat(new[] { runtimeIdentifier }, fallbacks?.Fallbacks ?? Enumerable.Empty()); - return SelectAssets(rids, assets); - } - - private static IEnumerable SelectAssets(IEnumerable rids, IEnumerable groups) - { - foreach (var rid in rids) - { - var group = groups.FirstOrDefault(g => g.Runtime == rid); - if (group != null) - { - return group.AssetPaths; - } - } - - // Return the RID-agnostic group - return groups.GetDefaultAssets(); - } - - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs deleted file mode 100644 index 6c40ae6d5..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextJsonReader.cs +++ /dev/null @@ -1,704 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Newtonsoft.Json; - -namespace Microsoft.Extensions.DependencyModel -{ - public class DependencyContextJsonReader : IDependencyContextReader - { - private readonly IDictionary _stringPool = new Dictionary(); - - public DependencyContext Read(Stream stream) - { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - - using (var streamReader = new StreamReader(stream)) - { - using (var reader = new JsonTextReader(streamReader)) - { - return Read(reader); - } - } - } - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - _stringPool.Clear(); - } - } - - public void Dispose() - { - Dispose(true); - } - - private DependencyContext Read(JsonTextReader reader) - { - var runtime = string.Empty; - var framework = string.Empty; - var isPortable = true; - string runtimeTargetName = null; - string runtimeSignature = null; - - reader.ReadStartObject(); - - CompilationOptions compilationOptions = null; - List targets = null; - Dictionary libraryStubs = null; - List runtimeFallbacks = null; - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - switch ((string)reader.Value) - { - case DependencyContextStrings.RuntimeTargetPropertyName: - ReadRuntimeTarget(reader, out runtimeTargetName, out runtimeSignature); - break; - case DependencyContextStrings.CompilationOptionsPropertName: - compilationOptions = ReadCompilationOptions(reader); - break; - case DependencyContextStrings.TargetsPropertyName: - targets = ReadTargets(reader); - break; - case DependencyContextStrings.LibrariesPropertyName: - libraryStubs = ReadLibraries(reader); - break; - case DependencyContextStrings.RuntimesPropertyName: - runtimeFallbacks = ReadRuntimes(reader); - break; - - } - } - - if (compilationOptions == null) - { - compilationOptions = CompilationOptions.Default; - } - - Target runtimeTarget = SelectRuntimeTarget(targets, runtimeTargetName); - runtimeTargetName = runtimeTarget?.Name; - - if (runtimeTargetName != null) - { - var seperatorIndex = runtimeTargetName.IndexOf(DependencyContextStrings.VersionSeperator); - if (seperatorIndex > -1 && seperatorIndex < runtimeTargetName.Length) - { - runtime = runtimeTargetName.Substring(seperatorIndex + 1); - framework = runtimeTargetName.Substring(0, seperatorIndex); - isPortable = false; - } - else - { - framework = runtimeTargetName; - } - } - - Target compileTarget = null; - - var ridlessTarget = targets.FirstOrDefault(t => !IsRuntimeTarget(t.Name)); - if (ridlessTarget != null) - { - compileTarget = ridlessTarget; - if (runtimeTarget == null) - { - runtimeTarget = compileTarget; - framework = ridlessTarget.Name; - } - } - - if (runtimeTarget == null) - { - throw new FormatException("No runtime target found"); - } - - return new DependencyContext( - new TargetInfo(framework, runtime, runtimeSignature, isPortable), - compilationOptions, - CreateLibraries(compileTarget?.Libraries, false, libraryStubs).Cast().ToArray(), - CreateLibraries(runtimeTarget.Libraries, true, libraryStubs).Cast().ToArray(), - runtimeFallbacks ?? Enumerable.Empty()); - } - - private Target SelectRuntimeTarget(List targets, string runtimeTargetName) - { - Target target; - - if (targets == null || targets.Count == 0) - { - throw new FormatException("Dependency file does not have 'targets' section"); - } - - if (!string.IsNullOrEmpty(runtimeTargetName)) - { - target = targets.FirstOrDefault(t => t.Name == runtimeTargetName); - if (target == null) - { - throw new FormatException($"Target with name {runtimeTargetName} not found"); - } - } - else - { - target = targets.FirstOrDefault(t => IsRuntimeTarget(t.Name)); - } - - return target; - } - - private bool IsRuntimeTarget(string name) - { - return name.Contains(DependencyContextStrings.VersionSeperator); - } - - private void ReadRuntimeTarget(JsonTextReader reader, out string runtimeTargetName, out string runtimeSignature) - { - runtimeTargetName = null; - runtimeSignature = null; - - reader.ReadStartObject(); - - string propertyName; - string propertyValue; - while (reader.TryReadStringProperty(out propertyName, out propertyValue)) - { - switch (propertyName) - { - case DependencyContextStrings.RuntimeTargetNamePropertyName: - runtimeTargetName = propertyValue; - break; - case DependencyContextStrings.RuntimeTargetSignaturePropertyName: - runtimeSignature = propertyValue; - break; - default: - throw new FormatException($"Unknown property name '{propertyName}'"); - } - } - - reader.CheckEndObject(); - } - - private CompilationOptions ReadCompilationOptions(JsonTextReader reader) - { - IEnumerable defines = null; - string languageVersion = null; - string platform = null; - bool? allowUnsafe = null; - bool? warningsAsErrors = null; - bool? optimize = null; - string keyFile = null; - bool? delaySign = null; - bool? publicSign = null; - string debugType = null; - bool? emitEntryPoint = null; - bool? generateXmlDocumentation = null; - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - switch ((string)reader.Value) - { - case DependencyContextStrings.DefinesPropertyName: - defines = reader.ReadStringArray(); - break; - case DependencyContextStrings.LanguageVersionPropertyName: - languageVersion = reader.ReadAsString(); - break; - case DependencyContextStrings.PlatformPropertyName: - platform = reader.ReadAsString(); - break; - case DependencyContextStrings.AllowUnsafePropertyName: - allowUnsafe = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.WarningsAsErrorsPropertyName: - warningsAsErrors = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.OptimizePropertyName: - optimize = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.KeyFilePropertyName: - keyFile = reader.ReadAsString(); - break; - case DependencyContextStrings.DelaySignPropertyName: - delaySign = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.PublicSignPropertyName: - publicSign = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.DebugTypePropertyName: - debugType = reader.ReadAsString(); - break; - case DependencyContextStrings.EmitEntryPointPropertyName: - emitEntryPoint = reader.ReadAsBoolean(); - break; - case DependencyContextStrings.GenerateXmlDocumentationPropertyName: - generateXmlDocumentation = reader.ReadAsBoolean(); - break; - default: - throw new FormatException($"Unknown property name '{reader.Value}'"); - } - } - - reader.CheckEndObject(); - - return new CompilationOptions( - defines ?? Enumerable.Empty(), - languageVersion, - platform, - allowUnsafe, - warningsAsErrors, - optimize, - keyFile, - delaySign, - publicSign, - debugType, - emitEntryPoint, - generateXmlDocumentation); - } - - private List ReadTargets(JsonTextReader reader) - { - reader.ReadStartObject(); - - var targets = new List(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - targets.Add(ReadTarget(reader, (string)reader.Value)); - } - - reader.CheckEndObject(); - - return targets; - } - - private Target ReadTarget(JsonTextReader reader, string targetName) - { - reader.ReadStartObject(); - - var libraries = new List(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - libraries.Add(ReadTargetLibrary(reader, (string)reader.Value)); - } - - reader.CheckEndObject(); - - return new Target() - { - Name = targetName, - Libraries = libraries - }; - } - - private TargetLibrary ReadTargetLibrary(JsonTextReader reader, string targetLibraryName) - { - IEnumerable dependencies = null; - List runtimes = null; - List natives = null; - List compilations = null; - List runtimeTargets = null; - List resources = null; - bool? compileOnly = null; - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - switch ((string)reader.Value) - { - case DependencyContextStrings.DependenciesPropertyName: - dependencies = ReadTargetLibraryDependencies(reader); - break; - case DependencyContextStrings.RuntimeAssembliesKey: - runtimes = ReadPropertyNames(reader); - break; - case DependencyContextStrings.NativeLibrariesKey: - natives = ReadPropertyNames(reader); - break; - case DependencyContextStrings.CompileTimeAssembliesKey: - compilations = ReadPropertyNames(reader); - break; - case DependencyContextStrings.RuntimeTargetsPropertyName: - runtimeTargets = ReadTargetLibraryRuntimeTargets(reader); - break; - case DependencyContextStrings.ResourceAssembliesPropertyName: - resources = ReadTargetLibraryResources(reader); - break; - case DependencyContextStrings.CompilationOnlyPropertyName: - compileOnly = reader.ReadAsBoolean(); - break; - default: - throw new FormatException($"Unknown property name '{reader.Value}'"); - } - } - - reader.CheckEndObject(); - - return new TargetLibrary() - { - Name = targetLibraryName, - Dependencies = dependencies ?? Enumerable.Empty(), - Runtimes = runtimes, - Natives = natives, - Compilations = compilations, - RuntimeTargets = runtimeTargets, - Resources = resources, - CompileOnly = compileOnly - }; - } - - - - public IEnumerable ReadTargetLibraryDependencies(JsonTextReader reader) - { - var dependencies = new List(); - string name; - string version; - - reader.ReadStartObject(); - - while (reader.TryReadStringProperty(out name, out version)) - { - dependencies.Add(new Dependency(Pool(name), Pool(version))); - } - - reader.CheckEndObject(); - - return dependencies; - } - - private List ReadPropertyNames(JsonTextReader reader) - { - var runtimes = new List(); - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var libraryName = (string)reader.Value; - reader.Skip(); - - runtimes.Add(libraryName); - } - - reader.CheckEndObject(); - - return runtimes; - } - - private List ReadTargetLibraryRuntimeTargets(JsonTextReader reader) - { - var runtimeTargets = new List(); - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var runtimeTarget = new RuntimeTargetEntryStub(); - runtimeTarget.Path = (string)reader.Value; - - reader.ReadStartObject(); - - string propertyName; - string propertyValue; - while (reader.TryReadStringProperty(out propertyName, out propertyValue)) - { - switch (propertyName) - { - case DependencyContextStrings.RidPropertyName: - runtimeTarget.Rid = Pool(propertyValue); - break; - case DependencyContextStrings.AssetTypePropertyName: - runtimeTarget.Type = Pool(propertyValue); - break; - default: - throw new FormatException($"Unknown property name '{propertyName}'"); - } - } - - reader.CheckEndObject(); - - runtimeTargets.Add(runtimeTarget); - } - - reader.CheckEndObject(); - - return runtimeTargets; - } - - private List ReadTargetLibraryResources(JsonTextReader reader) - { - var resources = new List(); - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var path = (string)reader.Value; - string locale = null; - - reader.ReadStartObject(); - - string propertyName; - string propertyValue; - - while (reader.TryReadStringProperty(out propertyName, out propertyValue)) - { - if (propertyName == DependencyContextStrings.LocalePropertyName) - { - locale = propertyValue; - } - } - - reader.CheckEndObject(); - - if (locale != null) - { - resources.Add(new ResourceAssembly(path, Pool(locale))); - } - } - - reader.CheckEndObject(); - - return resources; - } - - private Dictionary ReadLibraries(JsonTextReader reader) - { - var libraries = new Dictionary(); - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var libraryName = (string)reader.Value; - - libraries.Add(Pool(libraryName), ReadOneLibrary(reader)); - } - - reader.CheckEndObject(); - - return libraries; - } - - private LibraryStub ReadOneLibrary(JsonTextReader reader) - { - string hash = null; - string type = null; - bool serviceable = false; - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - switch ((string)reader.Value) - { - case DependencyContextStrings.Sha512PropertyName: - hash = reader.ReadAsString(); - break; - case DependencyContextStrings.TypePropertyName: - type = reader.ReadAsString(); - break; - case DependencyContextStrings.ServiceablePropertyName: - serviceable = reader.ReadAsBoolean().GetValueOrDefault(false); - break; - default: - throw new FormatException($"Unknown property name '{reader.Value}'"); - } - } - - reader.CheckEndObject(); - - return new LibraryStub() - { - Hash = hash, - Type = Pool(type), - Serviceable = serviceable - }; - } - - private List ReadRuntimes(JsonTextReader reader) - { - var runtimeFallbacks = new List(); - - reader.ReadStartObject(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var runtime = (string)reader.Value; - var fallbacks = reader.ReadStringArray(); - - runtimeFallbacks.Add(new RuntimeFallbacks(runtime, fallbacks)); - } - - reader.CheckEndObject(); - - return runtimeFallbacks; - } - - private IEnumerable CreateLibraries(IEnumerable libraries, bool runtime, Dictionary libraryStubs) - { - if (libraries == null) - { - return Enumerable.Empty(); - } - return libraries - .Select(property => CreateLibrary(property, runtime, libraryStubs)) - .Where(library => library != null); - } - - private Library CreateLibrary(TargetLibrary targetLibrary, bool runtime, Dictionary libraryStubs) - { - var nameWithVersion = targetLibrary.Name; - LibraryStub stub; - - if (!libraryStubs.TryGetValue(nameWithVersion, out stub)) - { - throw new InvalidOperationException($"Cannot find library information for {nameWithVersion}"); - } - - var seperatorPosition = nameWithVersion.IndexOf(DependencyContextStrings.VersionSeperator); - - var name = Pool(nameWithVersion.Substring(0, seperatorPosition)); - var version = Pool(nameWithVersion.Substring(seperatorPosition + 1)); - - if (runtime) - { - // Runtime section of this library was trimmed by type:platform - var isCompilationOnly = targetLibrary.CompileOnly; - if (isCompilationOnly == true) - { - return null; - } - - var runtimeAssemblyGroups = new List(); - var nativeLibraryGroups = new List(); - if (targetLibrary.RuntimeTargets != null) - { - foreach (var ridGroup in targetLibrary.RuntimeTargets.GroupBy(e => e.Rid)) - { - var groupRuntimeAssemblies = ridGroup - .Where(e => e.Type == DependencyContextStrings.RuntimeAssetType) - .Select(e => e.Path) - .ToArray(); - - if (groupRuntimeAssemblies.Any()) - { - runtimeAssemblyGroups.Add(new RuntimeAssetGroup( - ridGroup.Key, - groupRuntimeAssemblies.Where(a => Path.GetFileName(a) != "_._"))); - } - - var groupNativeLibraries = ridGroup - .Where(e => e.Type == DependencyContextStrings.NativeAssetType) - .Select(e => e.Path) - .ToArray(); - - if (groupNativeLibraries.Any()) - { - nativeLibraryGroups.Add(new RuntimeAssetGroup( - ridGroup.Key, - groupNativeLibraries.Where(a => Path.GetFileName(a) != "_._"))); - } - } - } - - if (targetLibrary.Runtimes != null && targetLibrary.Runtimes.Count > 0) - { - runtimeAssemblyGroups.Add(new RuntimeAssetGroup(string.Empty, targetLibrary.Runtimes)); - } - - if (targetLibrary.Natives != null && targetLibrary.Natives.Count > 0) - { - nativeLibraryGroups.Add(new RuntimeAssetGroup(string.Empty, targetLibrary.Natives)); - } - - return new RuntimeLibrary( - type: stub.Type, - name: name, - version: version, - hash: stub.Hash, - runtimeAssemblyGroups: runtimeAssemblyGroups, - nativeLibraryGroups: nativeLibraryGroups, - resourceAssemblies: targetLibrary.Resources ?? Enumerable.Empty(), - dependencies: targetLibrary.Dependencies, - serviceable: stub.Serviceable); - } - else - { - var assemblies = (targetLibrary.Compilations != null) ? targetLibrary.Compilations : Enumerable.Empty(); - return new CompilationLibrary(stub.Type, name, version, stub.Hash, assemblies, targetLibrary.Dependencies, stub.Serviceable); - } - } - - private string Pool(string s) - { - if (s == null) - { - return null; - } - - string result; - if (!_stringPool.TryGetValue(s, out result)) - { - _stringPool[s] = s; - result = s; - } - return result; - } - - private class Target - { - public string Name; - - public IEnumerable Libraries; - } - - private struct TargetLibrary - { - public string Name; - - public IEnumerable Dependencies; - - public List Runtimes; - - public List Natives; - - public List Compilations; - - public List RuntimeTargets; - - public List Resources; - - public bool? CompileOnly; - } - - private struct RuntimeTargetEntryStub - { - public string Type; - - public string Path; - - public string Rid; - } - - private struct LibraryStub - { - public string Hash; - - public string Type; - - public bool Serviceable; - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs deleted file mode 100644 index f848e602b..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextLoader.cs +++ /dev/null @@ -1,137 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using Microsoft.Extensions.EnvironmentAbstractions; - -#if !NETSTANDARD1_3 - -namespace Microsoft.Extensions.DependencyModel -{ - public class DependencyContextLoader - { - private const string DepsJsonExtension = ".deps.json"; - - private readonly string _entryPointDepsLocation; - private readonly string _runtimeDepsLocation; - private readonly IFileSystem _fileSystem; - private readonly Func _jsonReaderFactory; - - public DependencyContextLoader() : this( - DependencyContextPaths.Current.Application, - DependencyContextPaths.Current.SharedRuntime, - FileSystemWrapper.Default, - () => new DependencyContextJsonReader()) - { - } - - internal DependencyContextLoader( - string entryPointDepsLocation, - string runtimeDepsLocation, - IFileSystem fileSystem, - Func jsonReaderFactory) - { - _entryPointDepsLocation = entryPointDepsLocation; - _runtimeDepsLocation = runtimeDepsLocation; - _fileSystem = fileSystem; - _jsonReaderFactory = jsonReaderFactory; - } - - public static DependencyContextLoader Default { get; } = new DependencyContextLoader(); - - internal virtual bool IsEntryAssembly(Assembly assembly) - { - return assembly.Equals(Assembly.GetEntryAssembly()); - } - - internal virtual Stream GetResourceStream(Assembly assembly, string name) - { - return assembly.GetManifestResourceStream(name); - } - - public DependencyContext Load(Assembly assembly) - { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - - DependencyContext context = null; - using (var reader = _jsonReaderFactory()) - { - if (IsEntryAssembly(assembly)) - { - context = LoadEntryAssemblyContext(reader); - } - - if (context == null) - { - context = LoadAssemblyContext(assembly, reader); - } - - if (context?.Target.IsPortable == true) - { - var runtimeContext = LoadRuntimeContext(reader); - if (runtimeContext != null) - { - context = context.Merge(runtimeContext); - } - } - } - return context; - } - - private DependencyContext LoadEntryAssemblyContext(IDependencyContextReader reader) - { - if (!string.IsNullOrEmpty(_entryPointDepsLocation)) - { - Debug.Assert(File.Exists(_entryPointDepsLocation)); - using (var stream = _fileSystem.File.OpenRead(_entryPointDepsLocation)) - { - return reader.Read(stream); - } - } - return null; - } - - private DependencyContext LoadRuntimeContext(IDependencyContextReader reader) - { - if (!string.IsNullOrEmpty(_runtimeDepsLocation)) - { - Debug.Assert(File.Exists(_runtimeDepsLocation)); - using (var stream = _fileSystem.File.OpenRead(_runtimeDepsLocation)) - { - return reader.Read(stream); - } - } - return null; - } - - private DependencyContext LoadAssemblyContext(Assembly assembly, IDependencyContextReader reader) - { - using (var stream = GetResourceStream(assembly, assembly.GetName().Name + DepsJsonExtension)) - { - if (stream != null) - { - return reader.Read(stream); - } - } - - var depsJsonFile = Path.ChangeExtension(assembly.Location, DepsJsonExtension); - if (_fileSystem.File.Exists(depsJsonFile)) - { - using (var stream = _fileSystem.File.OpenRead(depsJsonFile)) - { - return reader.Read(stream); - } - } - - return null; - } - } -} - -#endif diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs deleted file mode 100644 index 6ea5b63ee..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextPaths.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; - -#if !NETSTANDARD1_3 - -namespace Microsoft.Extensions.DependencyModel -{ - internal class DependencyContextPaths - { - private static readonly string DepsFilesProperty = "APP_CONTEXT_DEPS_FILES"; - - public static DependencyContextPaths Current { get; } = GetCurrent(); - - public string Application { get; } - - public string SharedRuntime { get; } - - public DependencyContextPaths(string application, string sharedRuntime) - { - Application = application; - SharedRuntime = sharedRuntime; - } - - private static DependencyContextPaths GetCurrent() - { -#if NETSTANDARD1_6 - var deps = AppContext.GetData(DepsFilesProperty); -#else - var deps = AppDomain.CurrentDomain.GetData(DepsFilesProperty); -#endif - var files = (deps as string)?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); - - return new DependencyContextPaths( - files != null && files.Length > 0 ? files[0] : null, - files != null && files.Length > 1 ? files[1] : null - ); - } - } -} -#endif diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextStrings.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextStrings.cs deleted file mode 100644 index ab457bca1..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextStrings.cs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.Extensions.DependencyModel -{ - internal class DependencyContextStrings - { - internal const char VersionSeperator = '/'; - - internal const string CompileTimeAssembliesKey = "compile"; - - internal const string RuntimeAssembliesKey = "runtime"; - - internal const string NativeLibrariesKey = "native"; - - internal const string RuntimeTargetPropertyName = "runtimeTarget"; - - internal const string LibrariesPropertyName = "libraries"; - - internal const string TargetsPropertyName = "targets"; - - internal const string DependenciesPropertyName = "dependencies"; - - internal const string Sha512PropertyName = "sha512"; - - internal const string TypePropertyName = "type"; - - internal const string ServiceablePropertyName = "serviceable"; - - internal const string CompilationOptionsPropertName = "compilationOptions"; - - internal const string DefinesPropertyName = "defines"; - - internal const string LanguageVersionPropertyName = "languageVersion"; - - internal const string PlatformPropertyName = "platform"; - - internal const string AllowUnsafePropertyName = "allowUnsafe"; - - internal const string WarningsAsErrorsPropertyName = "warningsAsErrors"; - - internal const string OptimizePropertyName = "optimize"; - - internal const string KeyFilePropertyName = "keyFile"; - - internal const string DelaySignPropertyName = "delaySign"; - - internal const string PublicSignPropertyName = "publicSign"; - - internal const string DebugTypePropertyName = "debugType"; - - internal const string EmitEntryPointPropertyName = "emitEntryPoint"; - - internal const string GenerateXmlDocumentationPropertyName = "xmlDoc"; - - internal const string PortablePropertyName = "portable"; - - internal const string RuntimeTargetNamePropertyName = "name"; - - internal const string RuntimeTargetSignaturePropertyName = "signature"; - - internal const string RuntimesPropertyName = "runtimes"; - - internal const string RuntimeTargetsPropertyName = "runtimeTargets"; - - internal const string RidPropertyName = "rid"; - - internal const string AssetTypePropertyName = "assetType"; - - internal const string RuntimeAssetType = "runtime"; - - internal const string NativeAssetType = "native"; - - internal const string ResourceAssembliesPropertyName = "resources"; - - internal const string LocalePropertyName = "locale"; - - internal const string CompilationOnlyPropertyName = "compileOnly"; - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs deleted file mode 100644 index 9d774deea..000000000 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContextWriter.cs +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Microsoft.Extensions.DependencyModel -{ - public class DependencyContextWriter - { - public void Write(DependencyContext context, Stream stream) - { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - using (var writer = new StreamWriter(stream)) - { - using (var jsonWriter = new JsonTextWriter(writer) { Formatting = Formatting.Indented }) - { - Write(context).WriteTo(jsonWriter); - } - } - } - - private JObject Write(DependencyContext context) - { - var contextObject = new JObject( - new JProperty(DependencyContextStrings.RuntimeTargetPropertyName, WriteRuntimeTargetInfo(context)), - new JProperty(DependencyContextStrings.CompilationOptionsPropertName, WriteCompilationOptions(context.CompilationOptions)), - new JProperty(DependencyContextStrings.TargetsPropertyName, WriteTargets(context)), - new JProperty(DependencyContextStrings.LibrariesPropertyName, WriteLibraries(context)) - ); - if (context.RuntimeGraph.Any()) - { - contextObject.Add(new JProperty(DependencyContextStrings.RuntimesPropertyName, WriteRuntimeGraph(context))); - } - return contextObject; - } - - private JObject WriteRuntimeTargetInfo(DependencyContext context) - { - return new JObject( - new JProperty(DependencyContextStrings.RuntimeTargetNamePropertyName, - context.Target.IsPortable ? - context.Target.Framework : - context.Target.Framework + DependencyContextStrings.VersionSeperator + context.Target.Runtime - ), - new JProperty(DependencyContextStrings.RuntimeTargetSignaturePropertyName, - context.Target.RuntimeSignature - ) - ); - } - - private JObject WriteRuntimeGraph(DependencyContext context) - { - return new JObject( - context.RuntimeGraph.Select(g => new JProperty(g.Runtime, new JArray(g.Fallbacks))) - ); - } - - private JObject WriteCompilationOptions(CompilationOptions compilationOptions) - { - var o = new JObject(); - if (compilationOptions.Defines?.Any() == true) - { - o[DependencyContextStrings.DefinesPropertyName] = new JArray(compilationOptions.Defines); - } - AddPropertyIfNotNull(o, DependencyContextStrings.LanguageVersionPropertyName, compilationOptions.LanguageVersion); - AddPropertyIfNotNull(o, DependencyContextStrings.PlatformPropertyName, compilationOptions.Platform); - AddPropertyIfNotNull(o, DependencyContextStrings.AllowUnsafePropertyName, compilationOptions.AllowUnsafe); - AddPropertyIfNotNull(o, DependencyContextStrings.WarningsAsErrorsPropertyName, compilationOptions.WarningsAsErrors); - AddPropertyIfNotNull(o, DependencyContextStrings.OptimizePropertyName, compilationOptions.Optimize); - AddPropertyIfNotNull(o, DependencyContextStrings.KeyFilePropertyName, compilationOptions.KeyFile); - AddPropertyIfNotNull(o, DependencyContextStrings.DelaySignPropertyName, compilationOptions.DelaySign); - AddPropertyIfNotNull(o, DependencyContextStrings.PublicSignPropertyName, compilationOptions.PublicSign); - AddPropertyIfNotNull(o, DependencyContextStrings.EmitEntryPointPropertyName, compilationOptions.EmitEntryPoint); - AddPropertyIfNotNull(o, DependencyContextStrings.GenerateXmlDocumentationPropertyName, compilationOptions.GenerateXmlDocumentation); - AddPropertyIfNotNull(o, DependencyContextStrings.DebugTypePropertyName, compilationOptions.DebugType); - return o; - } - - private void AddPropertyIfNotNull(JObject o, string name, T value) - { - if (value != null) - { - o.Add(new JProperty(name, value)); - } - } - - private JObject WriteTargets(DependencyContext context) - { - if (context.Target.IsPortable) - { - return new JObject( - new JProperty(context.Target.Framework, WritePortableTarget(context.RuntimeLibraries, context.CompileLibraries)) - ); - } - - return new JObject( - new JProperty(context.Target.Framework, WriteTarget(context.CompileLibraries)), - new JProperty(context.Target.Framework + DependencyContextStrings.VersionSeperator + context.Target.Runtime, - WriteTarget(context.RuntimeLibraries)) - ); - } - - private JObject WriteTarget(IReadOnlyList libraries) - { - return new JObject( - libraries.Select(library => - // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once - // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI - new JProperty(library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant(), WriteTargetLibrary(library)))); - } - - private JObject WritePortableTarget(IReadOnlyList runtimeLibraries, IReadOnlyList compilationLibraries) - { - var runtimeLookup = runtimeLibraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); - var compileLookup = compilationLibraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); - - var targetObject = new JObject(); - - foreach (var packageName in runtimeLookup.Keys.Concat(compileLookup.Keys).Distinct()) - { - RuntimeLibrary runtimeLibrary; - runtimeLookup.TryGetValue(packageName, out runtimeLibrary); - - CompilationLibrary compilationLibrary; - compileLookup.TryGetValue(packageName, out compilationLibrary); - - if (compilationLibrary != null && runtimeLibrary != null) - { - Debug.Assert(compilationLibrary.Serviceable == runtimeLibrary.Serviceable); - Debug.Assert(compilationLibrary.Version == runtimeLibrary.Version); - Debug.Assert(compilationLibrary.Hash == runtimeLibrary.Hash); - Debug.Assert(compilationLibrary.Type == runtimeLibrary.Type); - } - - var library = (Library)compilationLibrary ?? (Library)runtimeLibrary; - targetObject.Add( - // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once - // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI - new JProperty(library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant(), - WritePortableTargetLibrary(runtimeLibrary, compilationLibrary) - ) - ); - - } - return targetObject; - } - - private void AddCompilationAssemblies(JObject libraryObject, IEnumerable compilationAssemblies) - { - if (!compilationAssemblies.Any()) - { - return; - } - libraryObject.Add(new JProperty(DependencyContextStrings.CompileTimeAssembliesKey, - WriteAssetList(compilationAssemblies)) - ); - } - - private void AddAssets(JObject libraryObject, string key, RuntimeAssetGroup group) - { - if (group == null || !group.AssetPaths.Any()) - { - return; - } - libraryObject.Add(new JProperty(key, - WriteAssetList(group.AssetPaths)) - ); - } - - private void AddDependencies(JObject libraryObject, IEnumerable dependencies) - { - if (!dependencies.Any()) - { - return; - } - libraryObject.AddFirst( - new JProperty(DependencyContextStrings.DependenciesPropertyName, - new JObject( - dependencies.Select(dependency => new JProperty(dependency.Name, dependency.Version)))) - ); - } - - private void AddResourceAssemblies(JObject libraryObject, IEnumerable resourceAssemblies) - { - if (!resourceAssemblies.Any()) - { - return; - } - libraryObject.Add(DependencyContextStrings.ResourceAssembliesPropertyName, - new JObject(resourceAssemblies.Select(a => - new JProperty(NormalizePath(a.Path), new JObject(new JProperty(DependencyContextStrings.LocalePropertyName, a.Locale)))) - ) - ); - } - - private JObject WriteTargetLibrary(Library library) - { - var runtimeLibrary = library as RuntimeLibrary; - if (runtimeLibrary != null) - { - var libraryObject = new JObject(); - AddDependencies(libraryObject, runtimeLibrary.Dependencies); - - // Add runtime-agnostic assets - AddAssets(libraryObject, DependencyContextStrings.RuntimeAssembliesKey, runtimeLibrary.RuntimeAssemblyGroups.GetDefaultGroup()); - AddAssets(libraryObject, DependencyContextStrings.NativeLibrariesKey, runtimeLibrary.NativeLibraryGroups.GetDefaultGroup()); - AddResourceAssemblies(libraryObject, runtimeLibrary.ResourceAssemblies); - - return libraryObject; - } - - var compilationLibrary = library as CompilationLibrary; - if (compilationLibrary != null) - { - var libraryObject = new JObject(); - AddDependencies(libraryObject, compilationLibrary.Dependencies); - AddCompilationAssemblies(libraryObject, compilationLibrary.Assemblies); - return libraryObject; - } - throw new NotSupportedException(); - } - - private JObject WritePortableTargetLibrary(RuntimeLibrary runtimeLibrary, CompilationLibrary compilationLibrary) - { - var libraryObject = new JObject(); - - var dependencies = new HashSet(); - if (runtimeLibrary != null) - { - // Add runtime-agnostic assets - AddAssets(libraryObject, DependencyContextStrings.RuntimeAssembliesKey, runtimeLibrary.RuntimeAssemblyGroups.GetDefaultGroup()); - AddAssets(libraryObject, DependencyContextStrings.NativeLibrariesKey, runtimeLibrary.NativeLibraryGroups.GetDefaultGroup()); - AddResourceAssemblies(libraryObject, runtimeLibrary.ResourceAssemblies); - - // Add runtime-specific assets - var runtimeTargets = new JObject(); - AddRuntimeSpecificAssetGroups(runtimeTargets, DependencyContextStrings.RuntimeAssetType, runtimeLibrary.RuntimeAssemblyGroups); - AddRuntimeSpecificAssetGroups(runtimeTargets, DependencyContextStrings.NativeAssetType, runtimeLibrary.NativeLibraryGroups); - if (runtimeTargets.Count > 0) - { - libraryObject.Add(DependencyContextStrings.RuntimeTargetsPropertyName, runtimeTargets); - } - - dependencies.UnionWith(runtimeLibrary.Dependencies); - } - - if (compilationLibrary != null) - { - AddCompilationAssemblies(libraryObject, compilationLibrary.Assemblies); - - dependencies.UnionWith(compilationLibrary.Dependencies); - } - - AddDependencies(libraryObject, dependencies); - if (compilationLibrary != null && runtimeLibrary == null) - { - libraryObject.Add(DependencyContextStrings.CompilationOnlyPropertyName, true); - } - return libraryObject; - } - - private void AddRuntimeSpecificAssetGroups(JObject runtimeTargets, string assetType, IEnumerable assetGroups) - { - foreach (var group in assetGroups.Where(g => !string.IsNullOrEmpty(g.Runtime))) - { - if (group.AssetPaths.Any()) - { - AddRuntimeSpecificAssets(runtimeTargets, group.AssetPaths, group.Runtime, assetType); - } - else - { - // Add a placeholder item - // We need to generate a pseudo-path because there could be multiple different asset groups with placeholders - // Only the last path segment matters, the rest is basically just a GUID. - var pseudoPathFolder = assetType == DependencyContextStrings.RuntimeAssetType ? - "lib" : - "native"; - runtimeTargets[$"runtime/{group.Runtime}/{pseudoPathFolder}/_._"] = new JObject( - new JProperty(DependencyContextStrings.RidPropertyName, group.Runtime), - new JProperty(DependencyContextStrings.AssetTypePropertyName, assetType)); - } - } - } - - private void AddRuntimeSpecificAssets(JObject target, IEnumerable assets, string runtime, string assetType) - { - foreach (var asset in assets) - { - target.Add(new JProperty(NormalizePath(asset), - new JObject( - new JProperty(DependencyContextStrings.RidPropertyName, runtime), - new JProperty(DependencyContextStrings.AssetTypePropertyName, assetType) - ) - )); - } - } - - private JObject WriteAssetList(IEnumerable assetPaths) - { - return new JObject(assetPaths.Select(assembly => new JProperty(NormalizePath(assembly), new JObject()))); - } - - private JObject WriteLibraries(DependencyContext context) - { - var allLibraries = - context.RuntimeLibraries.Cast().Concat(context.CompileLibraries) - // TODO: remove the hack of calling "ToLowerInvariant()" on library Name and Version once - // https://github.com/dotnet/core-setup/pull/64/ is merged and taken into the CLI - .GroupBy(library => library.Name.ToLowerInvariant() + DependencyContextStrings.VersionSeperator + library.Version.ToLowerInvariant()); - - return new JObject(allLibraries.Select(libraries => new JProperty(libraries.Key, WriteLibrary(libraries.First())))); - } - - private JObject WriteLibrary(Library library) - { - return new JObject( - new JProperty(DependencyContextStrings.TypePropertyName, library.Type), - new JProperty(DependencyContextStrings.ServiceablePropertyName, library.Serviceable), - new JProperty(DependencyContextStrings.Sha512PropertyName, library.Hash) - ); - } - - private string NormalizePath(string path) - { - return path.Replace('\\', '/'); - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/IDependencyContextReader.cs b/src/Microsoft.Extensions.DependencyModel/IDependencyContextReader.cs deleted file mode 100644 index 0603b5b66..000000000 --- a/src/Microsoft.Extensions.DependencyModel/IDependencyContextReader.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.IO; - -namespace Microsoft.Extensions.DependencyModel -{ - public interface IDependencyContextReader: IDisposable - { - DependencyContext Read(Stream stream); - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs b/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs deleted file mode 100644 index bf2122f03..000000000 --- a/src/Microsoft.Extensions.DependencyModel/JsonTextReaderExtensions.cs +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using Newtonsoft.Json; - -namespace Microsoft.Extensions.DependencyModel -{ - internal static class JsonTextReaderExtensions - { - internal static bool TryReadStringProperty(this JsonTextReader reader, out string name, out string value) - { - name = null; - value = null; - if (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - name = (string)reader.Value; - value = reader.ReadAsString(); - return true; - } - - return false; - } - - internal static void ReadStartObject(this JsonTextReader reader) - { - reader.Read(); - CheckStartObject(reader); - } - - internal static void CheckStartObject(this JsonTextReader reader) - { - if (reader.TokenType != JsonToken.StartObject) - { - throw CreateUnexpectedException(reader, "{"); - } - } - - internal static void CheckEndObject(this JsonTextReader reader) - { - if (reader.TokenType != JsonToken.EndObject) - { - throw CreateUnexpectedException(reader, "}"); - } - } - - internal static string[] ReadStringArray(this JsonTextReader reader) - { - reader.Read(); - if (reader.TokenType != JsonToken.StartArray) - { - throw CreateUnexpectedException(reader,"["); - } - - var items = new List(); - - while (reader.Read() && reader.TokenType == JsonToken.String) - { - items.Add((string)reader.Value); - } - - if (reader.TokenType != JsonToken.EndArray) - { - throw CreateUnexpectedException(reader, "]"); - } - - return items.ToArray(); - } - - internal static Exception CreateUnexpectedException(JsonTextReader reader, string expected) - { - return new FormatException($"Unexpected character encountered, excepted '{expected}' " + - $"at line {reader.LineNumber} position {reader.LinePosition} path {reader.Path}"); - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/Library.cs b/src/Microsoft.Extensions.DependencyModel/Library.cs deleted file mode 100644 index 5e9b074e5..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Library.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Linq; -using System.Collections.Generic; - -namespace Microsoft.Extensions.DependencyModel -{ - public class Library - { - public Library(string type, string name, string version, string hash, IEnumerable dependencies, bool serviceable) - { - if (string.IsNullOrEmpty(type)) - { - throw new ArgumentException(nameof(type)); - } - if (string.IsNullOrEmpty(name)) - { - throw new ArgumentException(nameof(name)); - } - if (string.IsNullOrEmpty(version)) - { - throw new ArgumentException(nameof(version)); - } - if (dependencies == null) - { - throw new ArgumentNullException(nameof(dependencies)); - } - Type = type; - Name = name; - Version = version; - Hash = hash; - Dependencies = dependencies.ToArray(); - Serviceable = serviceable; - } - - public string Type { get; } - - public string Name { get; } - - public string Version { get; } - - public string Hash { get; } - - public IReadOnlyList Dependencies { get; } - - public bool Serviceable { get; } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Microsoft.Extensions.DependencyModel.xproj b/src/Microsoft.Extensions.DependencyModel/Microsoft.Extensions.DependencyModel.xproj deleted file mode 100644 index 8c6e7884f..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Microsoft.Extensions.DependencyModel.xproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - 14.0.23107 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 688870c8-9843-4f9e-8576-d39290ad0f25 - Microsoft.Extensions.DependencyModel - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Properties/Properties.cs b/src/Microsoft.Extensions.DependencyModel/Properties/Properties.cs deleted file mode 100644 index b8c122eba..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Properties/Properties.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyMetadataAttribute("Serviceable", "True")] -[assembly: InternalsVisibleTo("Microsoft.Extensions.DependencyModel.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs deleted file mode 100644 index 38f7c1187..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.EnvironmentAbstractions; - -#if !NETSTANDARD1_3 - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class AppBaseCompilationAssemblyResolver : ICompilationAssemblyResolver - { - private static string RefsDirectoryName = "refs"; - private readonly IFileSystem _fileSystem; - private readonly string _basePath; - private readonly DependencyContextPaths _dependencyContextPaths; - - public AppBaseCompilationAssemblyResolver() - : this(FileSystemWrapper.Default) - { - } - - public AppBaseCompilationAssemblyResolver(string basePath) - : this(FileSystemWrapper.Default, basePath, DependencyContextPaths.Current) - { - } - - internal AppBaseCompilationAssemblyResolver(IFileSystem fileSystem) - : this(fileSystem, ApplicationEnvironment.ApplicationBasePath, DependencyContextPaths.Current) - { - } - - internal AppBaseCompilationAssemblyResolver(IFileSystem fileSystem, string basePath, DependencyContextPaths dependencyContextPaths) - { - _fileSystem = fileSystem; - _basePath = basePath; - _dependencyContextPaths = dependencyContextPaths; - } - - public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) - { - var isProject = string.Equals(library.Type, "project", StringComparison.OrdinalIgnoreCase) || - string.Equals(library.Type, "msbuildproject", StringComparison.OrdinalIgnoreCase); - - var isPackage = string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase); - if (!isProject && - !isPackage && - !string.Equals(library.Type, "referenceassembly", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - var refsPath = Path.Combine(_basePath, RefsDirectoryName); - var isPublished = _fileSystem.Directory.Exists(refsPath); - - // Resolving reference assebmlies requires refs folder to exist - if (!isProject && !isPackage && !isPublished) - { - return false; - } - - var directories = new List() - { - _basePath - }; - - if (isPublished) - { - directories.Insert(0, refsPath); - } - - // Only packages can come from shared runtime - var sharedPath = _dependencyContextPaths.SharedRuntime; - if (isPublished && isPackage && !string.IsNullOrEmpty(sharedPath)) - { - var sharedDirectory = Path.GetDirectoryName(sharedPath); - var sharedRefs = Path.Combine(sharedDirectory, RefsDirectoryName); - if (_fileSystem.Directory.Exists(sharedRefs)) - { - directories.Add(sharedRefs); - } - directories.Add(sharedDirectory); - } - - foreach (var assembly in library.Assemblies) - { - bool resolved = false; - var assemblyFile = Path.GetFileName(assembly); - foreach (var directory in directories) - { - string fullName; - if (ResolverUtils.TryResolveAssemblyFile(_fileSystem, directory, assemblyFile, out fullName)) - { - assemblies.Add(fullName); - resolved = true; - break; - } - } - - if (!resolved) - { - // throw in case when we are published app and nothing found - // because we cannot rely on nuget package cache in this case - if (isPublished) - { - throw new InvalidOperationException( - $"Can not find assembly file {assemblyFile} at '{string.Join(",", directories)}'"); - } - return false; - } - } - - return true; - } - } -} - -#endif diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/CompositeCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/CompositeCompilationAssemblyResolver.cs deleted file mode 100644 index c6daf2bf7..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/CompositeCompilationAssemblyResolver.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using Microsoft.Extensions.DependencyModel.Resolution; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class CompositeCompilationAssemblyResolver: ICompilationAssemblyResolver - { - private readonly ICompilationAssemblyResolver[] _resolvers; - - public CompositeCompilationAssemblyResolver(ICompilationAssemblyResolver[] resolvers) - { - _resolvers = resolvers; - } - - public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) - { - foreach (var resolver in _resolvers) - { - if (resolver.TryResolveAssemblyPaths(library, assemblies)) - { - return true; - } - } - return false;; - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/DotNetReferenceAssembliesPathResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/DotNetReferenceAssembliesPathResolver.cs deleted file mode 100644 index ef356d054..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/DotNetReferenceAssembliesPathResolver.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class DotNetReferenceAssembliesPathResolver - { - public static readonly string DotNetReferenceAssembliesPathEnv = "DOTNET_REFERENCE_ASSEMBLIES_PATH"; - - internal static string Resolve(IEnvironment envirnment, IFileSystem fileSystem) - { - var path = envirnment.GetEnvironmentVariable(DotNetReferenceAssembliesPathEnv); - if (!string.IsNullOrEmpty(path)) - { - return path; - } - - return GetDefaultDotNetReferenceAssembliesPath(fileSystem); - } - - public static string Resolve() - { - return Resolve(EnvironmentWrapper.Default, FileSystemWrapper.Default); - } - - private static string GetDefaultDotNetReferenceAssembliesPath(IFileSystem fileSystem) - { - var os = RuntimeEnvironment.OperatingSystemPlatform; - - if (os == Platform.Windows) - { - return null; - } - - if (os == Platform.Darwin && - fileSystem.Directory.Exists("/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks")) - { - return "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks"; - } - - if (fileSystem.Directory.Exists("/usr/local/lib/mono/xbuild-frameworks")) - { - return "/usr/local/lib/mono/xbuild-frameworks"; - } - - if (fileSystem.Directory.Exists("/usr/lib/mono/xbuild-frameworks")) - { - return "/usr/lib/mono/xbuild-frameworks"; - } - - return null; - } - } -} diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/ICompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/ICompilationAssemblyResolver.cs deleted file mode 100644 index b4eed2a57..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/ICompilationAssemblyResolver.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public interface ICompilationAssemblyResolver - { - bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies); - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs deleted file mode 100644 index 7497f0e08..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class PackageCacheCompilationAssemblyResolver: ICompilationAssemblyResolver - { - private readonly IFileSystem _fileSystem; - private readonly string _packageCacheDirectory; - - public PackageCacheCompilationAssemblyResolver() - : this(FileSystemWrapper.Default, EnvironmentWrapper.Default) - { - } - - public PackageCacheCompilationAssemblyResolver(string packageCacheDirectory) - : this(FileSystemWrapper.Default, packageCacheDirectory) - { - } - - internal PackageCacheCompilationAssemblyResolver(IFileSystem fileSystem, IEnvironment environment) - : this(fileSystem, GetDefaultPackageCacheDirectory(environment)) - { - } - - internal PackageCacheCompilationAssemblyResolver(IFileSystem fileSystem, string packageCacheDirectory) - { - _packageCacheDirectory = packageCacheDirectory; - _fileSystem = fileSystem; - } - - public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) - { - if (!string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - if (!string.IsNullOrEmpty(_packageCacheDirectory)) - { - var hashSplitterPos = library.Hash.IndexOf('-'); - if (hashSplitterPos <= 0 || hashSplitterPos == library.Hash.Length - 1) - { - throw new InvalidOperationException($"Invalid hash entry '{library.Hash}' for package '{library.Name}'"); - } - - string packagePath; - if (ResolverUtils.TryResolvePackagePath(_fileSystem, library, _packageCacheDirectory, out packagePath)) - { - var hashAlgorithm = library.Hash.Substring(0, hashSplitterPos); - var cacheHashFileName = $"{library.Name.ToLowerInvariant()}.{library.Version.ToLowerInvariant()}.nupkg.{hashAlgorithm}"; - var cacheHashPath = Path.Combine(packagePath, cacheHashFileName); - - if (_fileSystem.File.Exists(cacheHashPath) && - _fileSystem.File.ReadAllText(cacheHashPath) == library.Hash.Substring(hashSplitterPos + 1)) - { - assemblies.AddRange(ResolverUtils.ResolveFromPackagePath(_fileSystem, library, packagePath)); - return true; - } - } - } - return false; - } - - internal static string GetDefaultPackageCacheDirectory(IEnvironment environment) - { - return environment.GetEnvironmentVariable("DOTNET_PACKAGES_CACHE"); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCompilationAssemblyResolver.cs deleted file mode 100644 index f49f7815d..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCompilationAssemblyResolver.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class PackageCompilationAssemblyResolver: ICompilationAssemblyResolver - { - private readonly IFileSystem _fileSystem; - private readonly string _nugetPackageDirectory; - - public PackageCompilationAssemblyResolver() - : this(EnvironmentWrapper.Default, FileSystemWrapper.Default) - { - } - - public PackageCompilationAssemblyResolver(string nugetPackageDirectory) - : this(FileSystemWrapper.Default, nugetPackageDirectory) - { - } - - internal PackageCompilationAssemblyResolver(IEnvironment environment, - IFileSystem fileSystem) - : this(fileSystem, GetDefaultPackageDirectory(environment)) - { - } - - internal PackageCompilationAssemblyResolver(IFileSystem fileSystem, string nugetPackageDirectory) - { - _fileSystem = fileSystem; - _nugetPackageDirectory = nugetPackageDirectory; - } - - private static string GetDefaultPackageDirectory(IEnvironment environment) => - GetDefaultPackageDirectory(RuntimeEnvironment.OperatingSystemPlatform, environment); - - internal static string GetDefaultPackageDirectory(Platform osPlatform, IEnvironment environment) - { - var packageDirectory = environment.GetEnvironmentVariable("NUGET_PACKAGES"); - - if (!string.IsNullOrEmpty(packageDirectory)) - { - return packageDirectory; - } - - string basePath; - if (osPlatform == Platform.Windows) - { - basePath = environment.GetEnvironmentVariable("USERPROFILE"); - } - else - { - basePath = environment.GetEnvironmentVariable("HOME"); - } - if (string.IsNullOrEmpty(basePath)) - { - return null; - } - return Path.Combine(basePath, ".nuget", "packages"); - } - - public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) - { - if (string.IsNullOrEmpty(_nugetPackageDirectory) || - !string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - string packagePath; - - if (ResolverUtils.TryResolvePackagePath(_fileSystem, library, _nugetPackageDirectory, out packagePath)) - { - assemblies.AddRange(ResolverUtils.ResolveFromPackagePath(_fileSystem, library, packagePath)); - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/ReferenceAssemblyPathResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/ReferenceAssemblyPathResolver.cs deleted file mode 100644 index 9ad6b3d41..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/ReferenceAssemblyPathResolver.cs +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - public class ReferenceAssemblyPathResolver: ICompilationAssemblyResolver - { - private readonly IFileSystem _fileSystem; - private readonly string _defaultReferenceAssembliesPath; - private readonly string[] _fallbackSearchPaths; - - public ReferenceAssemblyPathResolver() - : this(FileSystemWrapper.Default, EnvironmentWrapper.Default) - { - } - - public ReferenceAssemblyPathResolver(string defaultReferenceAssembliesPath, string[] fallbackSearchPaths) - : this(FileSystemWrapper.Default, defaultReferenceAssembliesPath, fallbackSearchPaths) - { - } - - internal ReferenceAssemblyPathResolver(IFileSystem fileSystem, IEnvironment environment) - : this(fileSystem, - GetDefaultReferenceAssembliesPath(fileSystem, RuntimeEnvironment.OperatingSystemPlatform, environment), - GetFallbackSearchPaths(fileSystem, RuntimeEnvironment.OperatingSystemPlatform, environment)) - { - } - - internal ReferenceAssemblyPathResolver(IFileSystem fileSystem, string defaultReferenceAssembliesPath, string[] fallbackSearchPaths) - { - _fileSystem = fileSystem; - _defaultReferenceAssembliesPath = defaultReferenceAssembliesPath; - _fallbackSearchPaths = fallbackSearchPaths; - } - - public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) - { - if (!string.Equals(library.Type, "referenceassembly", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - foreach (var assembly in library.Assemblies) - { - string fullName; - if (!TryResolveReferenceAssembly(assembly, out fullName)) - { - throw new InvalidOperationException($"Can not find reference assembly '{assembly}' file for package {library.Name}"); - } - assemblies.Add(fullName); - } - return true; - } - - private bool TryResolveReferenceAssembly(string path, out string fullPath) - { - fullPath = null; - - if (_defaultReferenceAssembliesPath != null) - { - var relativeToReferenceAssemblies = Path.Combine(_defaultReferenceAssembliesPath, path); - if (_fileSystem.File.Exists(relativeToReferenceAssemblies)) - { - fullPath = relativeToReferenceAssemblies; - return true; - } - } - - var name = Path.GetFileName(path); - foreach (var fallbackPath in _fallbackSearchPaths) - { - var fallbackFile = Path.Combine(fallbackPath, name); - if (_fileSystem.File.Exists(fallbackFile)) - { - fullPath = fallbackFile; - return true; - } - } - - return false; - } - - internal static string[] GetFallbackSearchPaths(IFileSystem fileSystem, Platform platform, IEnvironment environment) - { - if (platform != Platform.Windows) - { - return new string[0]; - } - - var net20Dir = Path.Combine(environment.GetEnvironmentVariable("WINDIR"), "Microsoft.NET", "Framework", "v2.0.50727"); - - if (!fileSystem.Directory.Exists(net20Dir)) - { - return new string[0]; - } - return new[] { net20Dir }; - } - - internal static string GetDefaultReferenceAssembliesPath(IFileSystem fileSystem, Platform platform, IEnvironment environment) - { - // Allow setting the reference assemblies path via an environment variable - var referenceAssembliesPath = DotNetReferenceAssembliesPathResolver.Resolve(environment, fileSystem); - if (!string.IsNullOrEmpty(referenceAssembliesPath)) - { - return referenceAssembliesPath; - } - - if (platform != Platform.Windows) - { - // There is no reference assemblies path outside of windows - // The environment variable can be used to specify one - return null; - } - - // References assemblies are in %ProgramFiles(x86)% on - // 64 bit machines - var programFiles = environment.GetEnvironmentVariable("ProgramFiles(x86)"); - - if (string.IsNullOrEmpty(programFiles)) - { - // On 32 bit machines they are in %ProgramFiles% - programFiles = environment.GetEnvironmentVariable("ProgramFiles"); - } - - if (string.IsNullOrEmpty(programFiles)) - { - // Reference assemblies aren't installed - return null; - } - - return Path.Combine( - programFiles, - "Reference Assemblies", "Microsoft", "Framework"); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs deleted file mode 100644 index e105ad8c5..000000000 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Resolution -{ - internal static class ResolverUtils - { - internal static bool TryResolvePackagePath(IFileSystem fileSystem, CompilationLibrary library, string basePath, out string packagePath) - { - packagePath = Path.Combine( - basePath, - library.Name.ToLowerInvariant(), - library.Version.ToLowerInvariant()); - - if (fileSystem.Directory.Exists(packagePath)) - { - return true; - } - return false; - } - - internal static IEnumerable ResolveFromPackagePath(IFileSystem fileSystem, CompilationLibrary library, string basePath) - { - foreach (var assembly in library.Assemblies) - { - string fullName; - if (!TryResolveAssemblyFile(fileSystem, basePath, assembly, out fullName)) - { - throw new InvalidOperationException($"Can not find assembly file for package {library.Name} at '{fullName}'"); - } - yield return fullName; - } - } - - internal static bool TryResolveAssemblyFile(IFileSystem fileSystem, string basePath, string assemblyPath, out string fullName) - { - fullName = Path.Combine(basePath, assemblyPath); - if (fileSystem.File.Exists(fullName)) - { - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/ResourceAssembly.cs b/src/Microsoft.Extensions.DependencyModel/ResourceAssembly.cs deleted file mode 100644 index 4a59c054a..000000000 --- a/src/Microsoft.Extensions.DependencyModel/ResourceAssembly.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; - -namespace Microsoft.Extensions.DependencyModel -{ - public class ResourceAssembly - { - public ResourceAssembly(string path, string locale) - { - if (string.IsNullOrEmpty(path)) - { - throw new ArgumentException(nameof(path)); - } - if (string.IsNullOrEmpty(locale)) - { - throw new ArgumentException(nameof(locale)); - } - Locale = locale; - Path = path; - } - - public string Locale { get; set; } - - public string Path { get; set; } - - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/RuntimeAssembly.cs b/src/Microsoft.Extensions.DependencyModel/RuntimeAssembly.cs deleted file mode 100644 index 4dfd497fb..000000000 --- a/src/Microsoft.Extensions.DependencyModel/RuntimeAssembly.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Reflection; - -namespace Microsoft.Extensions.DependencyModel -{ - public class RuntimeAssembly - { - private const string NativeImageSufix = ".ni"; - private readonly string _assemblyName; - - public RuntimeAssembly(string assemblyName, string path) - { - if (string.IsNullOrEmpty(assemblyName)) - { - throw new ArgumentException(nameof(assemblyName)); - } - if (string.IsNullOrEmpty(path)) - { - throw new ArgumentException(nameof(path)); - } - _assemblyName = assemblyName; - Path = path; - } - - public AssemblyName Name => new AssemblyName(_assemblyName); - - public string Path { get; } - - public static RuntimeAssembly Create(string path) - { - var assemblyName = System.IO.Path.GetFileNameWithoutExtension(path); - if (assemblyName == null) - { - throw new ArgumentException($"Provided path has empty file name '{path}'", nameof(path)); - } - - if (assemblyName.EndsWith(NativeImageSufix)) - { - assemblyName = assemblyName.Substring(0, assemblyName.Length - NativeImageSufix.Length); - } - return new RuntimeAssembly(assemblyName, path); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/RuntimeAssetGroup.cs b/src/Microsoft.Extensions.DependencyModel/RuntimeAssetGroup.cs deleted file mode 100644 index d9eee3eb6..000000000 --- a/src/Microsoft.Extensions.DependencyModel/RuntimeAssetGroup.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Linq; -using System.Collections.Generic; - -namespace Microsoft.Extensions.DependencyModel -{ - public class RuntimeAssetGroup - { - public RuntimeAssetGroup(string runtime, params string[] assetPaths) : this(runtime, (IEnumerable)assetPaths) { } - - public RuntimeAssetGroup(string runtime, IEnumerable assetPaths) - { - Runtime = runtime; - AssetPaths = assetPaths.ToArray(); - } - - /// - /// The runtime ID associated with this group (may be empty if the group is runtime-agnostic) - /// - public string Runtime { get; } - - /// - /// Gets a list of assets provided in this runtime group - /// - public IReadOnlyList AssetPaths { get; } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/RuntimeFallbacks.cs b/src/Microsoft.Extensions.DependencyModel/RuntimeFallbacks.cs deleted file mode 100644 index 626aa5b24..000000000 --- a/src/Microsoft.Extensions.DependencyModel/RuntimeFallbacks.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.Extensions.DependencyModel -{ - public class RuntimeFallbacks - { - public string Runtime { get; set; } - public IReadOnlyList Fallbacks { get; set; } - - public RuntimeFallbacks(string runtime, params string[] fallbacks) : this(runtime, (IEnumerable)fallbacks) { } - public RuntimeFallbacks(string runtime, IEnumerable fallbacks) - { - if (string.IsNullOrEmpty(runtime)) - { - throw new ArgumentException(nameof(runtime)); - } - if (fallbacks == null) - { - throw new ArgumentNullException(nameof(fallbacks)); - } - Runtime = runtime; - Fallbacks = fallbacks.ToArray(); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/RuntimeLibrary.cs b/src/Microsoft.Extensions.DependencyModel/RuntimeLibrary.cs deleted file mode 100644 index 8cf195dfe..000000000 --- a/src/Microsoft.Extensions.DependencyModel/RuntimeLibrary.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Microsoft.Extensions.DependencyModel -{ - public class RuntimeLibrary : Library - { - public RuntimeLibrary( - string type, - string name, - string version, - string hash, - IReadOnlyList runtimeAssemblyGroups, - IReadOnlyList nativeLibraryGroups, - IEnumerable resourceAssemblies, - IEnumerable dependencies, - bool serviceable) - : base(type, name, version, hash, dependencies, serviceable) - { - if (runtimeAssemblyGroups == null) - { - throw new ArgumentNullException(nameof(runtimeAssemblyGroups)); - } - if (nativeLibraryGroups == null) - { - throw new ArgumentNullException(nameof(nativeLibraryGroups)); - } - if (resourceAssemblies == null) - { - throw new ArgumentNullException(nameof(resourceAssemblies)); - } - RuntimeAssemblyGroups = runtimeAssemblyGroups; - ResourceAssemblies = resourceAssemblies.ToArray(); - NativeLibraryGroups = nativeLibraryGroups; - - Assemblies = new RuntimeAssembly[0]; - NativeLibraries = new string[0]; - } - - // Temporary (legacy) properties: https://github.com/dotnet/cli/issues/1998 - public IReadOnlyList Assemblies { get; } - public IReadOnlyList NativeLibraries { get; } - - public IReadOnlyList RuntimeAssemblyGroups { get; } - - public IReadOnlyList NativeLibraryGroups { get; } - - public IReadOnlyList ResourceAssemblies { get; } - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/TargetInfo.cs b/src/Microsoft.Extensions.DependencyModel/TargetInfo.cs deleted file mode 100644 index 56bab154c..000000000 --- a/src/Microsoft.Extensions.DependencyModel/TargetInfo.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System; - -namespace Microsoft.Extensions.DependencyModel -{ - public class TargetInfo - { - public TargetInfo(string framework, - string runtime, - string runtimeSignature, - bool isPortable) - { - if (string.IsNullOrEmpty(framework)) - { - throw new ArgumentException(nameof(framework)); - } - - Framework = framework; - Runtime = runtime; - RuntimeSignature = runtimeSignature; - IsPortable = isPortable; - } - - public string Framework { get; } - - public string Runtime { get; } - - public string RuntimeSignature { get; } - - public bool IsPortable { get; } - - } -} \ No newline at end of file diff --git a/src/Microsoft.Extensions.DependencyModel/project.json b/src/Microsoft.Extensions.DependencyModel/project.json deleted file mode 100644 index 41f49ab2f..000000000 --- a/src/Microsoft.Extensions.DependencyModel/project.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "description": "Abstractions for reading `.deps` files.", - "version": "1.0.1-beta-*", - "buildOptions": { - "warningsAsErrors": true, - "keyFile": "../../tools/Key.snk" - }, - "dependencies": { - "Microsoft.DotNet.InternalAbstractions": { - "target": "project" - }, - "Newtonsoft.Json": "9.0.1" - }, - "frameworks": { - "net451": {}, - "netstandard1.3": { - "imports": "portable-net45+wp80+win8+wpa81+dnxcore50", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - } - }, - "netstandard1.6": { - "imports": "portable-net45+wp80+win8+wpa81+dnxcore50", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - } - } - }, - "scripts": {}, - "packOptions": { - "repository": { - "type": "git", - "url": "git://github.com/dotnet/cli" - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs deleted file mode 100644 index c3fd2558e..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Extensions.EnvironmentAbstractions; -using Microsoft.Extensions.DependencyModel.Resolution; -using Xunit; -using FluentAssertions; - - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class AppBaseResolverTests - { - private static string BasePath = Path.Combine("Base","Path"); - private static string BasePathRefs = Path.Combine(BasePath, "refs"); - - private static string SharedFxPath = Path.Combine("shared", "fx"); - private static string SharedFxPathRefs = Path.Combine(SharedFxPath, "refs"); - - private static DependencyContextPaths DependencyContextPaths = new DependencyContextPaths(null, Path.Combine(SharedFxPath, "deps.json")); - - [Fact] - public void ResolvesProjectType() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var resolver = CreateResolver(fileSystem); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ProjectType, - assemblies: TestLibraryFactory.EmptyAssemblies); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - Assert.True(result); - } - - [Fact] - public void ResolvesMsBuildProjectType() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var resolver = CreateResolver(fileSystem); - var library = TestLibraryFactory.Create( - TestLibraryFactory.MsBuildProjectType, - assemblies: TestLibraryFactory.EmptyAssemblies); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - Assert.True(result); - } - - [Fact] - public void ResolvesPackageType() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var resolver = CreateResolver(fileSystem); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType, - assemblies: TestLibraryFactory.EmptyAssemblies); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - Assert.True(result); - } - - [Fact] - public void ResolvesReferenceAssemblyType() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var resolver = CreateResolver(fileSystem); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.EmptyAssemblies); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - Assert.True(result); - } - - [Fact] - public void RequiresExistingRefsFolderForNonProjects() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.TwoAssemblies); - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.False(result); - assemblies.Should().HaveCount(0); - } - - [Fact] - public void ResolvesProjectWithoutRefsFolder() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ProjectType, - assemblies: TestLibraryFactory.TwoAssemblies); - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.DefaultAssembly)); - assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.SecondAssembly)); - } - - [Fact] - public void RequiresAllLibrariesToExist() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly) - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.TwoAssemblies); - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var exception = Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, assemblies)); - exception.Message.Should() - .Contain(BasePath) - .And.Contain(BasePathRefs) - .And.Contain(TestLibraryFactory.SecondAssembly); - } - - [Fact] - public void ResolvesIfAllAreInBaseDir() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly) - .AddFiles(BasePathRefs, "Dummy.dll") - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.TwoAssemblies); - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.DefaultAssembly)); - assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.SecondAssembly)); - } - - - [Fact] - public void ResolvesIfAllAreInRefDir() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.TwoAssemblies); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(BasePathRefs, TestLibraryFactory.DefaultAssembly)); - assemblies.Should().Contain(Path.Combine(BasePathRefs, TestLibraryFactory.SecondAssembly)); - } - - [Fact] - public void ResolvesIfOneInBaseOtherInRefs() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly) - .AddFiles(BasePathRefs, TestLibraryFactory.SecondAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.ReferenceAssemblyType, - assemblies: TestLibraryFactory.TwoAssemblies); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.DefaultAssembly)); - assemblies.Should().Contain(Path.Combine(BasePathRefs, TestLibraryFactory.SecondAssembly)); - } - - [Fact] - public void PrefersRefs() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePath, TestLibraryFactory.DefaultAssembly) - .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) - .AddFile(SharedFxPath, TestLibraryFactory.DefaultAssembly) - .AddFile(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(1); - assemblies.Should().Contain(Path.Combine(BasePathRefs, TestLibraryFactory.DefaultAssembly)); - } - - [Fact] - public void SearchesInSharedFxRefsPathForPublishedPortable() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.SecondAssembly) - .AddFiles(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(1); - assemblies.Should().Contain(Path.Combine(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly)); - } - - [Fact] - public void SearchesInSharedFxPathForPublishedPortable() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.SecondAssembly) - .AddFiles(SharedFxPath, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(1); - assemblies.Should().Contain(Path.Combine(SharedFxPath, TestLibraryFactory.DefaultAssembly)); - } - - [Fact] - public void PrefersSharedFxPathRefsPathPublishedPortable() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.SecondAssembly) - .AddFiles(SharedFxPath, TestLibraryFactory.DefaultAssembly) - .AddFiles(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - Assert.True(result); - assemblies.Should().HaveCount(1); - assemblies.Should().Contain(Path.Combine(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly)); - } - - [Fact] - public void SkipsSharedFxPathForNonPublishedPortable() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(SharedFxPath, TestLibraryFactory.DefaultAssembly) - .AddFiles(SharedFxPathRefs, TestLibraryFactory.DefaultAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - Assert.False(result); - } - - [Fact] - public void ShouldThrowForNonResolvedInPublishedApps() - { - var fileSystem = FileSystemMockBuilder - .Create() - .AddFiles(BasePathRefs, TestLibraryFactory.SecondAssembly) - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, assemblies)); - } - - [Fact] - public void ShouldSkipForNonResolvedInNonPublishedApps() - { - var fileSystem = FileSystemMockBuilder - .Create() - .Build(); - var library = TestLibraryFactory.Create( - TestLibraryFactory.PackageType - ); - - var resolver = CreateResolver(fileSystem); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - Assert.False(result); - } - - private static AppBaseCompilationAssemblyResolver CreateResolver(IFileSystem fileSystem) - { - return new AppBaseCompilationAssemblyResolver(fileSystem, BasePath, DependencyContextPaths); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/CompositeResolverTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/CompositeResolverTests.cs deleted file mode 100644 index eb407f548..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/CompositeResolverTests.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.Extensions.DependencyModel; -using Microsoft.Extensions.DependencyModel.Resolution; -using Moq; -using Xunit; -using FluentAssertions; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class CompositeResolverTests - { - [Fact] - public void ReturnsFirstSuccesfullResolve() - { - var fail = new Mock(); - var success = new Mock(); - success.Setup(r => r.TryResolveAssemblyPaths(It.IsAny(), It.IsAny>())) - .Returns(true); - - var failTwo = new Mock(); - - var resolvers = new[] - { - fail.Object, - success.Object, - failTwo.Object - }; - - var resolver = new CompositeCompilationAssemblyResolver(resolvers); - var result = resolver.TryResolveAssemblyPaths(null, null); - - Assert.True(result); - - fail.Verify(r => r.TryResolveAssemblyPaths(It.IsAny(), It.IsAny>()), - Times.Once()); - success.Verify(r => r.TryResolveAssemblyPaths(It.IsAny(), It.IsAny>()), - Times.Once()); - failTwo.Verify(r => r.TryResolveAssemblyPaths(It.IsAny(), It.IsAny>()), - Times.Never()); - } - - [Fact] - public void PassesLibraryToAllResolvers() - { - var fail = new Mock(); - var failTwo = new Mock(); - var resolvers = new[] - { - fail.Object, - failTwo.Object - }; - - var library = TestLibraryFactory.Create(); - - var resolver = new CompositeCompilationAssemblyResolver(resolvers); - var result = resolver.TryResolveAssemblyPaths(library, null); - - fail.Verify(r => r.TryResolveAssemblyPaths(library, null), Times.Once()); - failTwo.Verify(r => r.TryResolveAssemblyPaths(library, null), Times.Once()); - } - - [Fact] - public void PopulatedAssemblies() - { - var fail = new Mock(); - var success = new Mock(); - success.Setup(r => r.TryResolveAssemblyPaths(It.IsAny(), It.IsAny>())) - .Returns(true) - .Callback((CompilationLibrary l, List a) => - { - a.Add("Assembly"); - }); - - var resolvers = new[] - { - fail.Object, - success.Object - }; - - var assemblies = new List(); - var library = TestLibraryFactory.Create(); - - var resolver = new CompositeCompilationAssemblyResolver(resolvers); - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - assemblies.Should().Contain("Assembly"); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextBuilderTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextBuilderTests.cs deleted file mode 100644 index 97e639779..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextBuilderTests.cs +++ /dev/null @@ -1,412 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using FluentAssertions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.ProjectModel.Compilation; -using Microsoft.DotNet.ProjectModel.Graph; -using NuGet.Frameworks; -using NuGet.Versioning; -using Xunit; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class DependencyContextBuilderTests - { - private string _referenceAssembliesPath = Path.Combine("reference", "assemblies"); - private NuGetFramework _defaultFramework; - private string _defaultName = "Library.Name"; - private string _defaultHash = "Hash"; - private NuGetVersion _defaultVersion = new NuGetVersion(1, 2, 3, new []{"dev"}, string.Empty); - - public DependencyContext Build(CommonCompilerOptions compilerOptions = null, - IEnumerable compilationExports = null, - IEnumerable runtimeExports = null, - bool portable = false, - NuGetFramework target = null, - string runtime = null) - { - _defaultFramework = NuGetFramework.Parse("net451"); - return new DependencyContextBuilder(_referenceAssembliesPath).Build( - compilerOptions, - compilationExports ?? new LibraryExport[] { }, - runtimeExports ?? new LibraryExport[] {}, - portable, - target ?? _defaultFramework, - runtime ?? string.Empty); - } - - [Fact] - public void PreservesCompilationOptions() - { - var context = Build(new CommonCompilerOptions() - { - AllowUnsafe = true, - Defines = new[] { "Define", "D" }, - DelaySign = true, - EmitEntryPoint = true, - GenerateXmlDocumentation = true, - KeyFile = "Key.snk", - LanguageVersion = "C#8", - Optimize = true, - Platform = "Platform", - PublicSign = true, - WarningsAsErrors = true - }); - - context.CompilationOptions.AllowUnsafe.Should().Be(true); - context.CompilationOptions.DelaySign.Should().Be(true); - context.CompilationOptions.EmitEntryPoint.Should().Be(true); - context.CompilationOptions.GenerateXmlDocumentation.Should().Be(true); - context.CompilationOptions.Optimize.Should().Be(true); - context.CompilationOptions.PublicSign.Should().Be(true); - context.CompilationOptions.WarningsAsErrors.Should().Be(true); - - context.CompilationOptions.Defines.Should().BeEquivalentTo(new[] { "Define", "D" }); - context.CompilationOptions.KeyFile.Should().Be("Key.snk"); - context.CompilationOptions.LanguageVersion.Should().Be("C#8"); - context.CompilationOptions.Platform.Should().Be("Platform"); - } - - - [Fact] - public void AlowsNullCompilationOptions() - { - var context = Build(compilerOptions: null); - - context.CompilationOptions.Should().Be(CompilationOptions.Default); - } - - [Fact] - public void SetsPortableFlag() - { - var context = Build(portable: true); - - context.Target.IsPortable.Should().BeTrue(); - } - - [Fact] - public void FillsRuntimeAndTarget() - { - var context = Build(target: new NuGetFramework("SomeFramework",new Version(1,2)), runtime: "win8-x86"); - context.Target.Runtime.Should().Be("win8-x86"); - context.Target.Framework.Should().Be("SomeFramework,Version=v1.2"); - } - - [Fact] - public void SetsServiceableToTrueForPackageDescriptions() - { - var context = Build(runtimeExports: new[] - { - Export(PackageDescription("Pack.Age", servicable: false)) - }); - - var lib = context.RuntimeLibraries.Single(); - lib.Serviceable.Should().BeTrue(); - } - - [Fact] - public void TakesServicableFromPackageDescription() - { - var context = Build(runtimeExports: new[] - { - Export(PackageDescription("Pack.Age", servicable: true)) - }); - - var lib = context.RuntimeLibraries.Single(); - lib.Serviceable.Should().BeTrue(); - } - - [Fact] - public void FillsRuntimeLibraryProperties() - { - var context = Build(runtimeExports: new[] - { - Export( - PackageDescription( - "Pack.Age", - servicable: true, - hash: "Hash", - version: new NuGetVersion(1, 2, 3), - dependencies: new[] - { - new LibraryRange("System.Collections", - new VersionRange(new NuGetVersion(2, 1, 2)), - LibraryType.ReferenceAssembly, - LibraryDependencyType.Default) - }), - resourceAssemblies: new[] - { - new LibraryResourceAssembly( - new LibraryAsset("Dll", "en-US/Pack.Age.resources.dll", ""), - "en-US" - ) - }, - runtimeAssemblyGroups: new[] - { - new LibraryAssetGroup( - new LibraryAsset("Dll", "lib/Pack.Age.dll", "")), - new LibraryAssetGroup("win8-x64", - new LibraryAsset("Dll", "win8-x64/Pack.Age.dll", "")) - }, - nativeLibraryGroups: new [] - { - new LibraryAssetGroup("win8-x64", - new LibraryAsset("Dll", "win8-x64/Pack.Age.native.dll", "")) - }), - Export( - ReferenceAssemblyDescription("System.Collections", - version: new NuGetVersion(3, 3, 3)), - runtimeAssemblyGroups: new[] - { - new LibraryAssetGroup( - new LibraryAsset("Dll", "System.Collections.dll", "System.Collections.dll")) - }) - }); - - context.RuntimeLibraries.Should().HaveCount(2); - - var lib = context.RuntimeLibraries.Should().Contain(l => l.Name == "Pack.Age").Subject; - lib.Type.Should().Be("package"); - lib.Serviceable.Should().BeTrue(); - lib.Hash.Should().Be("sha512-Hash"); - lib.Version.Should().Be("1.2.3"); - lib.Dependencies.Should().OnlyContain(l => l.Name == "System.Collections" && l.Version == "3.3.3"); - lib.ResourceAssemblies.Should().OnlyContain(l => l.Path == "en-US/Pack.Age.resources.dll" && l.Locale == "en-US"); - - lib.RuntimeAssemblyGroups.GetDefaultAssets().Should().OnlyContain(l => l == "lib/Pack.Age.dll"); - lib.RuntimeAssemblyGroups.GetRuntimeAssets("win8-x64").Should().OnlyContain(l => l == "win8-x64/Pack.Age.dll"); - lib.NativeLibraryGroups.GetRuntimeAssets("win8-x64").Should().OnlyContain(l => l == "win8-x64/Pack.Age.native.dll"); - - var asm = context.RuntimeLibraries.Should().Contain(l => l.Name == "System.Collections").Subject; - asm.Type.Should().Be("referenceassembly"); - asm.Version.Should().Be("3.3.3"); - asm.Hash.Should().BeEmpty(); - asm.Dependencies.Should().BeEmpty(); - asm.RuntimeAssemblyGroups.GetDefaultAssets().Should().OnlyContain(l => l == "System.Collections.dll"); - } - - [Fact] - public void FiltersDuplicatedDependencies() - { - var context = Build(runtimeExports: new[] - { - Export(PackageDescription("Pack.Age", - dependencies: new[] - { - new LibraryRange("System.Collections", - new VersionRange(new NuGetVersion(2, 0, 0)), - LibraryType.ReferenceAssembly, - LibraryDependencyType.Default), - new LibraryRange("System.Collections", - new VersionRange(new NuGetVersion(2, 1, 2)), - LibraryType.Package, - LibraryDependencyType.Default) - }) - ), - Export(ReferenceAssemblyDescription("System.Collections", - version: new NuGetVersion(2, 0, 0))) - }); - - context.RuntimeLibraries.Should().HaveCount(2); - - var lib = context.RuntimeLibraries.Should().Contain(l => l.Name == "Pack.Age").Subject; - lib.Dependencies.Should().HaveCount(1); - lib.Dependencies.Should().OnlyContain(l => l.Name == "System.Collections" && l.Version == "2.0.0"); - } - - [Fact] - public void FillsCompileLibraryProperties() - { - var context = Build(compilationExports: new[] - { - Export(PackageDescription("Pack.Age", - servicable: true, - hash: "Hash", - version: new NuGetVersion(1, 2, 3), - dependencies: new[] - { - new LibraryRange("System.Collections", - new VersionRange(new NuGetVersion(2, 1, 2)), - LibraryType.ReferenceAssembly, - LibraryDependencyType.Default) - }), - compilationAssemblies: new[] - { - new LibraryAsset("Dll", "lib/Pack.Age.dll", ""), - } - ), - Export(ReferenceAssemblyDescription("System.Collections", - version: new NuGetVersion(3, 3, 3)), - compilationAssemblies: new[] - { - new LibraryAsset("Dll", "", "System.Collections.dll"), - }) - }); - - context.CompileLibraries.Should().HaveCount(2); - - var lib = context.CompileLibraries.Should().Contain(l => l.Name == "Pack.Age").Subject; - lib.Type.Should().Be("package"); - lib.Serviceable.Should().BeTrue(); - lib.Hash.Should().Be("sha512-Hash"); - lib.Version.Should().Be("1.2.3"); - lib.Dependencies.Should().OnlyContain(l => l.Name == "System.Collections" && l.Version == "3.3.3"); - lib.Assemblies.Should().OnlyContain(a => a == "lib/Pack.Age.dll"); - - var asm = context.CompileLibraries.Should().Contain(l => l.Name == "System.Collections").Subject; - asm.Type.Should().Be("referenceassembly"); - asm.Version.Should().Be("3.3.3"); - asm.Hash.Should().BeEmpty(); - asm.Dependencies.Should().BeEmpty(); - asm.Assemblies.Should().OnlyContain(a => a == "System.Collections.dll"); - } - - [Fact] - public void FillsResources() - { - var context = Build(runtimeExports: new[] - { - Export(PackageDescription("Pack.Age", version: new NuGetVersion(1, 2, 3)), - resourceAssemblies: new [] - { - new LibraryResourceAssembly(new LibraryAsset("Dll", "resources/en-US/Pack.Age.dll", ""), "en-US") - }) - }); - - context.RuntimeLibraries.Should().HaveCount(1); - - var lib = context.RuntimeLibraries.Should().Contain(l => l.Name == "Pack.Age").Subject; - lib.ResourceAssemblies.Should().OnlyContain(l => l.Locale == "en-US" && l.Path == "resources/en-US/Pack.Age.dll"); - } - - [Fact] - public void ReferenceAssembliesPathRelativeToDefaultRoot() - { - var context = Build(compilationExports: new[] - { - Export(ReferenceAssemblyDescription("System.Collections", - version: new NuGetVersion(3, 3, 3)), - compilationAssemblies: new[] - { - new LibraryAsset("Dll", "", Path.Combine(_referenceAssembliesPath, "sub", "System.Collections.dll")) - }) - }); - - var asm = context.CompileLibraries.Should().Contain(l => l.Name == "System.Collections").Subject; - asm.Assemblies.Should().OnlyContain(a => a == Path.Combine("sub", "System.Collections.dll")); - } - - [Fact] - public void SkipsBuildDependencies() - { - var context = Build(compilationExports: new[] - { - Export(PackageDescription("Pack.Age", - dependencies: new[] - { - new LibraryRange("System.Collections", - new VersionRange(new NuGetVersion(2, 1, 2)), - LibraryType.ReferenceAssembly, - LibraryDependencyType.Build) - }) - ), - Export(ReferenceAssemblyDescription("System.Collections", - version: new NuGetVersion(3, 3, 3))) - }); - - var lib = context.CompileLibraries.Should().Contain(l => l.Name == "Pack.Age").Subject; - lib.Dependencies.Should().BeEmpty(); - } - - [Fact] - public void GeneratesRuntimeSignatureOutOfPackageNamesAndVersions() - { - var context = Build(runtimeExports: new[] - { - Export(PackageDescription("Pack.Age", new NuGetVersion(1, 2, 3))), - Export(PackageDescription("Pack.Age", new NuGetVersion(1, 2, 3))), - }); - - context.Target.RuntimeSignature.Should().Be("d0fc00006ed69e4aae80383dda08599a6892fd31"); - } - - - private LibraryExport Export( - LibraryDescription description, - IEnumerable compilationAssemblies = null, - IEnumerable runtimeAssemblyGroups = null, - IEnumerable nativeLibraryGroups = null, - IEnumerable resourceAssemblies = null) - { - return LibraryExportBuilder.Create(description) - .WithCompilationAssemblies(compilationAssemblies) - .WithRuntimeAssemblyGroups(runtimeAssemblyGroups) - .WithNativeLibraryGroups(nativeLibraryGroups) - .WithResourceAssemblies(resourceAssemblies) - .Build(); - } - - private PackageDescription PackageDescription( - string name = null, - NuGetVersion version = null, - string hash = null, - IEnumerable dependencies = null, - bool? servicable = null) - { - return new PackageDescription( - "PATH", - new LockFilePackageLibrary() - { - Files = new string[] { }, - IsServiceable = servicable ?? false, - Name = name ?? _defaultName, - Version = version ?? _defaultVersion, - Sha512 = hash ?? _defaultHash - }, - new LockFileTargetLibrary(), - dependencies ?? Enumerable.Empty(), - true, - true); - } - - private ProjectDescription ProjectDescription( - string name = null, - NuGetVersion version = null, - IEnumerable dependencies = null) - { - return new ProjectDescription( - new LibraryRange( - name ?? _defaultName, - new VersionRange(version ?? _defaultVersion), - LibraryType.Project, - LibraryDependencyType.Default - ), - new Project(), - dependencies ?? Enumerable.Empty(), - new TargetFrameworkInformation(), - true); - } - - private LibraryDescription ReferenceAssemblyDescription( - string name = null, - NuGetVersion version = null) - { - return new LibraryDescription( - new LibraryIdentity( - name ?? _defaultName, - version ?? _defaultVersion, - LibraryType.ReferenceAssembly), - string.Empty, // Framework assemblies don't have hashes - "PATH", - Enumerable.Empty(), - _defaultFramework, - true, - true); - } - - - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs deleted file mode 100644 index 6d807ab78..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonReaderTest.cs +++ /dev/null @@ -1,370 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using FluentAssertions; -using Xunit; -using System.Diagnostics; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class DependencyContextJsonReaderTest - { - private DependencyContext Read(string text) - { - using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(text))) - { - return new DependencyContextJsonReader().Read(stream); - } - } - - [Fact] - public void ReadsRuntimeTargetInfo() - { - var context = Read( -@"{ - ""runtimeTarget"": { - ""name"":"".NETCoreApp,Version=v1.0/osx.10.10-x64"", - ""signature"":""target-signature"" - }, - ""targets"": { - "".NETCoreApp,Version=v1.0/osx.10.10-x64"": {}, - } -}"); - context.Target.IsPortable.Should().BeFalse(); - context.Target.Framework.Should().Be(".NETCoreApp,Version=v1.0"); - context.Target.Runtime.Should().Be("osx.10.10-x64"); - context.Target.RuntimeSignature.Should().Be("target-signature"); - } - - [Fact] - public void GroupsRuntimeAssets() - { - var context = Read(@" - { - ""targets"": { - "".NETStandard,Version=v1.5"": { - ""System.Banana/1.0.0"": { - ""runtimeTargets"": { - ""runtimes/unix/Banana.dll"": { ""rid"": ""unix"", ""assetType"": ""runtime"" }, - ""runtimes/win7/Banana.dll"": { ""rid"": ""win7"", ""assetType"": ""runtime"" }, - - ""runtimes/native/win7/Apple.dll"": { ""rid"": ""win7"", ""assetType"": ""native"" }, - ""runtimes/native/unix/libapple.so"": { ""rid"": ""unix"", ""assetType"": ""native"" } - } - } - } - }, - ""libraries"": { - ""System.Banana/1.0.0"": { - ""type"": ""package"", - ""serviceable"": false, - ""sha512"": ""HASH-System.Banana"" - }, - } - }"); - context.RuntimeLibraries.Should().HaveCount(1); - var runtimeLib = context.RuntimeLibraries.Single(); - runtimeLib.RuntimeAssemblyGroups.Should().HaveCount(2); - runtimeLib.RuntimeAssemblyGroups.All(g => g.AssetPaths.Count == 1).Should().BeTrue(); - - runtimeLib.NativeLibraryGroups.Should().HaveCount(2); - runtimeLib.NativeLibraryGroups.All(g => g.AssetPaths.Count == 1).Should().BeTrue(); - } - - [Fact] - public void SetsPortableIfRuntimeTargetHasNoRid() - { - var context = Read( -@"{ - ""targets"": { - "".NETCoreApp,Version=v1.0"": {} - } -}"); - context.Target.IsPortable.Should().BeTrue(); - } - - [Fact] - public void SetsNotPortableIfRuntimeTargetHasRid() - { - var context = Read( -@"{ - ""runtimeTarget"": { - ""name"": "".NETCoreApp,Version=v1.0/osx.10.10-x64"" - }, - ""targets"": { - "".NETCoreApp,Version=v1.0/osx.10.10-x64"": {} - } -}"); - context.Target.IsPortable.Should().BeFalse(); - } - - [Fact] - public void ReadsMainTarget() - { - var context = Read( -@"{ - ""targets"": { - "".NETCoreApp,Version=v1.0"": {} - } -}"); - context.Target.Framework.Should().Be(".NETCoreApp,Version=v1.0"); - } - - [Fact] - public void ReadsRuntimeGraph() - { - var context = Read( -@"{ - ""targets"": { - "".NETCoreApp,Version=v1.0/osx.10.10-x64"": {}, - }, - ""runtimes"": { - ""osx.10.10-x64"": [ ], - ""osx.10.11-x64"": [ ""osx"" ], - ""rhel.7-x64"": [ ""linux-x64"", ""unix"" ] - } -}"); - context.RuntimeGraph.Should().Contain(p => p.Runtime == "osx.10.10-x64").Which - .Fallbacks.Should().BeEquivalentTo(); - - context.RuntimeGraph.Should().Contain(p => p.Runtime == "osx.10.11-x64").Which - .Fallbacks.Should().BeEquivalentTo("osx"); - - context.RuntimeGraph.Should().Contain(p => p.Runtime == "rhel.7-x64").Which - .Fallbacks.Should().BeEquivalentTo("linux-x64", "unix"); - } - - [Fact] - public void ReadsCompilationTarget() - { - var context = Read( -@"{ - ""targets"": { - "".NETCoreApp,Version=v1.0"": { - ""MyApp/1.0.1"": { - ""dependencies"": { - ""AspNet.Mvc"": ""1.0.0"" - }, - ""compile"": { - ""MyApp.dll"": { } - } - }, - ""System.Banana/1.0.0"": { - ""dependencies"": { - ""System.Foo"": ""1.0.0"" - }, - ""compile"": { - ""ref/dotnet5.4/System.Banana.dll"": { } - } - } - } - }, - ""libraries"":{ - ""MyApp/1.0.1"": { - ""type"": ""project"" - }, - ""System.Banana/1.0.0"": { - ""type"": ""package"", - ""serviceable"": false, - ""sha512"": ""HASH-System.Banana"" - }, - } -}"); - context.CompileLibraries.Should().HaveCount(2); - var project = context.CompileLibraries.Should().Contain(l => l.Name == "MyApp").Subject; - project.Version.Should().Be("1.0.1"); - project.Assemblies.Should().BeEquivalentTo("MyApp.dll"); - project.Type.Should().Be("project"); - - var package = context.CompileLibraries.Should().Contain(l => l.Name == "System.Banana").Subject; - package.Version.Should().Be("1.0.0"); - package.Assemblies.Should().BeEquivalentTo("ref/dotnet5.4/System.Banana.dll"); - package.Hash.Should().Be("HASH-System.Banana"); - package.Type.Should().Be("package"); - package.Serviceable.Should().Be(false); - } - - [Fact] - public void DoesNotReadRuntimeLibraryFromCompilationOnlyEntries() - { - var context = Read( -@"{ - ""targets"": { - "".NETCoreApp,Version=v1.0"": { - ""MyApp/1.0.1"": { - ""dependencies"": { - ""AspNet.Mvc"": ""1.0.0"" - }, - ""compile"": { - ""MyApp.dll"": { } - } - }, - ""System.Banana/1.0.0"": { - ""dependencies"": { - ""System.Foo"": ""1.0.0"" - }, - ""compileOnly"": true, - ""compile"": { - ""ref/dotnet5.4/System.Banana.dll"": { } - } - } - } - }, - ""libraries"":{ - ""MyApp/1.0.1"": { - ""type"": ""project"" - }, - ""System.Banana/1.0.0"": { - ""type"": ""package"", - ""serviceable"": false, - ""sha512"": ""HASH-System.Banana"" - }, - } -}"); - context.CompileLibraries.Should().HaveCount(2); - context.RuntimeLibraries.Should().HaveCount(1); - context.RuntimeLibraries[0].Name.Should().Be("MyApp"); - } - - - [Fact] - public void ReadsRuntimeLibrariesWithSubtargetsFromMainTargetForPortable() - { - var context = Read( -@"{ - ""runtimeTarget"": { - ""name"": "".NETCoreApp,Version=v1.0"" - }, - ""targets"": { - "".NETCoreApp,Version=v1.0"": { - ""MyApp/1.0.1"": { - ""dependencies"": { - ""AspNet.Mvc"": ""1.0.0"" - }, - ""runtime"": { - ""MyApp.dll"": { } - } - }, - ""System.Banana/1.0.0"": { - ""dependencies"": { - ""System.Foo"": ""1.0.0"" - }, - ""runtime"": { - ""lib/dotnet5.4/System.Banana.dll"": { } - }, - ""runtimeTargets"": { - ""lib/win7/System.Banana.dll"": { ""assetType"": ""runtime"", ""rid"": ""win7-x64""}, - ""lib/win7/Banana.dll"": { ""assetType"": ""native"", ""rid"": ""win7-x64""} - }, - ""resources"": { - ""System.Banana.resources.dll"": { ""locale"": ""en-US"" } - } - } - } - }, - ""libraries"":{ - ""MyApp/1.0.1"": { - ""type"": ""project"", - }, - ""System.Banana/1.0.0"": { - ""type"": ""package"", - ""serviceable"": false, - ""sha512"": ""HASH-System.Banana"" - }, - } -}"); - context.CompileLibraries.Should().HaveCount(2); - var project = context.RuntimeLibraries.Should().Contain(l => l.Name == "MyApp").Subject; - project.Version.Should().Be("1.0.1"); - project.RuntimeAssemblyGroups.GetDefaultAssets().Should().Contain("MyApp.dll"); - project.Type.Should().Be("project"); - - - var package = context.RuntimeLibraries.Should().Contain(l => l.Name == "System.Banana").Subject; - package.Version.Should().Be("1.0.0"); - package.Hash.Should().Be("HASH-System.Banana"); - package.Type.Should().Be("package"); - package.Serviceable.Should().Be(false); - package.ResourceAssemblies.Should().Contain(a => a.Path == "System.Banana.resources.dll") - .Subject.Locale.Should().Be("en-US"); - - package.RuntimeAssemblyGroups.GetDefaultAssets().Should().Contain("lib/dotnet5.4/System.Banana.dll"); - package.RuntimeAssemblyGroups.GetRuntimeAssets("win7-x64").Should().Contain("lib/win7/System.Banana.dll"); - package.NativeLibraryGroups.GetRuntimeAssets("win7-x64").Should().Contain("lib/win7/Banana.dll"); - } - - [Fact] - public void ReadsRuntimeTargetPlaceholdersAsEmptyGroups() - { - var context = Read( -@"{ - ""runtimeTarget"": { - ""name"": "".NETCoreApp,Version=v1.0"" - }, - ""targets"": { - "".NETCoreApp,Version=v1.0"": { - ""System.Banana/1.0.0"": { - ""runtimeTargets"": { - ""runtime/win7-x64/lib/_._"": { ""assetType"": ""runtime"", ""rid"": ""win7-x64""}, - ""runtime/linux-x64/native/_._"": { ""assetType"": ""native"", ""rid"": ""linux-x64""}, - }, - } - } - }, - ""libraries"":{ - ""System.Banana/1.0.0"": { - ""type"": ""package"", - ""serviceable"": false, - ""sha512"": ""HASH-System.Banana"" - }, - } -}"); - context.CompileLibraries.Should().HaveCount(1); - - var package = context.RuntimeLibraries.Should().Contain(l => l.Name == "System.Banana").Subject; - - package.RuntimeAssemblyGroups.Should().Contain(g => g.Runtime == "win7-x64") - .Which.AssetPaths.Should().BeEmpty(); - package.NativeLibraryGroups.Should().Contain(g => g.Runtime == "linux-x64") - .Which.AssetPaths.Should().BeEmpty(); - } - - [Fact] - public void ReadsCompilationOptions() - { - var context = Read( -@"{ - ""compilationOptions"": { - ""allowUnsafe"": true, - ""defines"": [""MY"", ""DEFINES""], - ""delaySign"": true, - ""emitEntryPoint"": true, - ""xmlDoc"": true, - ""keyFile"": ""Key.snk"", - ""languageVersion"": ""C#8"", - ""platform"": ""Platform"", - ""publicSign"": true, - ""warningsAsErrors"": true, - ""optimize"": true - }, - ""targets"": { - "".NETCoreApp,Version=v1.0/osx.10.10-x64"": {}, - } -}"); - context.CompilationOptions.AllowUnsafe.Should().Be(true); - context.CompilationOptions.Defines.Should().BeEquivalentTo(new [] {"MY", "DEFINES"}); - context.CompilationOptions.DelaySign.Should().Be(true); - context.CompilationOptions.EmitEntryPoint.Should().Be(true); - context.CompilationOptions.GenerateXmlDocumentation.Should().Be(true); - context.CompilationOptions.KeyFile.Should().Be("Key.snk"); - context.CompilationOptions.LanguageVersion.Should().Be("C#8"); - context.CompilationOptions.Optimize.Should().Be(true); - context.CompilationOptions.Platform.Should().Be("Platform"); - context.CompilationOptions.PublicSign.Should().Be(true); - context.CompilationOptions.WarningsAsErrors.Should().Be(true); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs deleted file mode 100644 index 3b43e5f2a..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextJsonWriterTests.cs +++ /dev/null @@ -1,518 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Xunit; -using FluentAssertions; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class DependencyContextJsonWriterTests - { - public JObject Save(DependencyContext dependencyContext) - { - using (var memoryStream = new MemoryStream()) - { - new DependencyContextWriter().Write(dependencyContext, memoryStream); - using (var readStream = new MemoryStream(memoryStream.ToArray())) - { - using (var textReader = new StreamReader(readStream)) - { - using (var reader = new JsonTextReader(textReader)) - { - return JObject.Load(reader); - } - } - } - } - } - - public DependencyContext Create( - string target = null, - string runtime = null, - bool? isPortable = null, - CompilationOptions compilationOptions = null, - CompilationLibrary[] compileLibraries = null, - RuntimeLibrary[] runtimeLibraries = null, - IReadOnlyList runtimeGraph = null, - string runtimeSignature = null) - { - return new DependencyContext(new TargetInfo( - target ?? "DefaultTarget", - runtime ?? string.Empty, - runtimeSignature ?? string.Empty, - isPortable ?? false), - compilationOptions ?? CompilationOptions.Default, - compileLibraries ?? new CompilationLibrary[0], - runtimeLibraries ?? new RuntimeLibrary[0], - runtimeGraph ?? new RuntimeFallbacks[0] - ); - } - - [Fact] - public void SavesRuntimeGraph() - { - var result = Save(Create( - "Target", - "Target/runtime", - runtimeGraph: new[] - { - new RuntimeFallbacks("win7-x64", new [] { "win6", "win5"}), - new RuntimeFallbacks("win8-x64", new [] { "win7-x64"}), - })); - - var rids = result.Should().HaveProperty("runtimes") - .Subject.Should().BeOfType().Subject; - - rids.Should().HaveProperty("win7-x64") - .Subject.Should().BeOfType() - .Which.Values().ShouldBeEquivalentTo(new[] { "win6", "win5" }); - - rids.Should().HaveProperty("win8-x64") - .Subject.Should().BeOfType() - .Which.Values().ShouldBeEquivalentTo(new[] { "win7-x64" }); - } - - [Fact] - public void WritesRuntimeTargetPropertyIfNotPortable() - { - var result = Save(Create( - "Target", - "runtime", - false, - runtimeSignature: "runtimeSignature") - ); - result.Should().HavePropertyAsObject("runtimeTarget") - .Which.Should().HavePropertyValue("name", "Target/runtime"); - result.Should().HavePropertyAsObject("runtimeTarget") - .Which.Should().HavePropertyValue("signature", "runtimeSignature"); - } - - [Fact] - public void WritesMainTargetNameToRuntimeTargetIfPortable() - { - var result = Save(Create( - "Target", - "runtime", - true, - runtimeSignature: "runtimeSignature") - ); - result.Should().HavePropertyAsObject("runtimeTarget") - .Which.Should().HavePropertyValue("name", "Target"); - result.Should().HavePropertyAsObject("runtimeTarget") - .Which.Should().HavePropertyValue("signature", "runtimeSignature"); - } - - [Fact] - public void WritesCompilationLibraries() - { - var result = Save(Create( - "Target", - "runtime", - true, - compileLibraries: new[] - { - new CompilationLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] {"Banana.dll"}, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ) - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; - dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); - library.Should().HavePropertyAsObject("compile") - .Subject.Should().HaveProperty("Banana.dll"); - - //libraries - var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - library.Should().HavePropertyValue("sha512", "HASH"); - library.Should().HavePropertyValue("type", "package"); - library.Should().HavePropertyValue("serviceable", true); - } - - [Fact] - public void WritesRuntimeLibrariesToRuntimeTarget() - { - var result = Save(Create( - "Target", - "runtime", - true, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { - new RuntimeAssetGroup(string.Empty, "Banana.dll"), - new RuntimeAssetGroup("win7-x64", "Banana.Win7-x64.dll") - }, - new [] { - new RuntimeAssetGroup(string.Empty, "runtimes\\linux\\native\\native.so"), - new RuntimeAssetGroup("win7-x64", "native\\Banana.Win7-x64.so") - }, - new [] { new ResourceAssembly("en-US\\Banana.Resource.dll", "en-US")}, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ), - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; - dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); - - library.Should().HavePropertyAsObject("runtime") - .Subject.Should().HaveProperty("Banana.dll"); - library.Should().HavePropertyAsObject("native") - .Subject.Should().HaveProperty("runtimes/linux/native/native.so"); - - var runtimeTargets = library.Should().HavePropertyAsObject("runtimeTargets").Subject; - - var runtimeAssembly = runtimeTargets.Should().HavePropertyAsObject("Banana.Win7-x64.dll").Subject; - runtimeAssembly.Should().HavePropertyValue("rid", "win7-x64"); - runtimeAssembly.Should().HavePropertyValue("assetType", "runtime"); - - var nativeLibrary = runtimeTargets.Should().HavePropertyAsObject("native/Banana.Win7-x64.so").Subject; - nativeLibrary.Should().HavePropertyValue("rid", "win7-x64"); - nativeLibrary.Should().HavePropertyValue("assetType", "native"); - - var resourceAssemblies = library.Should().HavePropertyAsObject("resources").Subject; - var resourceAssembly = resourceAssemblies.Should().HavePropertyAsObject("en-US/Banana.Resource.dll").Subject; - resourceAssembly.Should().HavePropertyValue("locale", "en-US"); - - //libraries - var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - library.Should().HavePropertyValue("sha512", "HASH"); - library.Should().HavePropertyValue("type", "package"); - library.Should().HavePropertyValue("serviceable", true); - } - - [Fact] - public void MergesRuntimeAndCompileLibrariesForPortable() - { - var result = Save(Create( - "Target", - "runtime", - true, - compileLibraries: new[] - { - new CompilationLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { "ref/Banana.dll" }, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ) - }, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { - new RuntimeAssetGroup(string.Empty, "Banana.dll"), - new RuntimeAssetGroup("win7-x64", "Banana.Win7-x64.dll") - }, - new [] { - new RuntimeAssetGroup(string.Empty, "native.dll"), - new RuntimeAssetGroup("win7-x64", "Banana.Win7-x64.so") - }, - new ResourceAssembly[] {}, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ), - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; - dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); - - library.Should().HavePropertyAsObject("runtime") - .Subject.Should().HaveProperty("Banana.dll"); - library.Should().HavePropertyAsObject("native") - .Subject.Should().HaveProperty("native.dll"); - - library.Should().HavePropertyAsObject("compile") - .Subject.Should().HaveProperty("ref/Banana.dll"); - - var runtimeTargets = library.Should().HavePropertyAsObject("runtimeTargets").Subject; - - var runtimeAssembly = runtimeTargets.Should().HavePropertyAsObject("Banana.Win7-x64.dll").Subject; - runtimeAssembly.Should().HavePropertyValue("rid", "win7-x64"); - runtimeAssembly.Should().HavePropertyValue("assetType", "runtime"); - - var nativeLibrary = runtimeTargets.Should().HavePropertyAsObject("Banana.Win7-x64.so").Subject; - nativeLibrary.Should().HavePropertyValue("rid", "win7-x64"); - nativeLibrary.Should().HavePropertyValue("assetType", "native"); - - //libraries - var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - library.Should().HavePropertyValue("sha512", "HASH"); - library.Should().HavePropertyValue("type", "package"); - library.Should().HavePropertyValue("serviceable", true); - } - - [Fact] - public void WritesRuntimeTargetForNonPortable() - { - var result = Save(Create( - "Target", - "runtime", - false, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { - new RuntimeAssetGroup(string.Empty, "Banana.dll") - }, - new [] { - new RuntimeAssetGroup(string.Empty, "runtimes\\osx\\native\\native.dylib") - }, - new ResourceAssembly[] {}, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ), - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target/runtime").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var dependencies = library.Should().HavePropertyAsObject("dependencies").Subject; - dependencies.Should().HavePropertyValue("Fruits.Abstract.dll", "2.0.0"); - library.Should().HavePropertyAsObject("runtime") - .Subject.Should().HaveProperty("Banana.dll"); - library.Should().HavePropertyAsObject("native") - .Subject.Should().HaveProperty("runtimes/osx/native/native.dylib"); - - //libraries - var libraries = result.Should().HavePropertyAsObject("libraries").Subject; - library = libraries.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - library.Should().HavePropertyValue("sha512", "HASH"); - library.Should().HavePropertyValue("type", "package"); - library.Should().HavePropertyValue("serviceable", true); - } - - [Fact] - public void WritesPlaceholderRuntimeTargetsForEmptyGroups() - { - var result = Save(Create( - "Target", - "runtime", - true, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { - new RuntimeAssetGroup("win7-x64"), - new RuntimeAssetGroup("win7-x86", "lib\\x86Support.dll") - }, - new [] { - new RuntimeAssetGroup("linux-x64"), - new RuntimeAssetGroup("osx", "native\\OSXSupport.dylib") - }, - new ResourceAssembly[] { }, - new Dependency[] { }, - true - ), - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - - var runtimeTargets = library.Should().HavePropertyAsObject("runtimeTargets").Subject; - - var winPlaceholder = runtimeTargets.Should().HavePropertyAsObject("runtime/win7-x64/lib/_._").Subject; - winPlaceholder.Should().HavePropertyValue("rid", "win7-x64"); - winPlaceholder.Should().HavePropertyValue("assetType", "runtime"); - - var winRuntime = runtimeTargets.Should().HavePropertyAsObject("lib/x86Support.dll").Subject; - winPlaceholder.Should().HavePropertyValue("rid", "win7-x64"); - winPlaceholder.Should().HavePropertyValue("assetType", "runtime"); - - var linuxPlaceholder = runtimeTargets.Should().HavePropertyAsObject("runtime/linux-x64/native/_._").Subject; - linuxPlaceholder.Should().HavePropertyValue("rid", "linux-x64"); - linuxPlaceholder.Should().HavePropertyValue("assetType", "native"); - - var osxNative = runtimeTargets.Should().HavePropertyAsObject("native/OSXSupport.dylib").Subject; - osxNative.Should().HavePropertyValue("rid", "osx"); - osxNative.Should().HavePropertyValue("assetType", "native"); - } - - [Fact] - public void WritesResourceAssembliesForNonPortable() - { - var result = Save(Create( - "Target", - "runtime", - false, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new RuntimeAssetGroup[] { }, - new RuntimeAssetGroup[] { }, - new [] - { - new ResourceAssembly("en-US/Fruits.resources.dll", "en-US") - }, - new Dependency[] { }, - true - ), - })); - - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target/runtime").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var resources = library.Should().HavePropertyAsObject("resources").Subject; - var resource = resources.Should().HavePropertyAsObject("en-US/Fruits.resources.dll").Subject; - resource.Should().HavePropertyValue("locale", "en-US"); - } - - - [Fact] - public void WritesResourceAssembliesForPortable() - { - var result = Save(Create( - "Target", - "runtime", - true, - runtimeLibraries: new[] - { - new RuntimeLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new RuntimeAssetGroup[] { }, - new RuntimeAssetGroup[] { }, - new [] - { - new ResourceAssembly("en-US/Fruits.resources.dll", "en-US") - }, - new Dependency[] { }, - true - ), - })); - - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - var resources = library.Should().HavePropertyAsObject("resources").Subject; - var resource = resources.Should().HavePropertyAsObject("en-US/Fruits.resources.dll").Subject; - resource.Should().HavePropertyValue("locale", "en-US"); - } - - - [Fact] - public void WriteCompilationOnlyAttributeIfOnlyCompilationLibraryProvided() - { - var result = Save(Create( - "Target", - "runtime", - true, - compileLibraries: new[] - { - new CompilationLibrary( - "package", - "PackageName", - "1.2.3", - "HASH", - new [] { "ref/Banana.dll" }, - new [] { - new Dependency("Fruits.Abstract.dll","2.0.0") - }, - true - ) - })); - - // targets - var targets = result.Should().HavePropertyAsObject("targets").Subject; - var target = targets.Should().HavePropertyAsObject("Target").Subject; - var library = target.Should().HavePropertyAsObject("packagename/1.2.3").Subject; - library.Should().HavePropertyValue("compileOnly", true); - } - - - [Fact] - public void WritesCompilationOptions() - { - var result = Save(Create(compilationOptions: new CompilationOptions( - defines: new[] { "MY", "DEFINES" }, - languageVersion: "C#8", - platform: "Platform", - allowUnsafe: true, - warningsAsErrors: true, - optimize: true, - keyFile: "Key.snk", - delaySign: true, - debugType: null, - publicSign: true, - emitEntryPoint: true, - generateXmlDocumentation: true))); - - var options = result.Should().HavePropertyAsObject("compilationOptions").Subject; - options.Should().HavePropertyValue("allowUnsafe", true); - options.Should().HavePropertyValue("delaySign", true); - options.Should().HavePropertyValue("emitEntryPoint", true); - options.Should().HavePropertyValue("xmlDoc", true); - options.Should().HavePropertyValue("publicSign", true); - options.Should().HavePropertyValue("optimize", true); - options.Should().HavePropertyValue("warningsAsErrors", true); - options.Should().HavePropertyValue("allowUnsafe", true); - options.Should().HavePropertyValue("languageVersion", "C#8"); - options.Should().HavePropertyValue("keyFile", "Key.snk"); - options.Should().HaveProperty("defines") - .Subject.Values().Should().BeEquivalentTo(new[] { "MY", "DEFINES" }); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs deleted file mode 100644 index 1c8e07535..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs +++ /dev/null @@ -1,186 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyModel; -using FluentAssertions; -using Xunit; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class DependencyContextLoaderTests - { - [Fact] - public void MergeMergesLibraries() - { - var compilationLibraries = new[] - { - CreateCompilation("PackageA"), - CreateCompilation("PackageB"), - }; - - var runtimeLibraries = new[] - { - CreateRuntime("PackageA"), - CreateRuntime("PackageB"), - }; - - var compilationLibrariesRedist = new[] - { - CreateCompilation("PackageB"), - CreateCompilation("PackageC"), - }; - - var runtimeLibrariesRedist = new[] - { - CreateRuntime("PackageB"), - CreateRuntime("PackageC"), - }; - - var context = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - compilationLibraries, - runtimeLibraries, - new RuntimeFallbacks[] { }); - - var contextRedist = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - compilationLibrariesRedist, - runtimeLibrariesRedist, - new RuntimeFallbacks[] { }); - - var result = context.Merge(contextRedist); - - result.CompileLibraries.Should().BeEquivalentTo(new[] - { - compilationLibraries[0], - compilationLibraries[1], - compilationLibrariesRedist[1], - }); - - result.RuntimeLibraries.Should().BeEquivalentTo(new[] - { - runtimeLibraries[0], - runtimeLibraries[1], - runtimeLibrariesRedist[1], - }); - } - - [Fact] - public void MergeMergesLibrariesWithDifferentCasing() - { - var compilationLibraries = new[] - { - CreateCompilation("PaCkAgEA"), - }; - - var runtimeLibraries = new[] - { - CreateRuntime("PaCkAgEA"), - }; - - var compilationLibrariesRedist = new[] - { - CreateCompilation("PackageA"), - }; - - var runtimeLibrariesRedist = new[] - { - CreateRuntime("PackageA"), - }; - - var context = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - compilationLibraries, - runtimeLibraries, - new RuntimeFallbacks[] { }); - - var contextRedist = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - compilationLibrariesRedist, - runtimeLibrariesRedist, - new RuntimeFallbacks[] { }); - - var result = context.Merge(contextRedist); - - result.CompileLibraries.Should().BeEquivalentTo(new[] - { - compilationLibraries[0] - }); - - result.RuntimeLibraries.Should().BeEquivalentTo(new[] - { - runtimeLibraries[0] - }); - } - - public void MergeMergesRuntimeGraph() - { - var context = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - Enumerable.Empty(), - Enumerable.Empty(), - new RuntimeFallbacks[] - { - new RuntimeFallbacks("win8-x64", new [] { "win8" }), - }); - - var contextRedist = new DependencyContext( - CreateTargetInfo(), - CompilationOptions.Default, - Enumerable.Empty(), - Enumerable.Empty(), - new RuntimeFallbacks[] - { - new RuntimeFallbacks("win8", new [] { "win7-x64", "win7-x86" }), - }); - - var result = context.Merge(contextRedist); - result.RuntimeGraph.Should().Contain(g => g.Runtime == "win8-x64"). - Subject.Fallbacks.Should().BeEquivalentTo("win8"); - result.RuntimeGraph.Should().Contain(g => g.Runtime == "win8"). - Subject.Fallbacks.Should().BeEquivalentTo("win7-x64", "win7-x86"); - } - - private TargetInfo CreateTargetInfo() - { - return new TargetInfo( - "Framework", - "runtime", - "runtimeSignature", - true); - } - - private CompilationLibrary CreateCompilation(string name) - { - return new CompilationLibrary( - "project", - name, - "1.1.1", - "HASH", - new string[] { }, - new Dependency[] { }, - false); - } - - private RuntimeLibrary CreateRuntime(string name) - { - return new RuntimeLibrary( - "project", - name, - "1.1.1", - "HASH", - new RuntimeAssetGroup[] { }, - new RuntimeAssetGroup[] { }, - new ResourceAssembly[] { }, - new Dependency[] {}, - false); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextTests.cs deleted file mode 100644 index 81927204f..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextTests.cs +++ /dev/null @@ -1,138 +0,0 @@ -using FluentAssertions; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using Xunit; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class DependencyContextTests - { - [Theory] - [InlineData("System.Collections.dll", "System.Collections")] - [InlineData("System.Collections.ni.dll", "System.Collections")] - [InlineData("mscorlib", "mscorlib")] - public void GetRuntimeAssemblyNamesExtractsCorrectAssemblyName(string path, string expected) - { - var context = new DependencyContext(new TargetInfo(".NETStandard,Version=v1.3", string.Empty, string.Empty, true), - compilationOptions: CompilationOptions.Default, - compileLibraries: new CompilationLibrary[] { }, - runtimeLibraries: new[] { - new RuntimeLibrary("package", "System.Banana", "1.0.0", "hash", - new [] { - new RuntimeAssetGroup(string.Empty, Path.Combine("lib", path)) - }, - new RuntimeAssetGroup[] { }, - new ResourceAssembly[] { }, - new Dependency[] { }, - serviceable: false) - }, - runtimeGraph: new RuntimeFallbacks[] { }); - - var assets = context.GetDefaultAssemblyNames(); - assets.Should().OnlyContain(a => a.Name == expected); - } - - [Fact] - public void GetRuntimeAssemblyNamesReturnsRIDLessAssetsIfNoRIDSpecificAssetsInLibrary() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeAssemblyNames("win7-x64"); - assets.Should().OnlyContain(a => a.Name == "System.Collections"); - } - - [Fact] - public void GetRuntimeAssemblyNamesReturnsMostSpecificAssetIfRIDSpecificAssetInLibrary() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeAssemblyNames("win81-x64"); - assets.Should().OnlyContain(a => a.Name == "System.Collections"); - } - - [Fact] - public void GetRuntimeAssemblyNamesReturnsEmptyIfEmptyRuntimeGroupPresent() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeAssemblyNames("win10-x64"); - assets.Should().BeEmpty(); - } - - [Fact] - public void GetRuntimeNativeAssetsReturnsEmptyIfNoGroupsMatch() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeNativeAssets("win7-x64"); - assets.Should().BeEmpty(); - } - - [Fact] - public void GetRuntimeNativeAssetsReturnsMostSpecificAssetIfRIDSpecificAssetInLibrary() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeNativeAssets("linux-x64"); - assets.Should().BeEquivalentTo(Path.Combine("runtimes", "linux-x64", "native", "System.Banana.Native.so")); - } - - [Fact] - public void GetRuntimeNativeAssetsReturnsEmptyIfEmptyRuntimeGroupPresent() - { - var context = BuildTestContext(); - - var assets = context.GetRuntimeNativeAssets("rhel-x64"); - assets.Should().BeEmpty(); - } - - private DependencyContext BuildTestContext() - { - return new DependencyContext(new TargetInfo(".NETStandard,Version=v1.3", string.Empty, string.Empty, true), - compilationOptions: CompilationOptions.Default, - compileLibraries: new[] - { - new CompilationLibrary("package", "System.Banana", "1.0.0", "hash", - new [] { Path.Combine("ref", "netstandard1.3", "System.Banana.dll") }, - new Dependency[] { }, - serviceable: false) - }, - runtimeLibraries: new[] { - new RuntimeLibrary("package", "System.Banana", "1.0.0", "hash", - new [] { - new RuntimeAssetGroup(string.Empty, Path.Combine("lib", "netstandard1.3", "System.Collections.dll")), - new RuntimeAssetGroup("win10"), - new RuntimeAssetGroup("win8", Path.Combine("runtimes", "win8", "lib", "netstandard1.3", "System.Collections.dll")) - }, - new [] { - new RuntimeAssetGroup("rhel"), - new RuntimeAssetGroup("linux-x64", Path.Combine("runtimes", "linux-x64", "native", "System.Banana.Native.so")), - new RuntimeAssetGroup("osx-x64", Path.Combine("runtimes", "osx-x64", "native", "System.Banana.Native.dylib")), - - // Just here to test we don't fall back through it for the other cases. There's - // no such thing as a "unix" native asset since there's no common executable format :) - new RuntimeAssetGroup("unix", Path.Combine("runtimes", "osx-x64", "native", "System.Banana.Native")) - }, - new ResourceAssembly[] { }, - new Dependency[] { }, - serviceable: false) - }, - runtimeGraph: new[] { - new RuntimeFallbacks("win10-x64", "win10", "win81-x64", "win81", "win8-x64", "win8", "win7-x64", "win7", "win-x64", "win", "any", "base"), - new RuntimeFallbacks("win81-x64", "win81", "win8-x64", "win8", "win7-x64", "win7", "win-x64", "win", "any", "base"), - new RuntimeFallbacks("win8-x64", "win8", "win7-x64", "win7", "win-x64", "win", "any", "base"), - new RuntimeFallbacks("win7-x64", "win7", "win-x64", "win", "any", "base"), - new RuntimeFallbacks("ubuntu-x64", "ubuntu", "linux-x64", "linux", "unix", "any", "base"), - new RuntimeFallbacks("ubuntu.16.04-x64", "ubuntu", "linux-x64", "linux", "unix", "any", "base"), - new RuntimeFallbacks("rhel-x64", "rhel", "linux-x64", "linux", "unix", "any", "base"), - new RuntimeFallbacks("fedora.23-x64", "fedora", "linux-x64", "linux", "unix", "any", "base"), - new RuntimeFallbacks("opensuse.13.2-x64", "opensuse", "linux-x64", "linux", "unix", "any", "base"), - new RuntimeFallbacks("osx-x64", "osx", "unix", "any", "base"), - }); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/EnvironmentMockBuilder.cs b/test/Microsoft.Extensions.DependencyModel.Tests/EnvironmentMockBuilder.cs deleted file mode 100644 index 55e55065c..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/EnvironmentMockBuilder.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using Microsoft.Extensions.EnvironmentAbstractions; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class EnvironmentMockBuilder - { - private Dictionary _variables = new Dictionary(); - - internal static IEnvironment Empty { get; } = Create().Build(); - - public static EnvironmentMockBuilder Create() - { - return new EnvironmentMockBuilder(); - } - - public EnvironmentMockBuilder AddVariable(string name, string value) - { - _variables.Add(name, value); - return this; - } - - internal IEnvironment Build() - { - return new EnvironmentMock(_variables); - } - - private class EnvironmentMock : IEnvironment - { - private Dictionary _variables; - - public EnvironmentMock(Dictionary variables) - { - _variables = variables; - } - - public string GetEnvironmentVariable(string name) - { - string value = null; - _variables.TryGetValue(name, out value); - return value; - } - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs deleted file mode 100644 index c0e4de7e5..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/FunctionalTests.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using FluentAssertions; -using Xunit; - -namespace Microsoft.Extensions.DependencyModel -{ - public class FunctionalTests : TestBase - { - private readonly string _testProjectsRoot; - - public FunctionalTests() - { - _testProjectsRoot = Path.Combine(AppContext.BaseDirectory, "TestAssets", "TestProjects"); - } - - [Theory] - [InlineData("TestApp", true)] - [InlineData("TestAppPortable", true)] - [InlineData("TestAppDeps", false)] - [InlineData("TestAppPortableDeps", false)] - public void RunTest(string appname, bool checkCompilation) - { - var testProjectPath = Path.Combine(RepoRoot, "TestAssets", "TestProjects", "DependencyContextValidator", appname); - var testProject = Path.Combine(testProjectPath, "project.json"); - - var runCommand = new RunCommand(testProject); - var result = runCommand.ExecuteWithCapturedOutput(); - result.Should().Pass(); - ValidateRuntimeLibraries(result, appname); - if (checkCompilation) - { - ValidateCompilationLibraries(result, appname); - } - } - - [Theory] - [InlineData("TestApp", false, true)] - [InlineData("TestAppPortable", true, true)] - [InlineData("TestAppDeps", false, false)] - [InlineData("TestAppPortableDeps", true, false)] - public void PublishTest(string appname, bool portable, bool checkCompilation) - { - var testProjectPath = Path.Combine(RepoRoot, "TestAssets", "TestProjects", "DependencyContextValidator", appname); - var testProject = Path.Combine(testProjectPath, "project.json"); - - var publishCommand = new PublishCommand(testProject); - publishCommand.Execute().Should().Pass(); - - var exeName = portable ? publishCommand.GetPortableOutputName() : publishCommand.GetOutputExecutable(); - - var result = TestExecutable(publishCommand.GetOutputDirectory(portable).FullName, exeName, string.Empty); - ValidateRuntimeLibraries(result, appname); - if (checkCompilation) - { - ValidateCompilationLibraries(result, appname); - } - } - - [WindowsOnlyFact] - public void RunTestFullClr() - { - var testProjectPath = Path.Combine(RepoRoot, "TestAssets", "TestProjects", "DependencyContextValidator", "TestAppFullClr"); - var testProject = Path.Combine(testProjectPath, "project.json"); - - var runCommand = new RunCommand(testProject); - var result = runCommand.ExecuteWithCapturedOutput(); - result.Should().Pass(); - ValidateRuntimeLibrariesFullClr(result, "TestAppFullClr"); - ValidateCompilationLibrariesFullClr(result, "TestAppFullClr"); - } - - [WindowsOnlyFact] - public void PublishTestFullClr() - { - var testProjectPath = Path.Combine(RepoRoot, "TestAssets", "TestProjects", "DependencyContextValidator", "TestAppFullClr"); - var testProject = Path.Combine(testProjectPath, "project.json"); - - var publishCommand = new PublishCommand(testProject); - publishCommand.Execute().Should().Pass(); - - var result = TestExecutable(publishCommand.GetOutputDirectory().FullName, publishCommand.GetOutputExecutable(), string.Empty); - ValidateRuntimeLibrariesFullClr(result, "TestAppFullClr"); - ValidateCompilationLibrariesFullClr(result, "TestAppFullClr"); - } - - private void ValidateRuntimeLibrariesFullClr(CommandResult result, string appname) - { - // entry assembly - result.Should().HaveStdOutContaining($"Runtime {appname.ToLowerInvariant()}:{appname}"); - // project dependency - result.Should().HaveStdOutContaining("Runtime dependencycontextvalidator:DependencyContextValidator"); - } - - private void ValidateCompilationLibrariesFullClr(CommandResult result, string appname) - { - // entry assembly - result.Should().HaveStdOutContaining($"Compilation {appname.ToLowerInvariant()}:{appname}.exe"); - // project dependency - result.Should().HaveStdOutContaining("Compilation dependencycontextvalidator:DependencyContextValidator.dll"); - // system assembly - result.Should().HaveStdOutContaining("Compilation mscorlib:mscorlib.dll"); - } - - - private void ValidateRuntimeLibraries(CommandResult result, string appname) - { - // entry assembly - result.Should().HaveStdOutContaining($"Runtime {appname.ToLowerInvariant()}:{appname}"); - // project dependency - result.Should().HaveStdOutContaining("Runtime dependencycontextvalidator:DependencyContextValidator"); - // system assembly - result.Should().HaveStdOutContainingIgnoreCase("Runtime System.Linq:System.Linq"); - } - - private void ValidateCompilationLibraries(CommandResult result, string appname) - { - // entry assembly - result.Should().HaveStdOutContaining($"Compilation {appname.ToLowerInvariant()}:{appname}.dll"); - // project dependency - result.Should().HaveStdOutContaining("Compilation dependencycontextvalidator:DependencyContextValidator.dll"); - // system assembly - result.Should().HaveStdOutContainingIgnoreCase("Compilation System.Linq:System.Linq.dll"); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/JsonAssetions.cs b/test/Microsoft.Extensions.DependencyModel.Tests/JsonAssetions.cs deleted file mode 100644 index 214d0c2dc..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/JsonAssetions.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using FluentAssertions; -using FluentAssertions.Execution; -using FluentAssertions.Primitives; -using Newtonsoft.Json.Linq; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public static class JsonAssertionExtensions - { - public static JsonAssetions Should(this JToken jToken) - { - return new JsonAssetions(jToken); - } - } - - public class JsonAssetions: ReferenceTypeAssertions - { - public JsonAssetions(JToken token) - { - Subject = token; - } - - protected override string Context => nameof(JToken); - - public AndWhichConstraint HaveProperty(string expected) - { - var token = Subject[expected]; - Execute.Assertion - .ForCondition(token != null) - .FailWith($"Expected {Subject} to have property '" + expected + "'"); - - return new AndWhichConstraint(this, token); - } - - public AndConstraint NotHaveProperty(string expected) - { - var token = Subject[expected]; - Execute.Assertion - .ForCondition(token == null) - .FailWith($"Expected {Subject} not to have property '" + expected + "'"); - - return new AndConstraint(this); - } - - public AndWhichConstraint HavePropertyAsObject(string expected) - { - return HaveProperty(expected).Subject.Should().BeOfType(); - } - - public AndConstraint HavePropertyValue(string expected, T value) - { - return HaveProperty(expected).Subject.Value().Should().Be(value); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/Microsoft.Extensions.DependencyModel.Tests.xproj b/test/Microsoft.Extensions.DependencyModel.Tests/Microsoft.Extensions.DependencyModel.Tests.xproj deleted file mode 100644 index f6f7d2856..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/Microsoft.Extensions.DependencyModel.Tests.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - 14.0.23107 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 4a4711d8-4312-49fc-87b5-4f183f4c6a51 - Microsoft.Extensions.DependencyModel.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - - - - \ No newline at end of file diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs deleted file mode 100644 index 91735cd6b..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using FluentAssertions; -using Microsoft.Extensions.EnvironmentAbstractions; -using Microsoft.Extensions.DependencyModel.Resolution; -using Xunit; -using F = Microsoft.Extensions.DependencyModel.Tests.TestLibraryFactory; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class PackageCacheResolverTest - { - private static string CachePath = Path.Combine("cache", "directory", "location"); - - [Fact] - public void SholdUseEnvironmentVariableToGetDefaultLocation() - { - var result = PackageCacheCompilationAssemblyResolver.GetDefaultPackageCacheDirectory(GetDefaultEnvironment()); - - result.Should().Be(CachePath); - } - - [Fact] - public void SkipsNonPackage() - { - var resolver = new PackageCacheCompilationAssemblyResolver(); - var library = F.Create( - F.PackageType, - assemblies: F.EmptyAssemblies); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - result.Should().BeFalse(); - } - - [Theory] - [InlineData("INVALIDHASHVALUE")] - [InlineData("INVALIDHASHVALUE-")] - [InlineData("-INVALIDHASHVALUE")] - public void FailsOnInvalidHash(string hash) - { - var resolver = new PackageCacheCompilationAssemblyResolver(FileSystemMockBuilder.Empty, CachePath); - var library = F.Create(hash: hash); - - var exception = Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, null)); - exception.Message.Should() - .Contain(library.Hash) - .And.Contain(library.Name); - } - - [Fact] - public void ChecksHashFile() - { - var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion); - var fileSystem = FileSystemMockBuilder.Create() - .AddFile( - GetHashFilePath(packagePath), - "WRONGHASH" - ) - .AddFiles(packagePath, F.DefaultAssemblies) - .Build(); - - var resolver = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(F.Create(), assemblies); - result.Should().BeFalse(); - } - - [Fact] - public void ResolvesAllAssemblies() - { - var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion); - var fileSystem = FileSystemMockBuilder.Create() - .AddFile( - GetHashFilePath(packagePath), - F.DefaultHashValue - ) - .AddFiles(packagePath, F.TwoAssemblies) - .Build(); - var library = F.Create(assemblies: F.TwoAssemblies); - - var resolver = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(packagePath, F.DefaultAssemblyPath)); - assemblies.Should().Contain(Path.Combine(packagePath, F.SecondAssemblyPath)); - } - - - [Fact] - public void FailsWhenOneOfAssembliesNotFound() - { - var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion); - var fileSystem = FileSystemMockBuilder.Create() - .AddFile( - GetHashFilePath(packagePath), - F.DefaultHashValue - ) - .AddFiles(packagePath, F.DefaultAssemblyPath) - .Build(); - var library = F.Create(assemblies: F.TwoAssemblies); - - var resolver = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath); - var assemblies = new List(); - - var exception = Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, assemblies)); - exception.Message.Should() - .Contain(F.SecondAssemblyPath) - .And.Contain(library.Name); - } - - private IEnvironment GetDefaultEnvironment() - { - return EnvironmentMockBuilder.Create() - .AddVariable("DOTNET_PACKAGES_CACHE", CachePath) - .Build(); - } - - private static string GetPackagesPath(string id, string version) - { - return PackageResolverTest.GetPackagesPath(CachePath, id, version); - } - - private static string GetHashFilePath(string packagePath) - { - return Path.Combine( - packagePath, - $"{F.DefaultPackageName.ToLowerInvariant()}.{F.DefaultVersion.ToLowerInvariant()}.nupkg.{F.DefaultHashAlgoritm}"); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs deleted file mode 100644 index dd69f512b..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.DependencyModel.Resolution; -using Xunit; -using F = Microsoft.Extensions.DependencyModel.Tests.TestLibraryFactory; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class PackageResolverTest - { - private static string PackagesPath = Path.Combine("package", "directory", "location"); - - [Fact] - public void ShouldUseEnvironmentVariableToGetDefaultLocation() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("NUGET_PACKAGES", PackagesPath) - .Build(); - - var result = PackageCompilationAssemblyResolver.GetDefaultPackageDirectory(Platform.Unknown, environment); - result.Should().Be(PackagesPath); - } - - - [Fact] - public void ShouldUseNugetUnderUserProfileOnWindows() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("USERPROFILE", "User Profile") - .Build(); - - var result = PackageCompilationAssemblyResolver.GetDefaultPackageDirectory(Platform.Windows, environment); - result.Should().Be(Path.Combine("User Profile", ".nuget", "packages")); - } - - [Fact] - public void ShouldUseNugetUnderHomeOnNonWindows() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("HOME", "User Home") - .Build(); - - var result = PackageCompilationAssemblyResolver.GetDefaultPackageDirectory(Platform.Linux, environment); - result.Should().Be(Path.Combine("User Home", ".nuget", "packages")); - } - - [Fact] - public void ResolvesAllAssemblies() - { - var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion); - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(packagePath, F.TwoAssemblies) - .Build(); - var library = F.Create(assemblies: F.TwoAssemblies); - - var resolver = new PackageCompilationAssemblyResolver(fileSystem, PackagesPath); - var assemblies = new List(); - - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - assemblies.Should().HaveCount(2); - assemblies.Should().Contain(Path.Combine(packagePath, F.DefaultAssemblyPath)); - assemblies.Should().Contain(Path.Combine(packagePath, F.SecondAssemblyPath)); - } - - - [Fact] - public void FailsWhenOneOfAssembliesNotFound() - { - var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion); - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(packagePath, F.DefaultAssemblyPath) - .Build(); - var library = F.Create(assemblies: F.TwoAssemblies); - - var resolver = new PackageCompilationAssemblyResolver(fileSystem, PackagesPath); - var assemblies = new List(); - - var exception = Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, assemblies)); - exception.Message.Should() - .Contain(F.SecondAssemblyPath) - .And.Contain(library.Name); - } - - private static string GetPackagesPath(string id, string version) - { - return GetPackagesPath(PackagesPath, id, version); - } - - internal static string GetPackagesPath(string basePath, string id, string version) - { - return Path.Combine(basePath, id.ToLowerInvariant(), version.ToLowerInvariant()); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/ReferenceAssemblyResolverTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/ReferenceAssemblyResolverTests.cs deleted file mode 100644 index 5895ea994..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/ReferenceAssemblyResolverTests.cs +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.Extensions.DependencyModel.Resolution; -using Xunit; -using F = Microsoft.Extensions.DependencyModel.Tests.TestLibraryFactory; - - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - public class ReferenceAssemblyResolverTests - { - private static string ReferencePath = Path.Combine("reference", "assembly", "directory", "location"); - - [Fact] - public void SkipsNonReferenceAssembly() - { - var resolver = new ReferenceAssemblyPathResolver(); - var library = F.Create( - F.PackageType); - - var result = resolver.TryResolveAssemblyPaths(library, null); - - result.Should().BeFalse(); - } - - [Fact] - public void UsesEnvironmentVariableForDefaultPath() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("DOTNET_REFERENCE_ASSEMBLIES_PATH", ReferencePath) - .Build(); - - var result = ReferenceAssemblyPathResolver.GetDefaultReferenceAssembliesPath(FileSystemMockBuilder.Empty, Platform.Windows, environment); - result.Should().Be(ReferencePath); - } - - [Fact] - public void LooksOnlyOnEnvironmentVariableOnNonWindows() - { - var result = ReferenceAssemblyPathResolver.GetDefaultReferenceAssembliesPath(FileSystemMockBuilder.Empty, Platform.Linux, EnvironmentMockBuilder.Empty); - result.Should().BeNull(); - } - - [Fact] - public void ReturnsProgramFiles86AsDefaultLocationOnWin64() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("ProgramFiles(x86)", "Program Files (x86)") - .AddVariable("ProgramFiles", "Program Files") - .Build(); - - var result = ReferenceAssemblyPathResolver.GetDefaultReferenceAssembliesPath(FileSystemMockBuilder.Empty, Platform.Windows, environment); - result.Should().Be(Path.Combine("Program Files (x86)", "Reference Assemblies", "Microsoft", "Framework")); - } - - [Fact] - public void ReturnsProgramFilesAsDefaultLocationOnWin32() - { - var environment = EnvironmentMockBuilder.Create() - .AddVariable("ProgramFiles", "Program Files") - .Build(); - - var result = ReferenceAssemblyPathResolver.GetDefaultReferenceAssembliesPath(FileSystemMockBuilder.Empty, Platform.Windows, environment); - result.Should().Be(Path.Combine("Program Files", "Reference Assemblies", "Microsoft", "Framework")); - } - - [Fact] - public void ReturnNet20PathAsFallbackOnWindows() - { - var net20Path = Path.Combine("Windows", "Microsoft.NET", "Framework", "v2.0.50727"); - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(net20Path, "some.dll") - .Build(); - - var environment = EnvironmentMockBuilder.Create() - .AddVariable("WINDIR", "Windows") - .Build(); - - var result = ReferenceAssemblyPathResolver.GetFallbackSearchPaths(fileSystem, Platform.Windows, environment); - result.Should().Contain(net20Path); - } - - [Fact] - public void ChecksForRelativePathUnderDefaultLocation() - { - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(ReferencePath, F.DefaultAssemblyPath) - .Build(); - - var library = F.Create(libraryType: F.ReferenceAssemblyType); - var assemblies = new List(); - - var resolver = new ReferenceAssemblyPathResolver(fileSystem, ReferencePath, new string[] { }); - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - result.Should().BeTrue(); - assemblies.Should().Contain(Path.Combine(ReferencePath, F.DefaultAssemblyPath)); - } - - [Fact] - public void ChecksForFileNameInFallbackLocation() - { - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(ReferencePath, F.DefaultAssembly) - .Build(); - - var library = F.Create(libraryType: F.ReferenceAssemblyType); - var assemblies = new List(); - - var resolver = new ReferenceAssemblyPathResolver(fileSystem, null, new string[] { ReferencePath }); - var result = resolver.TryResolveAssemblyPaths(library, assemblies); - - result.Should().BeTrue(); - assemblies.Should().Contain(Path.Combine(ReferencePath, F.DefaultAssembly)); - } - - [Fact] - public void ShouldResolveAll() - { - var fileSystem = FileSystemMockBuilder.Create() - .AddFiles(ReferencePath, F.DefaultAssembly) - .Build(); - - var library = F.Create(libraryType: F.ReferenceAssemblyType, assemblies: F.TwoAssemblies); - var assemblies = new List(); - - var resolver = new ReferenceAssemblyPathResolver(fileSystem, null, new string[] { ReferencePath }); - - var exception = Assert.Throws(() => resolver.TryResolveAssemblyPaths(library, assemblies)); - - exception.Message.Should() - .Contain(F.SecondAssemblyPath) - .And.Contain(library.Name); - } - } -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs b/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs deleted file mode 100644 index a944ed309..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; - -namespace Microsoft.Extensions.DependencyModel.Tests -{ - static class TestLibraryFactory - { - public static readonly string DefaultType = "package"; - public static readonly string DefaultPackageName = "My.Package"; - public static readonly string DefaultVersion = "1.2.3.7"; - public static readonly Dependency[] DefaultDependencies = { }; - public static readonly bool DefaultServiceable = true; - - public static readonly string DefaultAssembly = "My.Package.dll"; - public static readonly string SecondAssembly = "My.PackageEx.dll"; - public static readonly string DefaultAssemblyPath = Path.Combine("ref", DefaultAssembly); - public static readonly string SecondAssemblyPath = Path.Combine("ref", SecondAssembly); - public static readonly string[] EmptyAssemblies = { }; - public static readonly string[] DefaultAssemblies = { DefaultAssemblyPath }; - public static readonly string[] TwoAssemblies = { DefaultAssemblyPath, SecondAssemblyPath }; - - public static readonly string DefaultHashValue = "HASHVALUE"; - public static readonly string DefaultHashAlgoritm = "ALG"; - public static readonly string DefaultHash = DefaultHashAlgoritm + "-" + DefaultHashValue; - - public static readonly string ProjectType = "project"; - public static readonly string MsBuildProjectType = "msbuildproject"; - public static readonly string ReferenceAssemblyType = "referenceassembly"; - public static readonly string PackageType = "package"; - - public static CompilationLibrary Create( - string libraryType = null, - string packageName = null, - string version = null, - string hash = null, - string[] assemblies = null, - Dependency[] dependencies = null, - bool? serviceable = null) - { - return new CompilationLibrary( - libraryType ?? DefaultType, - packageName ?? DefaultPackageName, - version ?? DefaultVersion, - hash ?? DefaultHash, - assemblies ?? DefaultAssemblies, - dependencies ?? DefaultDependencies, - serviceable ?? DefaultServiceable - ); - } - } - -} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/project.json b/test/Microsoft.Extensions.DependencyModel.Tests/project.json deleted file mode 100644 index 2a88f7308..000000000 --- a/test/Microsoft.Extensions.DependencyModel.Tests/project.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "version": "1.0.0-*", - "description": "Microsoft.DotNet.Tools.Tests.Utilities Class Library", - "buildOptions": { - "keyFile": "../../tools/Key.snk" - }, - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "System.Diagnostics.TraceSource": "4.0.0", - "Microsoft.DotNet.Tools.Tests.Utilities": { - "target": "project" - }, - "Microsoft.DotNet.Cli.Utils": { - "target": "project" - }, - "FluentAssertions": "4.0.0", - "moq.netcore": "4.4.0-beta8", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" - }, - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "dotnet5.4", - "portable-net451+win8" - ] - } - }, - "testRunner": "xunit" -} From e900e235447cdb17b78c4401cef085530aaef167 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Fri, 5 Aug 2016 16:54:41 -0700 Subject: [PATCH 148/165] Updating dependencies to use the new dependencymodel and platformabstractions. Also updated the xunit template to add internalabstractions. Conflicts: src/Microsoft.DotNet.Cli.Utils/project.json test/dotnet-build.Tests/BuildOutputTests.cs --- .../ProjectsWithTests/MultipleFrameworkProject/project.json | 5 ++++- .../ProjectsWithTests/NetCoreAppOnlyProject/project.json | 5 ++++- .../CommandResolution/AppBaseCommandResolver.cs | 2 +- .../CommandResolution/AppBaseDllCommandResolver.cs | 2 +- .../CommandResolution/DefaultCommandResolverPolicy.cs | 2 +- .../CommandResolution/ScriptCommandResolverPolicy.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/Constants.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/DotnetFiles.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/PathUtility.cs | 2 +- .../ProjectDependenciesCommandFactory.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/ScriptExecutor.cs | 2 +- src/Microsoft.DotNet.Cli.Utils/project.json | 1 + .../ProjectJsonWorkspace.cs | 4 ++-- src/Microsoft.DotNet.ProjectModel.Workspaces/project.json | 3 ++- .../Compilation/LibraryAsset.cs | 2 +- src/Microsoft.DotNet.ProjectModel/FileNameSuffixes.cs | 2 +- .../FileSystemGlobbing/FilePatternMatch.cs | 2 +- src/Microsoft.DotNet.ProjectModel/Files/IncludeEntry.cs | 2 +- src/Microsoft.DotNet.ProjectModel/Graph/LibraryIdentity.cs | 2 +- src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs | 2 +- src/Microsoft.DotNet.ProjectModel/LibraryDescription.cs | 2 +- src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs | 1 + src/Microsoft.DotNet.ProjectModel/ProjectContextIdentity.cs | 2 +- .../Resolution/FrameworkReferenceResolver.cs | 2 +- .../RuntimeEnvironmentRidExtensions.cs | 4 +++- src/Microsoft.DotNet.ProjectModel/Utilities/PathUtility.cs | 2 +- src/Microsoft.DotNet.ProjectModel/project.json | 3 ++- .../dotnet-new/CSharp_xunittest/project.json.template | 3 ++- test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs | 4 +--- 30 files changed, 42 insertions(+), 31 deletions(-) diff --git a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json index 734eaa9a3..f0c5b4383 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json @@ -3,7 +3,10 @@ "dependencies": { "dotnet-test-xunit": "1.0.0-rc2-192208-24", "Microsoft.NETCore.Platforms": "1.0.1", - "xunit": "2.1.0" + "xunit": "2.1.0", + "Microsoft.DotNet.InternalAbstractions": { + "target": "project" + } }, "frameworks": { "netcoreapp1.0": { diff --git a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json index 841f5b74d..a90f46cc5 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json @@ -8,7 +8,10 @@ "System.Linq.Expressions": "4.1.0", "System.Runtime.Serialization.Primitives": "4.1.1", "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" + "dotnet-test-xunit": "1.0.0-rc2-192208-24", + "Microsoft.DotNet.InternalAbstractions": { + "target": "project" + } }, "frameworks": { "netcoreapp1.0": { diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseCommandResolver.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseCommandResolver.cs index cdf6104cf..2eccd3de2 100644 --- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseCommandResolver.cs +++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseCommandResolver.cs @@ -1,4 +1,4 @@ -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseDllCommandResolver.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseDllCommandResolver.cs index 33604c4b4..50e2020a2 100644 --- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseDllCommandResolver.cs +++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/AppBaseDllCommandResolver.cs @@ -1,6 +1,6 @@ using System.IO; using System.Linq; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel; namespace Microsoft.DotNet.Cli.Utils diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/DefaultCommandResolverPolicy.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/DefaultCommandResolverPolicy.cs index b4b21fada..fbd093e6a 100644 --- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/DefaultCommandResolverPolicy.cs +++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/DefaultCommandResolverPolicy.cs @@ -1,4 +1,4 @@ -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ScriptCommandResolverPolicy.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ScriptCommandResolverPolicy.cs index 04878c5a5..887d24aea 100644 --- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ScriptCommandResolverPolicy.cs +++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ScriptCommandResolverPolicy.cs @@ -1,4 +1,4 @@ -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/Constants.cs b/src/Microsoft.DotNet.Cli.Utils/Constants.cs index 93bb49daa..e3f6c195a 100644 --- a/src/Microsoft.DotNet.Cli.Utils/Constants.cs +++ b/src/Microsoft.DotNet.Cli.Utils/Constants.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/DotnetFiles.cs b/src/Microsoft.DotNet.Cli.Utils/DotnetFiles.cs index 1ff66292e..7ab26fdff 100644 --- a/src/Microsoft.DotNet.Cli.Utils/DotnetFiles.cs +++ b/src/Microsoft.DotNet.Cli.Utils/DotnetFiles.cs @@ -4,7 +4,7 @@ using System; using System.IO; using System.Reflection; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs b/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs index aa7334532..e3f0ba663 100644 --- a/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs +++ b/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Cli.Utils { diff --git a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs index abcea770b..c84f6b6f0 100644 --- a/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs +++ b/src/Microsoft.DotNet.Cli.Utils/PathUtility.cs @@ -3,7 +3,7 @@ using System; using System.IO; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.Tools.Common { diff --git a/src/Microsoft.DotNet.Cli.Utils/ProjectDependenciesCommandFactory.cs b/src/Microsoft.DotNet.Cli.Utils/ProjectDependenciesCommandFactory.cs index 0f5cb31cf..43dc094e3 100644 --- a/src/Microsoft.DotNet.Cli.Utils/ProjectDependenciesCommandFactory.cs +++ b/src/Microsoft.DotNet.Cli.Utils/ProjectDependenciesCommandFactory.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using NuGet.Frameworks; namespace Microsoft.DotNet.Cli.Utils diff --git a/src/Microsoft.DotNet.Cli.Utils/ScriptExecutor.cs b/src/Microsoft.DotNet.Cli.Utils/ScriptExecutor.cs index e2dbd3b4d..31d822134 100644 --- a/src/Microsoft.DotNet.Cli.Utils/ScriptExecutor.cs +++ b/src/Microsoft.DotNet.Cli.Utils/ScriptExecutor.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.DotNet.Cli.Utils.CommandParsing; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel; namespace Microsoft.DotNet.Cli.Utils diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index 4ca0fc956..9b717250a 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -8,6 +8,7 @@ "Microsoft.DotNet.ProjectModel": { "target": "project" }, + "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914", "NuGet.Versioning": "3.5.0-rc1-1697", "NuGet.Packaging": "3.5.0-rc1-1697", "NuGet.Frameworks": "3.5.0-rc1-1697", diff --git a/src/Microsoft.DotNet.ProjectModel.Workspaces/ProjectJsonWorkspace.cs b/src/Microsoft.DotNet.ProjectModel.Workspaces/ProjectJsonWorkspace.cs index 6d3c1da58..43b50b3fd 100644 --- a/src/Microsoft.DotNet.ProjectModel.Workspaces/ProjectJsonWorkspace.cs +++ b/src/Microsoft.DotNet.ProjectModel.Workspaces/ProjectJsonWorkspace.cs @@ -12,7 +12,7 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.Text; using Microsoft.DotNet.Cli.Compiler.Common; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel.Compilation; using Microsoft.DotNet.ProjectModel.Files; using NuGet.Frameworks; @@ -227,7 +227,7 @@ namespace Microsoft.DotNet.ProjectModel.Workspaces { keyFile = Path.GetFullPath(Path.Combine(projectDirectory, compilerOptions.KeyFile)); - if (RuntimeEnvironment.OperatingSystemPlatform != InternalAbstractions.Platform.Windows || useOssSigning) + if (RuntimeEnvironment.OperatingSystemPlatform != PlatformAbstractions.Platform.Windows || useOssSigning) { return options.WithCryptoPublicKey( SnkUtils.ExtractPublicKey(File.ReadAllBytes(keyFile))); diff --git a/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json b/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json index 27f9ff6b2..6fb698bf3 100644 --- a/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json +++ b/src/Microsoft.DotNet.ProjectModel.Workspaces/project.json @@ -10,7 +10,8 @@ "Microsoft.DotNet.Compiler.Common": { "target": "project" }, - "Microsoft.CodeAnalysis.CSharp.Workspaces": "1.3.0" + "Microsoft.CodeAnalysis.CSharp.Workspaces": "1.3.0", + "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.ProjectModel/Compilation/LibraryAsset.cs b/src/Microsoft.DotNet.ProjectModel/Compilation/LibraryAsset.cs index 3294e24fe..acd983dbf 100644 --- a/src/Microsoft.DotNet.ProjectModel/Compilation/LibraryAsset.cs +++ b/src/Microsoft.DotNet.ProjectModel/Compilation/LibraryAsset.cs @@ -5,7 +5,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel.Utilities; namespace Microsoft.DotNet.ProjectModel.Compilation diff --git a/src/Microsoft.DotNet.ProjectModel/FileNameSuffixes.cs b/src/Microsoft.DotNet.ProjectModel/FileNameSuffixes.cs index a8559daee..231162a31 100644 --- a/src/Microsoft.DotNet.ProjectModel/FileNameSuffixes.cs +++ b/src/Microsoft.DotNet.ProjectModel/FileNameSuffixes.cs @@ -1,5 +1,5 @@ using System; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.ProjectModel { diff --git a/src/Microsoft.DotNet.ProjectModel/FileSystemGlobbing/FilePatternMatch.cs b/src/Microsoft.DotNet.ProjectModel/FileSystemGlobbing/FilePatternMatch.cs index e37232103..498f976b0 100644 --- a/src/Microsoft.DotNet.ProjectModel/FileSystemGlobbing/FilePatternMatch.cs +++ b/src/Microsoft.DotNet.ProjectModel/FileSystemGlobbing/FilePatternMatch.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.ProjectModel.FileSystemGlobbing { diff --git a/src/Microsoft.DotNet.ProjectModel/Files/IncludeEntry.cs b/src/Microsoft.DotNet.ProjectModel/Files/IncludeEntry.cs index 40d8417ce..aeb99cdc5 100644 --- a/src/Microsoft.DotNet.ProjectModel/Files/IncludeEntry.cs +++ b/src/Microsoft.DotNet.ProjectModel/Files/IncludeEntry.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.ProjectModel.Files { diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryIdentity.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryIdentity.cs index 2833b012f..581974882 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryIdentity.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryIdentity.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using NuGet.Versioning; namespace Microsoft.DotNet.ProjectModel.Graph diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs index e6bea67e5..77af3d1a0 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs @@ -3,7 +3,7 @@ using System; using System.Text; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using NuGet.Versioning; namespace Microsoft.DotNet.ProjectModel.Graph diff --git a/src/Microsoft.DotNet.ProjectModel/LibraryDescription.cs b/src/Microsoft.DotNet.ProjectModel/LibraryDescription.cs index a5079473a..a93461415 100644 --- a/src/Microsoft.DotNet.ProjectModel/LibraryDescription.cs +++ b/src/Microsoft.DotNet.ProjectModel/LibraryDescription.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel.Graph; using NuGet.Frameworks; diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs index 58b10ccf5..27d4e9b98 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Text; using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel.Graph; using Microsoft.DotNet.ProjectModel.Resolution; using NuGet.Common; diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContextIdentity.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContextIdentity.cs index 6b5d8724f..7fd1bd33d 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContextIdentity.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContextIdentity.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using NuGet.Frameworks; namespace Microsoft.DotNet.ProjectModel diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/FrameworkReferenceResolver.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/FrameworkReferenceResolver.cs index 5b2a77dec..679128952 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/FrameworkReferenceResolver.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/FrameworkReferenceResolver.cs @@ -8,7 +8,7 @@ using System.IO; using System.Linq; using System.Runtime.Versioning; using System.Xml.Linq; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; using Microsoft.DotNet.ProjectModel.Utilities; using Microsoft.Extensions.DependencyModel.Resolution; using NuGet.Frameworks; diff --git a/src/Microsoft.DotNet.ProjectModel/RuntimeEnvironmentRidExtensions.cs b/src/Microsoft.DotNet.ProjectModel/RuntimeEnvironmentRidExtensions.cs index f5d439157..a0371e268 100644 --- a/src/Microsoft.DotNet.ProjectModel/RuntimeEnvironmentRidExtensions.cs +++ b/src/Microsoft.DotNet.ProjectModel/RuntimeEnvironmentRidExtensions.cs @@ -1,5 +1,7 @@ -using System; + +using System; using System.Collections.Generic; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.InternalAbstractions { diff --git a/src/Microsoft.DotNet.ProjectModel/Utilities/PathUtility.cs b/src/Microsoft.DotNet.ProjectModel/Utilities/PathUtility.cs index dfdc79214..0f0bfc653 100644 --- a/src/Microsoft.DotNet.ProjectModel/Utilities/PathUtility.cs +++ b/src/Microsoft.DotNet.ProjectModel/Utilities/PathUtility.cs @@ -3,7 +3,7 @@ using System; using System.IO; -using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.PlatformAbstractions; namespace Microsoft.DotNet.ProjectModel.Utilities { diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index b1dca0083..c129163fa 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -5,7 +5,8 @@ }, "description": "Types to model a .NET Project", "dependencies": { - "Microsoft.Extensions.DependencyModel": "1.0.1-beta-003394", + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000914", + "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914", "Newtonsoft.Json": "9.0.1", "NuGet.Configuration": "3.5.0-rc1-1697", "NuGet.Packaging": "3.5.0-rc1-1697", diff --git a/src/dotnet/commands/dotnet-new/CSharp_xunittest/project.json.template b/src/dotnet/commands/dotnet-new/CSharp_xunittest/project.json.template index eb7568bbe..888835ba0 100644 --- a/src/dotnet/commands/dotnet-new/CSharp_xunittest/project.json.template +++ b/src/dotnet/commands/dotnet-new/CSharp_xunittest/project.json.template @@ -6,7 +6,8 @@ "dependencies": { "System.Runtime.Serialization.Primitives": "4.1.1", "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" + "dotnet-test-xunit": "1.0.0-rc2-192208-24", + "Microsoft.DotNet.InternalAbstractions": "1.0.0" }, "testRunner": "xunit", "frameworks": { diff --git a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs index 777e03eea..20ec7c904 100644 --- a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs +++ b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs @@ -48,9 +48,7 @@ namespace Microsoft.DotNet.Tests .WithWorkingDirectory(rootPath) .ExecuteWithCapturedOutput("test") .Should() - .Pass() - .And - .NotHaveStdErr(); + .Pass(); } From 0a55a7cb99851d3aa490938dc55b4faa6f7c14fc Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Mon, 8 Aug 2016 12:19:10 -0700 Subject: [PATCH 149/165] Updating the msbuild changes to handle DependencyModel coming from core-setup instead of a project dependency. --- build/test/TestPackageProjects.targets | 9 --------- src/Microsoft.DotNet.Core.Build.Tasks/project.json | 6 ++---- .../Microsoft.DotNet.Core.Build.Tasks.Tests/project.json | 3 +++ 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/build/test/TestPackageProjects.targets b/build/test/TestPackageProjects.targets index b08231aae..3cf7a2dc8 100644 --- a/build/test/TestPackageProjects.targets +++ b/build/test/TestPackageProjects.targets @@ -197,15 +197,6 @@ False net451;netstandard1.3 - - Microsoft.Extensions.DependencyModel - True - True - 1.0.1-beta- - $(TestPackageBuildVersionSuffix) - False - net451;netstandard1.6 - Microsoft.Extensions.Testing.Abstractions True diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json index 3a8744936..cd63f2b35 100644 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ b/src/Microsoft.DotNet.Core.Build.Tasks/project.json @@ -5,10 +5,8 @@ "warningsAsErrors": true }, "dependencies": { - "Microsoft.Extensions.DependencyModel": { - "target": "project" - }, - "NuGet.ProjectModel": "3.5.0-rc1-1697" + "NuGet.ProjectModel": "3.5.0-rc1-1697", + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000914" }, "frameworks": { "net451": { diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json index 6248490de..fe5ff2535 100644 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json @@ -11,6 +11,9 @@ "Microsoft.DotNet.Core.Build.Tasks": { "target": "project" }, + "Microsoft.DotNet.InternalAbstractions": { + "target": "project" + }, "xunit": "2.1.0", "FluentAssertions.Json": "4.12.0", "dotnet-test-xunit": "1.0.0-rc2-192208-24" From 5c4785e66286c1bfc303c20c0bc30ac1d9f1eae5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Mon, 8 Aug 2016 13:33:14 -0700 Subject: [PATCH 150/165] Removing dependency model from one of the packaged projects in the CLI. --- build/package/Microsoft.DotNet.Cli.Nupkg.targets | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build/package/Microsoft.DotNet.Cli.Nupkg.targets b/build/package/Microsoft.DotNet.Cli.Nupkg.targets index 0edffbed6..6f48f9bec 100644 --- a/build/package/Microsoft.DotNet.Cli.Nupkg.targets +++ b/build/package/Microsoft.DotNet.Cli.Nupkg.targets @@ -39,10 +39,6 @@ Microsoft.DotNet.ProjectModel.Workspaces $(SdkNugetVersion) - - Microsoft.Extensions.DependencyModel - $(DependencyModelAndInternalAbstractionsNugetVersion) - Microsoft.Extensions.Testing.Abstractions $(SdkNugetVersion) From b7b90175f41268fe5aae92e3b3efc64cfce1f5b9 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Mon, 8 Aug 2016 15:35:25 -0700 Subject: [PATCH 151/165] Removing the public types from InternalAbstractions. --- .../project.json | 2 +- build.proj | 14 -- .../CurrentArchitecture.cs | 2 +- .../CurrentPlatform.cs | 2 +- .../project.json | 10 +- .../GetCurrentRuntimeInformation.cs | 2 +- build_projects/dotnet-cli-build/project.json | 3 +- .../shared-build-targets-utils/Utils/Dirs.cs | 2 +- .../Utils/Monikers.cs | 2 +- .../shared-build-targets-utils/project.json | 3 +- .../ApplicationEnvironment.cs | 25 --- .../HashCodeCombiner.cs | 58 ------ .../Native/NativeMethods.Darwin.cs | 55 ------ .../Native/NativeMethods.Unix.cs | 39 ---- .../Native/NativeMethods.Windows.cs | 43 ----- .../Native/PlatformApis.cs | 171 ------------------ .../Platform.cs | 13 -- .../RuntimeEnvironment.cs | 104 ----------- 18 files changed, 13 insertions(+), 537 deletions(-) delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/ApplicationEnvironment.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/HashCodeCombiner.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Darwin.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Unix.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Windows.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/Native/PlatformApis.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/Platform.cs delete mode 100644 src/Microsoft.DotNet.InternalAbstractions/RuntimeEnvironment.cs diff --git a/TestAssets/TestPackages/dotnet-dependency-context-test/project.json b/TestAssets/TestPackages/dotnet-dependency-context-test/project.json index 1f8caa758..851cd35b3 100644 --- a/TestAssets/TestPackages/dotnet-dependency-context-test/project.json +++ b/TestAssets/TestPackages/dotnet-dependency-context-test/project.json @@ -8,7 +8,7 @@ "type": "platform", "version": "1.0.0" }, - "Microsoft.Extensions.DependencyModel": "1.0.1-beta-003395" + "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000914" }, "frameworks": { "netcoreapp1.0": { diff --git a/build.proj b/build.proj index e86fa5a01..2698ce51a 100644 --- a/build.proj +++ b/build.proj @@ -50,24 +50,10 @@ - - - - $(DotnetCliBuildDirectory)/bin/Microsoft.WindowsAzure.Storage.dll - %(Identity)/Microsoft.WindowsAzure.Storage.dll - - - - - - (TValue value, IEqualityComparer comparer) - { - var hashCode = value != null ? comparer.GetHashCode(value) : 0; - Add(hashCode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static HashCodeCombiner Start() - { - return new HashCodeCombiner(0x1505L); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Darwin.cs b/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Darwin.cs deleted file mode 100644 index 36e00d36e..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Darwin.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.InternalAbstractions.Native -{ - internal static partial class NativeMethods - { - public static class Darwin - { - private const int CTL_KERN = 1; - private const int KERN_OSRELEASE = 2; - - public unsafe static string GetKernelRelease() - { - const uint BUFFER_LENGTH = 32; - - var name = stackalloc int[2]; - name[0] = CTL_KERN; - name[1] = KERN_OSRELEASE; - - var buf = stackalloc byte[(int)BUFFER_LENGTH]; - var len = stackalloc uint[1]; - *len = BUFFER_LENGTH; - - try - { - // If the buffer isn't big enough, it seems sysctl still returns 0 and just sets len to the - // necessary buffer size. This appears to be contrary to the man page, but it's easy to detect - // by simply checking len against the buffer length. - if (sysctl(name, 2, buf, len, IntPtr.Zero, 0) == 0 && *len < BUFFER_LENGTH) - { - return Marshal.PtrToStringAnsi((IntPtr)buf, (int)*len); - } - } - catch (Exception ex) - { - throw new PlatformNotSupportedException("Error reading Darwin Kernel Version", ex); - } - throw new PlatformNotSupportedException("Unknown error reading Darwin Kernel Version"); - } - - [DllImport("libc")] - private unsafe static extern int sysctl( - int* name, - uint namelen, - byte* oldp, - uint* oldlenp, - IntPtr newp, - uint newlen); - } - } -} diff --git a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Unix.cs b/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Unix.cs deleted file mode 100644 index a4ab8376d..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Unix.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#if NET451 - -using System; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.InternalAbstractions.Native -{ - internal static partial class NativeMethods - { - public static class Unix - { - public unsafe static string GetUname() - { - // Utsname shouldn't be larger than 2K - var buf = stackalloc byte[2048]; - - try - { - if (uname((IntPtr)buf) == 0) - { - return Marshal.PtrToStringAnsi((IntPtr)buf); - } - } - catch (Exception ex) - { - throw new PlatformNotSupportedException("Error reading Unix name", ex); - } - throw new PlatformNotSupportedException("Unknown error reading Unix name"); - } - - [DllImport("libc")] - private static extern int uname(IntPtr utsname); - } - } -} -#endif \ No newline at end of file diff --git a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Windows.cs b/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Windows.cs deleted file mode 100644 index bd51068b8..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/Native/NativeMethods.Windows.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.InternalAbstractions.Native -{ - internal static partial class NativeMethods - { - public static class Windows - { - [StructLayout(LayoutKind.Sequential)] - internal struct RTL_OSVERSIONINFOEX - { - internal uint dwOSVersionInfoSize; - internal uint dwMajorVersion; - internal uint dwMinorVersion; - internal uint dwBuildNumber; - internal uint dwPlatformId; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - internal string szCSDVersion; - } - - // This call avoids the shimming Windows does to report old versions - [DllImport("ntdll")] - private static extern int RtlGetVersion(out RTL_OSVERSIONINFOEX lpVersionInformation); - - internal static string RtlGetVersion() - { - RTL_OSVERSIONINFOEX osvi = new RTL_OSVERSIONINFOEX(); - osvi.dwOSVersionInfoSize = (uint)Marshal.SizeOf(osvi); - if (RtlGetVersion(out osvi) == 0) - { - return $"{osvi.dwMajorVersion}.{osvi.dwMinorVersion}.{osvi.dwBuildNumber}"; - } - else - { - return null; - } - } - } - } -} diff --git a/src/Microsoft.DotNet.InternalAbstractions/Native/PlatformApis.cs b/src/Microsoft.DotNet.InternalAbstractions/Native/PlatformApis.cs deleted file mode 100644 index 1a46ef580..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/Native/PlatformApis.cs +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.IO; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.InternalAbstractions.Native -{ - internal static class PlatformApis - { - private class DistroInfo - { - public string Id; - public string VersionId; - } - - private static readonly Lazy _platform = new Lazy(DetermineOSPlatform); - private static readonly Lazy _distroInfo = new Lazy(LoadDistroInfo); - - public static string GetOSName() - { - switch (GetOSPlatform()) - { - case Platform.Windows: - return "Windows"; - case Platform.Linux: - return GetDistroId() ?? "Linux"; - case Platform.Darwin: - return "Mac OS X"; - default: - return "Unknown"; - } - } - - public static string GetOSVersion() - { - switch (GetOSPlatform()) - { - case Platform.Windows: - return NativeMethods.Windows.RtlGetVersion() ?? string.Empty; - case Platform.Linux: - return GetDistroVersionId() ?? string.Empty; - case Platform.Darwin: - return GetDarwinVersion() ?? string.Empty; - default: - return string.Empty; - } - } - - private static string GetDarwinVersion() - { - Version version; - var kernelRelease = NativeMethods.Darwin.GetKernelRelease(); - if (!Version.TryParse(kernelRelease, out version) || version.Major < 5) - { - // 10.0 covers all versions prior to Darwin 5 - // Similarly, if the version is not a valid version number, but we have still detected that it is Darwin, we just assume - // it is OS X 10.0 - return "10.0"; - } - else - { - // Mac OS X 10.1 mapped to Darwin 5.x, and the mapping continues that way - // So just subtract 4 from the Darwin version. - // https://en.wikipedia.org/wiki/Darwin_%28operating_system%29 - return $"10.{version.Major - 4}"; - } - } - - public static Platform GetOSPlatform() - { - return _platform.Value; - } - - private static string GetDistroId() - { - return _distroInfo.Value?.Id; - } - - private static string GetDistroVersionId() - { - return _distroInfo.Value?.VersionId; - } - - private static DistroInfo LoadDistroInfo() - { - // Sample os-release file: - // NAME="Ubuntu" - // VERSION = "14.04.3 LTS, Trusty Tahr" - // ID = ubuntu - // ID_LIKE = debian - // PRETTY_NAME = "Ubuntu 14.04.3 LTS" - // VERSION_ID = "14.04" - // HOME_URL = "http://www.ubuntu.com/" - // SUPPORT_URL = "http://help.ubuntu.com/" - // BUG_REPORT_URL = "http://bugs.launchpad.net/ubuntu/" - // We use ID and VERSION_ID - - if (File.Exists("/etc/os-release")) - { - var lines = File.ReadAllLines("/etc/os-release"); - var result = new DistroInfo(); - foreach (var line in lines) - { - if (line.StartsWith("ID=", StringComparison.Ordinal)) - { - result.Id = line.Substring(3).Trim('"', '\''); - } - else if (line.StartsWith("VERSION_ID=", StringComparison.Ordinal)) - { - result.VersionId = line.Substring(11).Trim('"', '\''); - } - } - return result; - } - return null; - } - - // I could probably have just done one method signature and put the #if inside the body but the implementations - // are just completely different so I wanted to make that clear by putting the whole thing inside the #if. -#if NET451 - private static Platform DetermineOSPlatform() - { - var platform = (int)Environment.OSVersion.Platform; - var isWindows = (platform != 4) && (platform != 6) && (platform != 128); - - if (isWindows) - { - return Platform.Windows; - } - else - { - try - { - var uname = NativeMethods.Unix.GetUname(); - if (string.Equals(uname, "Darwin", StringComparison.OrdinalIgnoreCase)) - { - return Platform.Darwin; - } - if (string.Equals(uname, "Linux", StringComparison.OrdinalIgnoreCase)) - { - return Platform.Linux; - } - } - catch - { - } - return Platform.Unknown; - } - } -#else - private static Platform DetermineOSPlatform() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return Platform.Windows; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - return Platform.Linux; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - return Platform.Darwin; - } - return Platform.Unknown; - } -#endif - } -} diff --git a/src/Microsoft.DotNet.InternalAbstractions/Platform.cs b/src/Microsoft.DotNet.InternalAbstractions/Platform.cs deleted file mode 100644 index c289a834c..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/Platform.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright(c) .NET Foundation and contributors.All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.InternalAbstractions -{ - public enum Platform - { - Unknown = 0, - Windows = 1, - Linux = 2, - Darwin = 3 - } -} diff --git a/src/Microsoft.DotNet.InternalAbstractions/RuntimeEnvironment.cs b/src/Microsoft.DotNet.InternalAbstractions/RuntimeEnvironment.cs deleted file mode 100644 index 1e754ee1e..000000000 --- a/src/Microsoft.DotNet.InternalAbstractions/RuntimeEnvironment.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright(c) .NET Foundation and contributors.All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using Microsoft.DotNet.InternalAbstractions.Native; - -namespace Microsoft.DotNet.InternalAbstractions -{ - public static class RuntimeEnvironment - { - private static readonly string OverrideEnvironmentVariableName = "DOTNET_RUNTIME_ID"; - - public static Platform OperatingSystemPlatform { get; } = PlatformApis.GetOSPlatform(); - - public static string OperatingSystemVersion { get; } = PlatformApis.GetOSVersion(); - - public static string OperatingSystem { get; } = PlatformApis.GetOSName(); - - public static string RuntimeArchitecture { get; } = GetArch(); - - private static string GetArch() - { -#if NET451 - return Environment.Is64BitProcess ? "x64" : "x86"; -#else - return IntPtr.Size == 8 ? "x64" : "x86"; -#endif - } - - public static string GetRuntimeIdentifier() - { - return - Environment.GetEnvironmentVariable(OverrideEnvironmentVariableName) ?? - (GetRIDOS() + GetRIDVersion() + GetRIDArch()); - } - - private static string GetRIDArch() - { - if (!string.IsNullOrEmpty(RuntimeArchitecture)) - { - return $"-{RuntimeArchitecture.ToLowerInvariant()}"; - } - return string.Empty; - } - - private static string GetRIDVersion() - { - // Windows RIDs do not separate OS name and version by "." due to legacy - // Others do, that's why we have the "." prefix on them below - switch (OperatingSystemPlatform) - { - case Platform.Windows: - return GetWindowsProductVersion(); - case Platform.Linux: - return $".{OperatingSystemVersion}"; - case Platform.Darwin: - return $".{OperatingSystemVersion}"; - default: - return string.Empty; // Unknown Platform? Unknown Version! - } - } - - private static string GetWindowsProductVersion() - { - var ver = Version.Parse(OperatingSystemVersion); - if (ver.Major == 6) - { - if (ver.Minor == 1) - { - return "7"; - } - else if (ver.Minor == 2) - { - return "8"; - } - else if (ver.Minor == 3) - { - return "81"; - } - } - else if (ver.Major == 10 && ver.Minor == 0) - { - // Not sure if there will be 10.x (where x > 0) or even 11, so let's be defensive. - return "10"; - } - return string.Empty; // Unknown version - } - - private static string GetRIDOS() - { - switch (OperatingSystemPlatform) - { - case Platform.Windows: - return "win"; - case Platform.Linux: - return OperatingSystem.ToLowerInvariant(); - case Platform.Darwin: - return "osx"; - default: - return "unknown"; - } - } - } -} From dc7f1fdf840abcd163795a1a3e92743a2272d683 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 9 Aug 2016 11:05:00 -0700 Subject: [PATCH 152/165] Updating the xunit version to one that does not depend on internalabstractions. --- .../MultipleFrameworkProject/project.json | 2 +- .../NetCoreAppOnlyProject/project.json | 2 +- build.proj | 16 ++++++++++++++++ src/dotnet/MulticoreJitProfilePathCalculator.cs | 2 +- src/dotnet/Program.cs | 2 +- src/dotnet/Telemetry.cs | 2 +- .../dotnet-build3/MSBuildForwardingApp.cs | 2 +- src/dotnet/commands/dotnet-new/Program.cs | 2 +- src/dotnet/project.json | 3 ++- test/ArgumentForwardingTests/project.json | 3 ++- test/EndToEnd/EndToEndTest.cs | 1 + test/EndToEnd/project.json | 3 ++- test/Kestrel.Tests/project.json | 2 +- .../GivenAProjectPathCommandResolver.cs | 2 +- .../GivenAnAppBaseCommandResolver.cs | 2 +- .../project.json | 3 ++- .../project.json | 2 +- .../project.json | 2 +- .../project.json | 2 +- .../project.json | 2 +- .../project.json | 2 +- .../WindowsOnlyFactAttribute.cs | 2 +- .../project.json | 5 +++-- test/Performance/project.json | 2 +- test/ScriptExecutorTests/project.json | 2 +- .../project.json | 2 +- .../project.json | 2 +- test/binding-redirects.Tests/project.json | 2 +- test/crossgen.Tests/project.json | 2 +- test/dotnet-build3.Tests/project.json | 2 +- test/dotnet-compile-fsc.Tests/project.json | 2 +- test/dotnet-compile.Tests/project.json | 2 +- test/dotnet-compile.UnitTests/project.json | 2 +- test/dotnet-new.Tests/project.json | 2 +- test/dotnet-pack.Tests/project.json | 2 +- test/dotnet-publish.Tests/project.json | 2 +- test/dotnet-resgen.Tests/project.json | 2 +- test/dotnet-run.Tests/project.json | 2 +- test/dotnet-run.UnitTests/project.json | 2 +- ...seDotnetTestE2EInDesignTimeForMultipleTFms.cs | 1 + test/dotnet-test.Tests/project.json | 3 ++- test/dotnet-test.UnitTests/project.json | 2 +- .../GivenThatIWantToManageMulticoreJIT.cs | 2 +- test/dotnet.Tests/project.json | 3 ++- 44 files changed, 67 insertions(+), 42 deletions(-) diff --git a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json index f0c5b4383..e56a3ac09 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json @@ -1,7 +1,7 @@ { "version": "1.0.0-*", "dependencies": { - "dotnet-test-xunit": "1.0.0-rc2-192208-24", + "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.NETCore.Platforms": "1.0.1", "xunit": "2.1.0", "Microsoft.DotNet.InternalAbstractions": { diff --git a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json index a90f46cc5..e56c71483 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json @@ -8,7 +8,7 @@ "System.Linq.Expressions": "4.1.0", "System.Runtime.Serialization.Primitives": "4.1.1", "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24", + "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.InternalAbstractions": { "target": "project" } diff --git a/build.proj b/build.proj index 2698ce51a..1bd77c031 100644 --- a/build.proj +++ b/build.proj @@ -50,10 +50,26 @@ + + + + + Microsoft.WindowsAzure.Storage.dll + + + Microsoft.DotNet.PlatformAbstractions.dll + + + + + Date: Tue, 9 Aug 2016 14:26:14 -0700 Subject: [PATCH 153/165] Updating the xunit version to match the new version of dotnet-test-xunit. --- NuGet.Config | 1 + .../ProjectsWithTests/MultipleFrameworkProject/project.json | 6 +----- .../ProjectsWithTests/NetCoreAppOnlyProject/project.json | 2 +- test/ArgumentForwardingTests/project.json | 2 +- test/EndToEnd/project.json | 2 +- test/Installer/Microsoft.DotNet.Cli.Msi.Tests/project.json | 2 +- test/Kestrel.Tests/project.json | 2 +- test/Microsoft.DotNet.Cli.Utils.Tests/project.json | 2 +- test/Microsoft.DotNet.Compiler.Common.Tests/project.json | 2 +- test/Microsoft.DotNet.Configurer.UnitTests/project.json | 2 +- test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json | 2 +- .../Microsoft.DotNet.ProjectModel.Loader.Tests/project.json | 2 +- test/Microsoft.DotNet.ProjectModel.Tests/project.json | 2 +- test/Microsoft.DotNet.Tools.Tests.Utilities/project.json | 2 +- test/Performance/project.json | 2 +- test/ScriptExecutorTests/project.json | 2 +- .../project.json | 2 +- .../project.json | 2 +- test/binding-redirects.Tests/project.json | 2 +- test/crossgen.Tests/project.json | 2 +- test/dotnet-build3.Tests/project.json | 2 +- test/dotnet-compile-fsc.Tests/project.json | 2 +- test/dotnet-compile.Tests/project.json | 2 +- test/dotnet-compile.UnitTests/project.json | 2 +- test/dotnet-new.Tests/project.json | 2 +- test/dotnet-pack.Tests/project.json | 2 +- test/dotnet-publish.Tests/project.json | 2 +- test/dotnet-resgen.Tests/project.json | 2 +- test/dotnet-run.Tests/project.json | 2 +- test/dotnet-run.UnitTests/project.json | 2 +- test/dotnet-test.Tests/project.json | 2 +- test/dotnet-test.UnitTests/project.json | 2 +- test/dotnet.Tests/project.json | 2 +- 33 files changed, 33 insertions(+), 36 deletions(-) diff --git a/NuGet.Config b/NuGet.Config index 73b213125..6e43f2b13 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -5,6 +5,7 @@ + diff --git a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json index e56a3ac09..d8ae3f3a0 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/MultipleFrameworkProject/project.json @@ -2,11 +2,7 @@ "version": "1.0.0-*", "dependencies": { "dotnet-test-xunit": "1.0.0-rc2-318883-21", - "Microsoft.NETCore.Platforms": "1.0.1", - "xunit": "2.1.0", - "Microsoft.DotNet.InternalAbstractions": { - "target": "project" - } + "xunit": "2.2.0-beta3-build3330" }, "frameworks": { "netcoreapp1.0": { diff --git a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json index e56c71483..84c58b6d9 100644 --- a/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json +++ b/TestAssets/TestProjects/ProjectsWithTests/NetCoreAppOnlyProject/project.json @@ -7,7 +7,7 @@ }, "System.Linq.Expressions": "4.1.0", "System.Runtime.Serialization.Primitives": "4.1.1", - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.InternalAbstractions": { "target": "project" diff --git a/test/ArgumentForwardingTests/project.json b/test/ArgumentForwardingTests/project.json index b713a6a7e..ae0a55287 100644 --- a/test/ArgumentForwardingTests/project.json +++ b/test/ArgumentForwardingTests/project.json @@ -18,7 +18,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, diff --git a/test/EndToEnd/project.json b/test/EndToEnd/project.json index 4ce0a4e06..1c9ded669 100644 --- a/test/EndToEnd/project.json +++ b/test/EndToEnd/project.json @@ -18,7 +18,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "xunit.netcore.extensions": "1.0.0-prerelease-00206", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" diff --git a/test/Installer/Microsoft.DotNet.Cli.Msi.Tests/project.json b/test/Installer/Microsoft.DotNet.Cli.Msi.Tests/project.json index fb7c04bd1..4b2fac251 100644 --- a/test/Installer/Microsoft.DotNet.Cli.Msi.Tests/project.json +++ b/test/Installer/Microsoft.DotNet.Cli.Msi.Tests/project.json @@ -1,6 +1,6 @@ { "dependencies": { - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "xunit.runner.console": "2.1.0", "Microsoft.Deployment.WindowsInstaller": "1.0.0" }, diff --git a/test/Kestrel.Tests/project.json b/test/Kestrel.Tests/project.json index 655e32bb1..4efa9e599 100644 --- a/test/Kestrel.Tests/project.json +++ b/test/Kestrel.Tests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json index 4116642d9..4345dfcec 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json @@ -34,7 +34,7 @@ "target": "project" }, "moq.netcore": "4.4.0-beta8", - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, diff --git a/test/Microsoft.DotNet.Compiler.Common.Tests/project.json b/test/Microsoft.DotNet.Compiler.Common.Tests/project.json index dac73164c..69b33d8a4 100644 --- a/test/Microsoft.DotNet.Compiler.Common.Tests/project.json +++ b/test/Microsoft.DotNet.Compiler.Common.Tests/project.json @@ -15,7 +15,7 @@ "Microsoft.DotNet.Compiler.Common": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/Microsoft.DotNet.Configurer.UnitTests/project.json b/test/Microsoft.DotNet.Configurer.UnitTests/project.json index 85aafc6f6..f85d1c6a1 100644 --- a/test/Microsoft.DotNet.Configurer.UnitTests/project.json +++ b/test/Microsoft.DotNet.Configurer.UnitTests/project.json @@ -20,7 +20,7 @@ }, "FluentAssertions": "4.0.0", "moq.netcore": "4.4.0-beta8", - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json index 1a059db2d..48af439a1 100644 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json +++ b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json @@ -14,7 +14,7 @@ "Microsoft.DotNet.InternalAbstractions": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "FluentAssertions.Json": "4.12.0", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, diff --git a/test/Microsoft.DotNet.ProjectModel.Loader.Tests/project.json b/test/Microsoft.DotNet.ProjectModel.Loader.Tests/project.json index d132bbe0a..36e1c8afc 100644 --- a/test/Microsoft.DotNet.ProjectModel.Loader.Tests/project.json +++ b/test/Microsoft.DotNet.ProjectModel.Loader.Tests/project.json @@ -14,7 +14,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/project.json b/test/Microsoft.DotNet.ProjectModel.Tests/project.json index cd8d06333..19416b9e2 100644 --- a/test/Microsoft.DotNet.ProjectModel.Tests/project.json +++ b/test/Microsoft.DotNet.ProjectModel.Tests/project.json @@ -20,7 +20,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/project.json b/test/Microsoft.DotNet.Tools.Tests.Utilities/project.json index 3b16818c1..19ba7bd4a 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/project.json +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/project.json @@ -6,7 +6,7 @@ }, "dependencies": { "FluentAssertions": "4.0.0", - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.TestFramework": { "target": "project" }, "Microsoft.DotNet.Cli.Utils": { "target": "project" }, diff --git a/test/Performance/project.json b/test/Performance/project.json index 238d5a3fa..d7f2f52fc 100644 --- a/test/Performance/project.json +++ b/test/Performance/project.json @@ -15,7 +15,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "xunit.netcore.extensions": "1.0.0-prerelease-00206", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.xunit.performance": "1.0.0-alpha-build0028" diff --git a/test/ScriptExecutorTests/project.json b/test/ScriptExecutorTests/project.json index 60f490c56..9497c376d 100644 --- a/test/ScriptExecutorTests/project.json +++ b/test/ScriptExecutorTests/project.json @@ -14,7 +14,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.Tests/project.json b/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.Tests/project.json index dc3f56551..ff1ff947d 100644 --- a/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.Tests/project.json +++ b/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.Tests/project.json @@ -18,7 +18,7 @@ "TestAppWithPortablePdbs": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "FluentAssertions": "4.2.2" }, diff --git a/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.UnitTests/project.json b/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.UnitTests/project.json index dd3ee9601..725ead2b6 100644 --- a/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.UnitTests/project.json +++ b/test/TestingAbstractions/Microsoft.Extensions.Testing.Abstractions.UnitTests/project.json @@ -13,7 +13,7 @@ "TestAppWithPortablePdbs": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "FluentAssertions": "4.2.2", "moq.netcore": "4.4.0-beta8" diff --git a/test/binding-redirects.Tests/project.json b/test/binding-redirects.Tests/project.json index f769133ee..b32983d07 100644 --- a/test/binding-redirects.Tests/project.json +++ b/test/binding-redirects.Tests/project.json @@ -1,7 +1,7 @@ { "version": "1.0.0-*", "dependencies": { - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.NETCore.Platforms": "1.0.1", "Microsoft.DotNet.Tools.Tests.Utilities": { diff --git a/test/crossgen.Tests/project.json b/test/crossgen.Tests/project.json index 851d8ac06..25d0fcf46 100644 --- a/test/crossgen.Tests/project.json +++ b/test/crossgen.Tests/project.json @@ -11,7 +11,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-build3.Tests/project.json b/test/dotnet-build3.Tests/project.json index 14ea979a7..1d32c9ace 100644 --- a/test/dotnet-build3.Tests/project.json +++ b/test/dotnet-build3.Tests/project.json @@ -9,7 +9,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-compile-fsc.Tests/project.json b/test/dotnet-compile-fsc.Tests/project.json index 679c37dea..4b20d150c 100644 --- a/test/dotnet-compile-fsc.Tests/project.json +++ b/test/dotnet-compile-fsc.Tests/project.json @@ -11,7 +11,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-compile.Tests/project.json b/test/dotnet-compile.Tests/project.json index cd3137605..e2bcbf3b0 100644 --- a/test/dotnet-compile.Tests/project.json +++ b/test/dotnet-compile.Tests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-compile.UnitTests/project.json b/test/dotnet-compile.UnitTests/project.json index e20e78a70..41d3bac9f 100644 --- a/test/dotnet-compile.UnitTests/project.json +++ b/test/dotnet-compile.UnitTests/project.json @@ -29,7 +29,7 @@ "Microsoft.DotNet.ProjectModel": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "moq.netcore": "4.4.0-beta8", "FluentAssertions": "4.2.2" diff --git a/test/dotnet-new.Tests/project.json b/test/dotnet-new.Tests/project.json index 4bb0db68c..72cbe7fe2 100644 --- a/test/dotnet-new.Tests/project.json +++ b/test/dotnet-new.Tests/project.json @@ -12,7 +12,7 @@ "dotnet": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-pack.Tests/project.json b/test/dotnet-pack.Tests/project.json index 7ffcb0226..7accd4a0c 100644 --- a/test/dotnet-pack.Tests/project.json +++ b/test/dotnet-pack.Tests/project.json @@ -13,7 +13,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-publish.Tests/project.json b/test/dotnet-publish.Tests/project.json index 833d095aa..a7ee7e7e2 100644 --- a/test/dotnet-publish.Tests/project.json +++ b/test/dotnet-publish.Tests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "xunit.netcore.extensions": "1.0.0-prerelease-00206", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" diff --git a/test/dotnet-resgen.Tests/project.json b/test/dotnet-resgen.Tests/project.json index 2050cc53a..4f3404432 100644 --- a/test/dotnet-resgen.Tests/project.json +++ b/test/dotnet-resgen.Tests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "xunit.netcore.extensions": "1.0.0-prerelease-00206", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, diff --git a/test/dotnet-run.Tests/project.json b/test/dotnet-run.Tests/project.json index 655e32bb1..4efa9e599 100644 --- a/test/dotnet-run.Tests/project.json +++ b/test/dotnet-run.Tests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Cli.Utils": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, "frameworks": { diff --git a/test/dotnet-run.UnitTests/project.json b/test/dotnet-run.UnitTests/project.json index 8d6e7bd89..3e800d3b2 100644 --- a/test/dotnet-run.UnitTests/project.json +++ b/test/dotnet-run.UnitTests/project.json @@ -12,7 +12,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "moq.netcore": "4.4.0-beta8", "dotnet-test-xunit": "1.0.0-rc2-318883-21" }, diff --git a/test/dotnet-test.Tests/project.json b/test/dotnet-test.Tests/project.json index 64b3ff66d..57bda1725 100644 --- a/test/dotnet-test.Tests/project.json +++ b/test/dotnet-test.Tests/project.json @@ -18,7 +18,7 @@ "System.Net.NameResolution": "4.0.0", "System.Net.Sockets": "4.1.0", "System.Runtime.Serialization.Primitives": "4.1.1", - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, diff --git a/test/dotnet-test.UnitTests/project.json b/test/dotnet-test.UnitTests/project.json index cbd0443ad..d8a630ca6 100644 --- a/test/dotnet-test.UnitTests/project.json +++ b/test/dotnet-test.UnitTests/project.json @@ -13,7 +13,7 @@ "version": "4.0.0", "exclude": "Compile" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "moq.netcore": "4.4.0-beta8", "FluentAssertions": "4.2.2" diff --git a/test/dotnet.Tests/project.json b/test/dotnet.Tests/project.json index 4ac8f274c..1ff981ae9 100644 --- a/test/dotnet.Tests/project.json +++ b/test/dotnet.Tests/project.json @@ -16,7 +16,7 @@ "target": "project", "type": "build" }, - "xunit": "2.1.0", + "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-318883-21", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, From 8fa2d35291bde68ad2cd25529a15a61ff3720e43 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 9 Aug 2016 15:33:48 -0700 Subject: [PATCH 154/165] Updating dotnet new test so that it does not use project dependencies and honors package dependencies. --- .../GivenThatIWantANewCSxUnitProject.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs index 20ec7c904..3aa000589 100644 --- a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs +++ b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs @@ -36,16 +36,20 @@ namespace Microsoft.DotNet.Tests [Fact] public void When_dotnet_test_is_invoked_Then_tests_run_without_errors() { + const string testFolder = "test"; var rootPath = Temp.CreateDirectory().Path; + var testDirectory = Directory.CreateDirectory(Path.Combine(rootPath, testFolder)).FullName; - new TestCommand("dotnet") { WorkingDirectory = rootPath } + File.WriteAllText(Path.Combine(rootPath, "global.json"), $"{{ \"projects\": [\"{testFolder}\"] }}"); + + new TestCommand("dotnet") { WorkingDirectory = testDirectory } .Execute("new --type xunittest"); - new TestCommand("dotnet") { WorkingDirectory = rootPath } + new TestCommand("dotnet") { WorkingDirectory = testDirectory } .Execute("restore"); var buildResult = new TestCommand("dotnet") - .WithWorkingDirectory(rootPath) + .WithWorkingDirectory(testDirectory) .ExecuteWithCapturedOutput("test") .Should() .Pass(); From d8e7d3761678fab0189519defa405fecc29f4412 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 9 Aug 2016 16:04:00 -0700 Subject: [PATCH 155/165] Addressing code review comments --- Microsoft.DotNet.Cli.sln | 4 ---- test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs | 4 +++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 6bc2d6330..040cf93cf 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -24,13 +24,9 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.Testin EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}" EndProject -<<<<<<< HEAD -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.DependencyModel", "src\Microsoft.Extensions.DependencyModel\Microsoft.Extensions.DependencyModel.xproj", "{688870C8-9843-4F9E-8576-D39290AD0F25}" -======= Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{0722D325-24C8-4E83-B5AF-0A083E7F0749}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MultiProjectValidator", "tools\MultiProjectValidator\MultiProjectValidator.xproj", "{08A68C6A-86F6-4ED2-89A7-B166D33E9F85}" ->>>>>>> 20c8295... Removing dependency model from CLI repo. EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EndToEnd", "test\EndToEnd\EndToEnd.xproj", "{65741CB1-8AEE-4C66-8198-10A7EA0E4258}" EndProject diff --git a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs index 3aa000589..bd17a041f 100644 --- a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs +++ b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs @@ -52,7 +52,9 @@ namespace Microsoft.DotNet.Tests .WithWorkingDirectory(testDirectory) .ExecuteWithCapturedOutput("test") .Should() - .Pass(); + .Pass() + .And + .NotHaveStdErr();; } From 8bb7e01f0f346eb0227a13123225f0033c7dab44 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 9 Aug 2016 18:16:35 -0700 Subject: [PATCH 156/165] Fixing a version conflict in Testing.Abstractions and bumping InternalsAbstractions version to 2.0.0, since I removed some public APIs from it. --- src/Microsoft.DotNet.InternalAbstractions/project.json | 2 +- src/Microsoft.Extensions.Testing.Abstractions/project.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.DotNet.InternalAbstractions/project.json b/src/Microsoft.DotNet.InternalAbstractions/project.json index c1aedcb31..b9cc5c143 100644 --- a/src/Microsoft.DotNet.InternalAbstractions/project.json +++ b/src/Microsoft.DotNet.InternalAbstractions/project.json @@ -1,6 +1,6 @@ { "description": "Abstractions for making code that uses file system and environment testable.", - "version": "1.0.1-beta-*", + "version": "2.0.0-beta-*", "buildOptions": { "warningsAsErrors": true, "keyFile": "../../tools/Key.snk", diff --git a/src/Microsoft.Extensions.Testing.Abstractions/project.json b/src/Microsoft.Extensions.Testing.Abstractions/project.json index 9ce938ef9..e0a4010ab 100644 --- a/src/Microsoft.Extensions.Testing.Abstractions/project.json +++ b/src/Microsoft.Extensions.Testing.Abstractions/project.json @@ -1,6 +1,6 @@ { "description": "Abstractions for test runners to communicate to a tool, such as Visual Studio.", - "version": "1.0.0-featmsbuild-*", + "version": "1.0.1-featmsbuild-*", "buildOptions": { "warningsAsErrors": true, "allowUnsafe": true, From 75524b0c6a296b79c31aabb83bc3ae24100542b5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 10 Aug 2016 13:39:08 -0700 Subject: [PATCH 157/165] Disabling the net451 discovery tests. --- test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs | 2 +- ...ThatWeWantToUseDotnetTestE2EInDesignTimeForMultipleTFms.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs index bd17a041f..6a9c9e568 100644 --- a/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs +++ b/test/dotnet-new.Tests/GivenThatIWantANewCSxUnitProject.cs @@ -54,7 +54,7 @@ namespace Microsoft.DotNet.Tests .Should() .Pass() .And - .NotHaveStdErr();; + .NotHaveStdErr(); } diff --git a/test/dotnet-test.Tests/GivenThatWeWantToUseDotnetTestE2EInDesignTimeForMultipleTFms.cs b/test/dotnet-test.Tests/GivenThatWeWantToUseDotnetTestE2EInDesignTimeForMultipleTFms.cs index e95ba5668..8b55fa4fd 100644 --- a/test/dotnet-test.Tests/GivenThatWeWantToUseDotnetTestE2EInDesignTimeForMultipleTFms.cs +++ b/test/dotnet-test.Tests/GivenThatWeWantToUseDotnetTestE2EInDesignTimeForMultipleTFms.cs @@ -69,7 +69,7 @@ namespace Microsoft.Dotnet.Tools.Test.Tests } } - [WindowsOnlyFact] + [WindowsOnlyFact(Skip="https://github.com/xunit/xunit/issues/934")] public void It_discovers_tests_for_the_ProjectWithTestsWithNet451() { Setup(); @@ -110,7 +110,7 @@ namespace Microsoft.Dotnet.Tools.Test.Tests } } - [WindowsOnlyFact] + [WindowsOnlyFact(Skip="https://github.com/xunit/xunit/issues/934")] public void It_runs_tests_for_net451() { Setup(); From 736652fe7161688f695b02f546bd7ca91f187029 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Fri, 5 Aug 2016 17:57:46 -0500 Subject: [PATCH 158/165] Remove the SDK artifacts from the CLI. These are now contained in github.com/dotnet/sdk. --- Microsoft.DotNet.Cli.sln | 19 -- .../Microsoft.NETCore.ImportBefore.props | 17 -- .../Microsoft.NETCore.ImportAfter.targets | 17 -- .../Microsoft.DotNet.Core.Sdk.props | 68 ----- .../Microsoft.DotNet.Core.Sdk.targets | 120 -------- .../DependencyContextBuilder.cs | 270 ------------------ .../GenerateDepsFile.cs | 57 ---- .../GenerateRuntimeConfigurationFiles.cs | 146 ---------- .../LockFileCache.cs | 37 --- .../Microsoft.DotNet.Core.Build.Tasks.xproj | 18 -- .../Properties/AssemblyInfo.cs | 3 - .../RuntimeConfig.cs | 14 - .../RuntimeConfigFramework.cs | 16 -- .../RuntimeOptions.cs | 23 -- .../project.json | 33 --- src/dotnet/project.json | 3 - 16 files changed, 861 deletions(-) delete mode 100644 resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props delete mode 100644 resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets delete mode 100644 resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props delete mode 100644 resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs delete mode 100644 src/Microsoft.DotNet.Core.Build.Tasks/project.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index 040cf93cf..d574fb21e 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -148,8 +148,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2 build\test\TestProjects.targets = build\test\TestProjects.targets EndProjectSection EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks", "src\Microsoft.DotNet.Core.Build.Tasks\Microsoft.DotNet.Core.Build.Tasks.xproj", "{E8E7D24B-4830-4662-80A8-255D6FE3B0BE}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Tests.Utilities", "test\Microsoft.DotNet.Tools.Tests.Utilities\Microsoft.DotNet.Tools.Tests.Utilities.xproj", "{E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks.Tests", "test\Microsoft.DotNet.Core.Build.Tasks.Tests\Microsoft.DotNet.Core.Build.Tasks.Tests.xproj", "{EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}" @@ -860,22 +858,6 @@ Global {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {49D7318E-D198-4E2B-BBEA-3A24D805F88D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Debug|x64.Build.0 = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|Any CPU.Build.0 = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|x64.ActiveCfg = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.Release|x64.Build.0 = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.Debug|Any CPU.Build.0 = Debug|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -964,7 +946,6 @@ Global {FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108} {8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108} {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} - {E8E7D24B-4830-4662-80A8-255D6FE3B0BE} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {27B12960-ABB0-4903-9C60-5E9157E659C8} = {89905EC4-BC0F-443B-8ADF-691321F10108} diff --git a/resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props b/resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props deleted file mode 100644 index 8d4b59d14..000000000 --- a/resources/MSBuildImports/15.0/Imports/Microsoft.Common.props/ImportBefore/Microsoft.NETCore.ImportBefore.props +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.props - - - diff --git a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets deleted file mode 100644 index 7f2fab3de..000000000 --- a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NETCore.ImportAfter.targets +++ /dev/null @@ -1,17 +0,0 @@ - - - - $(MSBuildExtensionsPath)\Microsoft.DotNet.Core.Sdk.targets - - - diff --git a/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props b/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props deleted file mode 100644 index 0a1824c45..000000000 --- a/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.props +++ /dev/null @@ -1,68 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - Debug - AnyCPU - - 512 - bin\**;obj\**; - - - - - - - prompt - 4 - $(NoWarn);1701 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - - - pdbonly - true - bin\Release\ - TRACE - - - - - true - - - - - - - true - - - - - - - - true - - - portable - - - $(DotnetHostPath) - - - diff --git a/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets b/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets deleted file mode 100644 index 0a08997a5..000000000 --- a/resources/MSBuildImports/Microsoft.DotNet.Core.Sdk.targets +++ /dev/null @@ -1,120 +0,0 @@ - - - $(MSBuildThisFileDirectory)../../lib/ - netstandard1.6 - net451 - $(MicrosoftDotNetCoreBuildTasksDirectoryRoot)$(MicrosoftDotNetCoreBuildTasksTFM)/ - - - $(MSBuildToolsPath)/ - - - - - <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) - <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) - - - - true - $(MSBuildProjectDirectory)/runtimeconfig.template.json - 1.0.0 - - $(VersionPrefix)-$(VersionSuffix) - $(VersionPrefix) - - - - - - - - $(CoreBuildDependsOn); - GenerateDependencyFile; - GenerateRuntimeConfigurationFiles - - - - - - - - - - - - - - - - - - - - - - - - - - - - dotnet - exec;$(TargetDir)/$(AssemblyName).dll - - - - - - - - - Build; - CopyPublishArtifacts - - - $(OutDir)publish\ - - - - - - - - diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs b/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs deleted file mode 100644 index 757a2c08a..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/DependencyContextBuilder.cs +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using Microsoft.Extensions.DependencyModel; -using NuGet.Frameworks; -using NuGet.Packaging.Core; -using NuGet.ProjectModel; - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - public class DependencyContextBuilder - { - public DependencyContextBuilder() - { - } - - public DependencyContext Build( - string projectName, - string projectVersion, - CompilationOptions compilerOptions, - LockFile lockFile, - NuGetFramework framework, - string runtime) - { - LockFileTarget lockFileTarget = lockFile.GetTarget(framework, runtime); - IEnumerable runtimeExports = lockFileTarget.Libraries; - - // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. - var platformPackageName = "Microsoft.NETCore.App"; - var platformExport = lockFileTarget - .Libraries - .FirstOrDefault(e => e.Name.Equals(platformPackageName, StringComparison.OrdinalIgnoreCase)); - - bool portable = platformExport != null; - if (portable) - { - runtimeExports = FilterPlatformDependencies(runtimeExports, platformExport); - } - - var dependencyLookup = runtimeExports - .Select(identity => new Dependency(identity.Name, identity.Version.ToString())) - .ToDictionary(dependency => dependency.Name, StringComparer.OrdinalIgnoreCase); - - var libraryLookup = lockFile.Libraries.ToDictionary(l => l.Name, StringComparer.OrdinalIgnoreCase); - - var runtimeSignature = GenerateRuntimeSignature(runtimeExports); - - IEnumerable runtimeLibraries = - new[] { GetProjectLibrary(projectName, projectVersion, lockFile, lockFileTarget, dependencyLookup) } - .Concat(GetLibraries(runtimeExports, libraryLookup, dependencyLookup, runtime: true).Cast()); - - return new DependencyContext( - new TargetInfo(framework.DotNetFrameworkName, runtime, runtimeSignature, portable), - compilerOptions ?? CompilationOptions.Default, - Enumerable.Empty(), //GetLibraries(compilationExports, dependencyLookup, runtime: false).Cast(), - runtimeLibraries, - new RuntimeFallbacks[] { }); - } - - private static IEnumerable FilterPlatformDependencies( - IEnumerable runtimeExports, - LockFileTargetLibrary platformExport) - { - var exportsLookup = runtimeExports.ToDictionary(e => e.Name, StringComparer.OrdinalIgnoreCase); - - HashSet exclusionList = GetPlatformExclusionList(platformExport, exportsLookup); - - return runtimeExports.Where(e => !exclusionList.Contains(e.Name)); - } - - private static HashSet GetPlatformExclusionList( - LockFileTargetLibrary platformExport, - IDictionary exportsLookup) - { - var exclusionList = new HashSet(); - - exclusionList.Add(platformExport.Name); - CollectDependencies(exportsLookup, platformExport.Dependencies, exclusionList); - - return exclusionList; - } - - private static void CollectDependencies( - IDictionary exportsLookup, - IEnumerable dependencies, - HashSet exclusionList) - { - foreach (PackageDependency dependency in dependencies) - { - LockFileTargetLibrary export = exportsLookup[dependency.Id]; - if (export.Version.Equals(dependency.VersionRange.MinVersion)) - { - exclusionList.Add(export.Name); - CollectDependencies(exportsLookup, export.Dependencies, exclusionList); - } - } - } - - private static string GenerateRuntimeSignature(IEnumerable runtimeExports) - { - var sha1 = SHA1.Create(); - var builder = new StringBuilder(); - var packages = runtimeExports - .Where(libraryExport => libraryExport.Type == "package"); - var separator = "|"; - foreach (var libraryExport in packages) - { - builder.Append(libraryExport.Name); - builder.Append(separator); - builder.Append(libraryExport.Version.ToString()); - builder.Append(separator); - } - var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(builder.ToString())); - - builder.Clear(); - foreach (var hashByte in hash) - { - builder.AppendFormat("{0:x2}", hashByte); - } - return builder.ToString(); - } - - private RuntimeLibrary GetProjectLibrary( - string projectName, - string projectVersion, - LockFile lockFile, - LockFileTarget lockFileTarget, - Dictionary dependencyLookup) - { - RuntimeAssetGroup[] runtimeAssemblyGroups = new[] { new RuntimeAssetGroup(string.Empty, $"{projectName}.dll") }; - - List dependencies = new List(); - - IEnumerable projectFileDependencies = lockFile - .ProjectFileDependencyGroups - .Where(dg => dg.FrameworkName == string.Empty || - dg.FrameworkName == lockFileTarget.TargetFramework.DotNetFrameworkName); - - foreach (string projectFileDependency in projectFileDependencies.SelectMany(dg => dg.Dependencies)) - { - int separatorIndex = projectFileDependency.IndexOf(' '); - string dependencyName = separatorIndex > 0 ? - projectFileDependency.Substring(0, separatorIndex) : - projectFileDependency; - - Dependency dependency; - if (dependencyLookup.TryGetValue(dependencyName, out dependency)) - { - dependencies.Add(dependency); - } - } - - return new RuntimeLibrary( - type: "project", - name: projectName, - version: projectVersion, - hash: string.Empty, - runtimeAssemblyGroups: runtimeAssemblyGroups, - nativeLibraryGroups: new RuntimeAssetGroup[] { }, - resourceAssemblies: new ResourceAssembly[] { }, - dependencies: dependencies.ToArray(), - serviceable: false); - } - - private IEnumerable GetLibraries( - IEnumerable exports, - IDictionary libraryLookup, - IDictionary dependencyLookup, - bool runtime) - { - return exports.Select(export => GetLibrary(export, libraryLookup, dependencyLookup, runtime)); - } - - private Library GetLibrary( - LockFileTargetLibrary export, - IDictionary libraryLookup, - IDictionary dependencyLookup, - bool runtime) - { - var type = export.Type; - - // TEMPORARY: All packages are serviceable in RC2 - // See https://github.com/dotnet/cli/issues/2569 - var serviceable = export.Type == "package"; - var libraryDependencies = new HashSet(); - - foreach (PackageDependency libraryDependency in export.Dependencies) - { - Dependency dependency; - if (dependencyLookup.TryGetValue(libraryDependency.Id, out dependency)) - { - libraryDependencies.Add(dependency); - } - } - - string hash = string.Empty; - LockFileLibrary library; - if (libraryLookup.TryGetValue(export.Name, out library)) - { - hash = "sha512-" + library.Sha512; - } - - if (runtime) - { - return new RuntimeLibrary( - type.ToLowerInvariant(), - export.Name, - export.Version.ToString(), - hash, - CreateRuntimeAssemblyGroups(export), - CreateNativeLibraryGroups(export), - export.ResourceAssemblies.Select(CreateResourceAssembly), - libraryDependencies, - serviceable - ); - } - //else - //{ - // IEnumerable assemblies = export - // .CompilationAssemblies - // .Select(libraryAsset => libraryAsset.RelativePath); - - // return new CompilationLibrary( - // type.ToString().ToLowerInvariant(), - // export.Library.Identity.Name, - // export.Library.Identity.Version.ToString(), - // export.Library.Hash, - // assemblies, - // libraryDependencies, - // serviceable); - //} - return null; - } - - private IReadOnlyList CreateRuntimeAssemblyGroups(LockFileTargetLibrary export) - { - List assemblyGroups = new List(); - - assemblyGroups.Add( - new RuntimeAssetGroup(string.Empty, export.RuntimeAssemblies.Select(a => a.Path))); - - // TODO RuntimeTargets - //export.RuntimeTargets.GroupBy(l => l.) - - return assemblyGroups; - } - - private IReadOnlyList CreateNativeLibraryGroups(LockFileTargetLibrary export) - { - return new[] { new RuntimeAssetGroup(string.Empty, export.NativeLibraries.Select(a => a.Path)) }; - } - - - private ResourceAssembly CreateResourceAssembly(LockFileItem resourceAssembly) - { - // TODO: implement - return null; - - //return new ResourceAssembly( - // path: resourceAssembly.Path, - // locale: resourceAssembly.Locale - // ); - } - } -} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs deleted file mode 100644 index e5b700832..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateDepsFile.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Microsoft.Extensions.DependencyModel; -using Newtonsoft.Json; -using NuGet.Frameworks; -using NuGet.ProjectModel; - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - /// - /// Generates the $(project).deps.json file. - /// - public class GenerateDepsFile : Task - { - [Required] - public string LockFilePath { get; set; } - - [Required] - public string DepsFilePath { get; set; } - - [Required] - public string TargetFramework { get; set; } - - public string RuntimeIdentifier { get; set; } - - [Required] - public string AssemblyName { get; set; } - - [Required] - public string AssemblyVersion { get; set; } - - public override bool Execute() - { - LockFile lockFile = LockFileCache.Instance.GetLockFile(LockFilePath); - - DependencyContext dependencyContext = new DependencyContextBuilder().Build( - projectName: AssemblyName, - projectVersion: AssemblyVersion, - compilerOptions: null, // TODO: PreservceCompliationContext - lockFile: lockFile, - framework: TargetFramework == null ? null : NuGetFramework.Parse(TargetFramework), - runtime: RuntimeIdentifier); - - var writer = new DependencyContextWriter(); - using (var fileStream = File.Create(DepsFilePath)) - { - writer.Write(dependencyContext, fileStream); - } - - return true; - } - } -} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs b/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs deleted file mode 100644 index 277eb277c..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/GenerateRuntimeConfigurationFiles.cs +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Newtonsoft.Json.Serialization; -using NuGet.ProjectModel; - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - /// - /// Generates the $(project).runtimeconfig.json and optionally $(project).runtimeconfig.dev.json files - /// for a project. - /// - public class GenerateRuntimeConfigurationFiles : Task - { - [Required] - public string LockFilePath { get; set; } - - [Required] - public string RuntimeConfigPath { get; set; } - - public string RuntimeConfigDevPath { get; set; } - - public string UserRuntimeConfig { get; set; } - - private LockFile LockFile { get; set; } - - public override bool Execute() - { - LockFile = LockFileCache.Instance.GetLockFile(LockFilePath); - - WriteRuntimeConfig(); - - if (!string.IsNullOrEmpty(RuntimeConfigDevPath)) - { - WriteDevRuntimeConfig(); - } - - return true; - } - - private void WriteRuntimeConfig() - { - RuntimeConfig config = new RuntimeConfig(); - config.RuntimeOptions = new RuntimeOptions(); - - AddFramework(config.RuntimeOptions); - AddUserRuntimeOptions(config.RuntimeOptions); - - WriteToJsonFile(RuntimeConfigPath, config); - } - - private void AddFramework(RuntimeOptions runtimeOptions) - { - // TODO: get this from the lock file once https://github.com/NuGet/Home/issues/2695 is fixed. - var packageName = "Microsoft.NETCore.App"; - - var redistExport = LockFile - .Libraries - .FirstOrDefault(e => e.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); - - if (redistExport != null) - { - RuntimeConfigFramework framework = new RuntimeConfigFramework(); - framework.Name = redistExport.Name; - framework.Version = redistExport.Version.ToNormalizedString(); - - runtimeOptions.Framework = framework; - } - } - - private void AddUserRuntimeOptions(RuntimeOptions runtimeOptions) - { - if (string.IsNullOrEmpty(UserRuntimeConfig) || !File.Exists(UserRuntimeConfig)) - { - return; - } - - var rawRuntimeOptions = File.ReadAllText(UserRuntimeConfig); - - var runtimeOptionsFromProject = JObject.Parse(rawRuntimeOptions); - foreach (var runtimeOption in runtimeOptionsFromProject) - { - runtimeOptions.RawOptions.Add(runtimeOption.Key, runtimeOption.Value); - } - } - - private void WriteDevRuntimeConfig() - { - RuntimeConfig devConfig = new RuntimeConfig(); - devConfig.RuntimeOptions = new RuntimeOptions(); - - AddAdditionalProbingPaths(devConfig.RuntimeOptions); - - WriteToJsonFile(RuntimeConfigDevPath, devConfig); - } - - private void AddAdditionalProbingPaths(RuntimeOptions runtimeOptions) - { - foreach (var packageFolder in LockFile.PackageFolders) - { - if (runtimeOptions.AdditionalProbingPaths == null) - { - runtimeOptions.AdditionalProbingPaths = new List(); - } - - // DotNetHost doesn't handle additional probing paths with a trailing slash - runtimeOptions.AdditionalProbingPaths.Add(EnsureNoTrailingDirectorySeparator(packageFolder.Path)); - } - } - - private static string EnsureNoTrailingDirectorySeparator(string path) - { - if (!string.IsNullOrEmpty(path)) - { - char lastChar = path[path.Length - 1]; - if (lastChar == Path.DirectorySeparatorChar) - { - path = path.Substring(0, path.Length - 1); - } - } - - return path; - } - - private static void WriteToJsonFile(string fileName, object value) - { - JsonSerializer serializer = new JsonSerializer(); - serializer.ContractResolver = new CamelCasePropertyNamesContractResolver(); - serializer.Formatting = Formatting.Indented; - serializer.DefaultValueHandling = DefaultValueHandling.Ignore; - - using (JsonTextWriter writer = new JsonTextWriter(new StreamWriter(File.Create(fileName)))) - { - serializer.Serialize(writer, value); - } - } - } -} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs b/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs deleted file mode 100644 index a352fb643..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/LockFileCache.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Concurrent; -using NuGet.Common; -using NuGet.ProjectModel; - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - internal class LockFileCache - { - public static LockFileCache Instance { get; } = new LockFileCache(); - - private ConcurrentDictionary _cache = new ConcurrentDictionary(); - - private LockFileCache() - { - } - - public LockFile GetLockFile(string path) - { - LockFile result; - if (!_cache.TryGetValue(path, out result)) - { - result = LoadLockFile(path); - _cache[path] = result; - } - return result; - } - - private LockFile LoadLockFile(string path) - { - // TODO adapt task logger to Nuget Logger - return LockFileUtilities.GetLockFile(path, NullLogger.Instance); - } - } -} diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj b/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj deleted file mode 100644 index 91bee27d0..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/Microsoft.DotNet.Core.Build.Tasks.xproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - 14.0.25420 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - e8e7d24b-4830-4662-80a8-255d6fe3b0be - Microsoft.DotNet.Core.Build.Tasks - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs b/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs deleted file mode 100644 index bd44bced5..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyMetadataAttribute("Serviceable", "True")] diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs deleted file mode 100644 index f28e77f94..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfig.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - internal class RuntimeConfig - { - public RuntimeOptions RuntimeOptions { get; set; } - - public RuntimeConfig() - { - } - } -} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs deleted file mode 100644 index 28d19a006..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeConfigFramework.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - internal class RuntimeConfigFramework - { - public string Name { get; set; } - - public string Version { get; set; } - - public RuntimeConfigFramework() - { - } - } -} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs b/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs deleted file mode 100644 index 618ee1c4f..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/RuntimeOptions.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Microsoft.DotNet.Core.Build.Tasks -{ - internal class RuntimeOptions - { - public RuntimeConfigFramework Framework { get; set; } - - public List AdditionalProbingPaths { get; set; } - - [JsonExtensionData] - public IDictionary RawOptions { get; } = new Dictionary(); - - public RuntimeOptions() - { - } - } -} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Core.Build.Tasks/project.json b/src/Microsoft.DotNet.Core.Build.Tasks/project.json deleted file mode 100644 index cd63f2b35..000000000 --- a/src/Microsoft.DotNet.Core.Build.Tasks/project.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "version": "1.0.0-featmsbuild-*", - "buildOptions": { - "keyFile": "../../tools/Key.snk", - "warningsAsErrors": true - }, - "dependencies": { - "NuGet.ProjectModel": "3.5.0-rc1-1697", - "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000914" - }, - "frameworks": { - "net451": { - "frameworkAssemblies": { - "Microsoft.Build.Utilities.v4.0": { - "type": "build" - }, - "Microsoft.Build.Framework": { - "type": "build" - } - } - }, - "netstandard1.6": { - "imports": [ - "portable-net45+wp80+win8+wpa81+dnxcore50" - ], - "dependencies": { - "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", - "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", - "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805" - } - } - } -} diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 7ae5a4825..f189edb7d 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -63,9 +63,6 @@ "Microsoft.Build": "0.1.0-preview-00029-160805", "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", - "Microsoft.DotNet.Core.Build.Tasks": { - "target": "project" - }, "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, "frameworks": { From 94223a700916d2a9151048f34592c57d16e97ee0 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 18:05:28 -0500 Subject: [PATCH 159/165] Tell `dotnet restore` to install nuget.props and nuget.targets files using an environment variable, so the SDK .targets are installed into the user's project. --- src/dotnet/ForwardingApp.cs | 39 +++++++++++-------- src/dotnet/commands/dotnet-restore/NuGet3.cs | 18 +++++---- .../dotnet-restore/NuGetForwardingApp.cs | 15 ++++--- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/dotnet/ForwardingApp.cs b/src/dotnet/ForwardingApp.cs index c3d14c6dc..871f98b21 100644 --- a/src/dotnet/ForwardingApp.cs +++ b/src/dotnet/ForwardingApp.cs @@ -1,38 +1,34 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.ProjectModel; -using System; using System.Collections.Generic; using System.Diagnostics; -using System.Linq; -using System.Runtime.InteropServices; -using System.Threading.Tasks; +using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.ProjectModel; namespace Microsoft.DotNet.Cli { - /// - /// A class which encapsulates logic needed to forward arguments from the current process to another process - /// invoked with the dotnet.exe host. - /// + /// + /// A class which encapsulates logic needed to forward arguments from the current process to another process + /// invoked with the dotnet.exe host. + /// public class ForwardingApp { private const string s_hostExe = "dotnet"; private readonly string _forwardApplicationPath; - private readonly string[] _argsToForward; + private readonly IEnumerable _argsToForward; private readonly string _depsFile; private readonly string _runtimeConfig; private readonly string _additionalProbingPath; - private readonly Dictionary _environmentVariables; + private Dictionary _environmentVariables; private readonly string[] _allArgs; - + public ForwardingApp( - string forwardApplicationPath, - string[] argsToForward, - string depsFile = null, + string forwardApplicationPath, + IEnumerable argsToForward, + string depsFile = null, string runtimeConfig = null, string additionalProbingPath = null, Dictionary environmentVariables = null) @@ -43,7 +39,7 @@ namespace Microsoft.DotNet.Cli _runtimeConfig = runtimeConfig; _additionalProbingPath = additionalProbingPath; _environmentVariables = environmentVariables; - + var allArgs = new List(); allArgs.Add("exec"); @@ -99,6 +95,15 @@ namespace Microsoft.DotNet.Cli return process.ExitCode; } + public ForwardingApp WithEnvironmentVariable(string name, string value) + { + _environmentVariables = _environmentVariables ?? new Dictionary(); + + _environmentVariables.Add(name, value); + + return this; + } + private string GetHostExeName() { return $"{s_hostExe}{FileNameSuffixes.CurrentPlatform.Exe}"; diff --git a/src/dotnet/commands/dotnet-restore/NuGet3.cs b/src/dotnet/commands/dotnet-restore/NuGet3.cs index 7fd2a4e84..0ccc4018a 100644 --- a/src/dotnet/commands/dotnet-restore/NuGet3.cs +++ b/src/dotnet/commands/dotnet-restore/NuGet3.cs @@ -1,9 +1,6 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Reflection; -using Microsoft.DotNet.Cli.Utils; namespace Microsoft.DotNet.Tools.Restore { @@ -19,11 +16,18 @@ namespace Microsoft.DotNet.Tools.Restore } prefixArgs.Add("restore"); - var result = new NuGetForwardingApp(Enumerable.Concat( - prefixArgs, - args).ToArray()).Execute(); + var nugetApp = new NuGetForwardingApp(Enumerable.Concat(prefixArgs, args)); - return result; + // setting NUGET_XPROJ_WRITE_TARGETS will tell nuget restore to install .props and .targets files + // coming from NuGet packages + const string nugetXProjWriteTargets = "NUGET_XPROJ_WRITE_TARGETS"; + bool setXProjWriteTargets = Environment.GetEnvironmentVariable(nugetXProjWriteTargets) == null; + if (setXProjWriteTargets) + { + nugetApp.WithEnvironmentVariable(nugetXProjWriteTargets, "true"); + } + + return nugetApp.Execute(); } } } diff --git a/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs index a43e591e1..e12bb2b8a 100644 --- a/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs +++ b/src/dotnet/commands/dotnet-restore/NuGetForwardingApp.cs @@ -1,14 +1,10 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.DotNet.Cli; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.InternalAbstractions; using System; using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Threading.Tasks; +using Microsoft.DotNet.Cli; namespace Microsoft.DotNet.Tools.Restore { @@ -17,7 +13,7 @@ namespace Microsoft.DotNet.Tools.Restore private const string s_nugetExeName = "NuGet.CommandLine.XPlat.dll"; private readonly ForwardingApp _forwardingApp; - public NuGetForwardingApp(string[] argsToForward) + public NuGetForwardingApp(IEnumerable argsToForward) { _forwardingApp = new ForwardingApp( GetNuGetExePath(), @@ -29,6 +25,13 @@ namespace Microsoft.DotNet.Tools.Restore return _forwardingApp.Execute(); } + public NuGetForwardingApp WithEnvironmentVariable(string name, string value) + { + _forwardingApp.WithEnvironmentVariable(name, value); + + return this; + } + private static string GetNuGetExePath() { return Path.Combine( From f48effff61b8fb24ea55a56509298db1cffa36bd Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 18:40:25 -0500 Subject: [PATCH 160/165] Add System.Resources.Writer to src\dotnet\project.json --- src/dotnet/project.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet/project.json b/src/dotnet/project.json index f189edb7d..5c1ac258d 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -51,6 +51,7 @@ }, "System.Diagnostics.TraceSource": "4.0.0", "System.Diagnostics.TextWriterTraceListener": "4.0.0", + "System.Resources.Writer": "4.0.0", "System.Runtime.Serialization.Primitives": "4.1.1", "System.Private.DataContractSerialization": "4.1.1", "System.Text.RegularExpressions": "4.1.0", @@ -59,7 +60,6 @@ "exclude": "compile" }, - "Microsoft.Build": "0.1.0-preview-00029-160805", "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", From bc04f905db26697def485a7227f1823e33ec1f4b Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 9 Aug 2016 21:05:44 -0500 Subject: [PATCH 161/165] Remove Build.Tasks.Tests. --- Microsoft.DotNet.Cli.sln | 19 - .../GivenADependencyContextBuilder.cs | 71 - ...rosoft.DotNet.Core.Build.Tasks.Tests.xproj | 21 - .../dotnet.new.deps.json | 23 - .../dotnet.new.project.lock.json | 6600 ---------------- .../project.json | 31 - .../simple.dependencies.deps.json | 60 - .../simple.dependencies.project.lock.json | 6796 ----------------- 8 files changed, 13621 deletions(-) delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json delete mode 100644 test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index d574fb21e..3fc161887 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -150,8 +150,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2 EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Tests.Utilities", "test\Microsoft.DotNet.Tools.Tests.Utilities\Microsoft.DotNet.Tools.Tests.Utilities.xproj", "{E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Core.Build.Tasks.Tests", "test\Microsoft.DotNet.Core.Build.Tasks.Tests\Microsoft.DotNet.Core.Build.Tasks.Tests.xproj", "{EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "publish", "publish", "{27B12960-ABB0-4903-9C60-5E9157E659C8}" ProjectSection(SolutionItems) = preProject build\publish\Microsoft.DotNet.Cli.Badge.targets = build\publish\Microsoft.DotNet.Cli.Badge.targets @@ -874,22 +872,6 @@ Global {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|x64.ActiveCfg = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Debug|x64.Build.0 = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|Any CPU.Build.0 = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|x64.ActiveCfg = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.Release|x64.Build.0 = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -947,7 +929,6 @@ Global {8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108} {FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108} {E4F46EAB-B5A5-4E60-9B9D-40A1FADBF45C} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} - {EDD6C92D-0A58-4FCB-A0E9-9D0FFC045177} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {27B12960-ABB0-4903-9C60-5E9157E659C8} = {89905EC4-BC0F-443B-8ADF-691321F10108} EndGlobalSection EndGlobal diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs deleted file mode 100644 index 1278347c2..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/GivenADependencyContextBuilder.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.IO; -using FluentAssertions.Json; -using Microsoft.Extensions.DependencyModel; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using NuGet.Common; -using NuGet.Frameworks; -using NuGet.ProjectModel; -using Xunit; - -namespace Microsoft.DotNet.Core.Build.Tasks.Tests -{ - public class GivenADependencyContextBuilder - { - /// - /// Tests that DependencyContextBuilder generates DependencyContexts correctly. - /// - [Theory] - [InlineData("dotnet.new", "1.0.0")] - [InlineData("simple.dependencies", "1.0.0")] - public void ItBuildsDependencyContextsFromProjectLockFiles(string mainProjectName, string mainProjectVersion) - { - LockFile lockFile = LockFileUtilities.GetLockFile($"{mainProjectName}.project.lock.json", NullLogger.Instance); - - DependencyContext dependencyContext = new DependencyContextBuilder().Build( - mainProjectName, - mainProjectVersion, - compilerOptions: null, - lockFile: lockFile, - framework: FrameworkConstants.CommonFrameworks.NetCoreApp10, - runtime: null); - - JObject result = Save(dependencyContext); - JObject baseline = ReadJson($"{mainProjectName}.deps.json"); - - baseline - .Should() - .BeEquivalentTo(result); - } - - private static JObject ReadJson(string path) - { - using (JsonTextReader jsonReader = new JsonTextReader(File.OpenText(path))) - { - JsonSerializer serializer = new JsonSerializer(); - return serializer.Deserialize(jsonReader); - } - } - - private JObject Save(DependencyContext dependencyContext) - { - using (var memoryStream = new MemoryStream()) - { - new DependencyContextWriter().Write(dependencyContext, memoryStream); - using (var readStream = new MemoryStream(memoryStream.ToArray())) - { - using (var textReader = new StreamReader(readStream)) - { - using (var reader = new JsonTextReader(textReader)) - { - return JObject.Load(reader); - } - } - } - } - } - } -} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj deleted file mode 100644 index b112cfc36..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/Microsoft.DotNet.Core.Build.Tasks.Tests.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - 14.0.25420 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - edd6c92d-0a58-4fcb-a0e9-9d0ffc045177 - Microsoft.DotNet.Core.Build.Tasks.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - - - - \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json deleted file mode 100644 index 46f7e2de2..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v1.0", - "signature": "da39a3ee5e6b4b0d3255bfef95601890afd80709" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v1.0": { - "dotnet.new/1.0.0": { - "runtime": { - "dotnet.new.dll": {} - } - } - } - }, - "libraries": { - "dotnet.new/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json deleted file mode 100644 index 0e2596ed0..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/dotnet.new.project.lock.json +++ /dev/null @@ -1,6600 +0,0 @@ -{ - "version": 2, - "targets": { - ".NETCoreApp,Version=v1.0": { - "Libuv/1.9.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1" - }, - "runtimeTargets": { - "runtimes/osx/native/_._": { - "assetType": "native", - "rid": "osx" - } - } - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "type": "package" - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "1.1.0", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.FileVersionInfo": "4.0.0", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.Tools": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.CodePages": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath.XDocument": "4.0.1", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[1.3.0]" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "1.3.0" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.NETCore.App/1.0.0": { - "type": "package", - "dependencies": { - "Libuv": "1.9.0", - "Microsoft.CSharp": "4.0.1", - "Microsoft.CodeAnalysis.CSharp": "1.3.0", - "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", - "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", - "Microsoft.VisualBasic": "10.0.1", - "NETStandard.Library": "1.6.0", - "System.Buffers": "4.0.0", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Annotations": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Process": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.IO.MemoryMappedFiles": "4.0.0", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Parallel": "4.0.1", - "System.Linq.Queryable": "4.0.1", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Net.Security": "4.0.0", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Numerics.Vectors": "4.1.1", - "System.Reflection.DispatchProxy": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.Reader": "4.0.0", - "System.Runtime.Loader": "4.0.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Threading.Tasks.Dataflow": "4.6.0", - "System.Threading.Tasks.Extensions": "4.0.0", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10" - }, - "compile": { - "lib/netcoreapp1.0/_._": {} - }, - "runtime": { - "lib/netcoreapp1.0/_._": {} - } - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "type": "package" - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHostResolver": "1.0.1" - } - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHost": "1.0.1" - } - }, - "Microsoft.NETCore.Jit/1.0.2": { - "type": "package" - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Jit": "1.0.2", - "Microsoft.NETCore.Windows.ApiSets": "1.0.1" - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "type": "package" - }, - "Microsoft.VisualBasic/10.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.Win32.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.Compression.ZipFile": "4.0.1", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Sockets": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Security/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - } - }, - "System.Buffers/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Collections.Immutable/1.2.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.ComponentModel.Annotations/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} - }, - "runtime": { - "lib/netstandard1.4/_._": {} - } - }, - "System.Console/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Process/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "Microsoft.Win32.Registry": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Diagnostics.Process.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.4/_._": { - "assetType": "runtime", - "rid": "osx" - } - } - }, - "System.Diagnostics.StackTrace/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Immutable": "1.2.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - } - }, - "System.Globalization.Calendars/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Extensions.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.IO.Compression": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.0.1": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Overlapped": "4.0.1", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "osx" - } - } - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - } - }, - "System.Linq.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Linq.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Linq.Queryable/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Linq.Queryable.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Net.Http/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.NameResolution/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Principal.Windows": "4.0.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.NameResolution.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - } - }, - "System.Net.Requests/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Requests.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Security/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Security": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Security.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Sockets/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.Net.WebHeaderCollection/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Numerics.Vectors/4.1.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Numerics.Vectors.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - } - }, - "System.Reflection.DispatchProxy/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - } - }, - "System.Reflection.Metadata/1.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Immutable": "1.2.0", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/_._": {} - } - }, - "System.Resources.Reader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.1/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Loader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/_._": {} - }, - "runtime": { - "lib/netstandard1.5/_._": {} - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Security.Claims/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Cng": "4.2.0", - "System.Security.Cryptography.Csp": "4.0.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Principal/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Security.Principal.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Security.Principal.Windows/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - } - }, - "System.Text.Encoding.CodePages/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.Overlapped/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - } - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Extensions": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XmlDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XPath/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XPath.XDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - } - } - }, - "libraries": { - "Libuv/1.9.0": { - "sha512": "zn9iQ5O9HOqWy93KkEJQbCZtwu87krs4KK0eaPJ4XZdJ4Ciah2rbaVlQlGrycF9CeIOnIOF3rN7pX4/avqaM2g==", - "type": "package", - "path": "libuv/1.9.0", - "files": [ - "Libuv.1.9.0.nupkg.sha512", - "Libuv.nuspec", - "License.txt", - "runtimes/debian-x64/native/libuv.so", - "runtimes/fedora-x64/native/libuv.so", - "runtimes/opensuse-x64/native/libuv.so", - "runtimes/osx/native/libuv.dylib", - "runtimes/rhel-x64/native/libuv.so", - "runtimes/win7-arm/native/libuv.dll", - "runtimes/win7-x64/native/libuv.dll", - "runtimes/win7-x86/native/libuv.dll" - ] - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "sha512": "l9jnErYySiDSyQqX8IzAaLo1W1CZhflga9O7HsNySMN/W6QZ6coGlFrJa/PccbN5JhWmCdc1Xy6rVU0TgMJ7ZQ==", - "type": "package", - "path": "microsoft.codeanalysis.analyzers/1.1.0", - "files": [ - "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Analyzers.nuspec", - "ThirdPartyNotices.rtf", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", - "tools/install.ps1", - "tools/uninstall.ps1" - ] - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "sha512": "s36q3OAEiFJeJL9C7pDjqelEezReg9fc2CvIh9TUBnwbIMMM80934o0TGqAsgJhcJdSY3ZQXkK4FSfkjSur5Vw==", - "type": "package", - "path": "microsoft.codeanalysis.common/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Common.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.dll", - "lib/net45/Microsoft.CodeAnalysis.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" - ] - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "sha512": "Ca7QsOHHHHuI/qenYpVW9mOAXpJWGdSV3vnm2bzBNc+Ih29HPapMpeRp8Cg3sVcP3KYD+MNc2n7Ss+Wtwtpp8A==", - "type": "package", - "path": "microsoft.codeanalysis.csharp/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.CSharp.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", - "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" - ] - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "sha512": "qRZQBqihyoBdEnTMEPvi0r60ImpqlTy9J6B3FG554Cnktm2PN1tkn+yA4ViFLq5VQhrLVllceL4gvF2+ixDO7A==", - "type": "package", - "path": "microsoft.codeanalysis.visualbasic/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.VisualBasic.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "bEDSbvsy+/q2IoTm4h3zMCz5qXnO/ABXuHiuSk/x/SVPgwKGumAYi8o1W2mtYb1L4G3ypcUUnhHKssnDPFVnLg==", - "type": "package", - "path": "microsoft.csharp/4.0.1", - "files": [ - "Microsoft.CSharp.4.0.1.nupkg.sha512", - "Microsoft.CSharp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.NETCore.App/1.0.0": { - "sha512": "j0UkjdAh4B+7UltdTauJBpvEYn32UZVCfmbeGjDf6Gk6rj1WLE5kmPh4TDo1FqQCJH6qE+upy57SlrXqNOMy1A==", - "type": "package", - "path": "microsoft.netcore.app/1.0.0", - "files": [ - "Microsoft.NETCore.App.1.0.0.nupkg.sha512", - "Microsoft.NETCore.App.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netcoreapp1.0/_._" - ] - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "sha512": "pJ5GpIaA3rvPKF14QzEMnk4K4IjQoIykzlFKXQiQvpFoQ/hR0balFeTwHZ7mHIYrD/qyIoPyCZDoIwKvPSeYLg==", - "type": "package", - "path": "microsoft.netcore.dotnethost/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHost.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "sha512": "oxLDy2HHOeiJ4lkR3GCBILggKKJlqBqE9+iyn2U0LhOra6It3SPN6WHwUxyUapYS/smwfRUOVe4WOP2RFzaXrA==", - "type": "package", - "path": "microsoft.netcore.dotnethostpolicy/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostPolicy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "sha512": "I8Jn/IWnBLyyD472VW7c3iQCAP53LBrhKJZ+W9N2ZA/WGbVbpXI6lZN6zTcqor41xs2CPNTCGkJ1WI9uuxOhYQ==", - "type": "package", - "path": "microsoft.netcore.dotnethostresolver/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostResolver.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Jit/1.0.2": { - "sha512": "8/e0Jhh0u6LoHvKD1GsP90pBhtSZ42dYBJbXy1lfnom013LBNAZcr7335J6tap7FlE3c7lJiuwvuqL0HwwubJw==", - "type": "package", - "path": "microsoft.netcore.jit/1.0.2", - "files": [ - "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Jit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "fIH36grDtzPnDFo6TqmqmUnsFgI9Sil5WA9lnaoXOMLKzYnevu8BRvFj3doCcYnyf8gO3QWB0eE10YbcPmlMeg==", - "type": "package", - "path": "microsoft.netcore.platforms/1.0.1", - "files": [ - "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Platforms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "sha512": "aJFFWQRwjIVKU9t7hfUei3WFuRAIuQJnmdPR3C8pHhRwOql6CmP0Wre4hcqD/STylPbCZF/1HZSfSTIBSro/ZQ==", - "type": "package", - "path": "microsoft.netcore.runtime.coreclr/1.0.2", - "files": [ - "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.0.1": { - "sha512": "h7iLUylPF+Hh9t4KgnQv+LfCbbcW9OjfISOWX7CzulLnAB8N7PfeeQjE8anOwk5nBPvJQgSGXxwm8nG7oxmaQg==", - "type": "package", - "path": "microsoft.netcore.targets/1.0.1", - "files": [ - "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Targets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "sha512": "NgPSWhyvALft90CMkbStH1sBAcN4bXPi1RS76ahJtZHDmjvU3pOg7nw7tBs13axJUq8zj9Nqxhpjs9jKvrGCZw==", - "type": "package", - "path": "microsoft.netcore.windows.apisets/1.0.1", - "files": [ - "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.VisualBasic/10.0.1": { - "sha512": "xap42bUQzo195pEfb87IXDqT7qSKY2ScAVkeKEsgusFWEZTAcd+wM0dy/7nd4T5dFSrhkeEC/kVzJ8pSKOo6Ng==", - "type": "package", - "path": "microsoft.visualbasic/10.0.1", - "files": [ - "Microsoft.VisualBasic.10.0.1.nupkg.sha512", - "Microsoft.VisualBasic.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/Microsoft.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.VisualBasic.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.VisualBasic.dll", - "ref/netcore50/Microsoft.VisualBasic.xml", - "ref/netcore50/de/Microsoft.VisualBasic.xml", - "ref/netcore50/es/Microsoft.VisualBasic.xml", - "ref/netcore50/fr/Microsoft.VisualBasic.xml", - "ref/netcore50/it/Microsoft.VisualBasic.xml", - "ref/netcore50/ja/Microsoft.VisualBasic.xml", - "ref/netcore50/ko/Microsoft.VisualBasic.xml", - "ref/netcore50/ru/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/Microsoft.VisualBasic.dll", - "ref/netstandard1.1/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._" - ] - }, - "Microsoft.Win32.Primitives/4.0.1": { - "sha512": "kVuOrOUq3COj7iG2FUm5qmAYgQe3X1SmI4k8vvaU7uvau7+dmdzNLHCJSDuGW3tSO+DxLhCMLdnHgnP6r9DZVw==", - "type": "package", - "path": "microsoft.win32.primitives/4.0.1", - "files": [ - "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", - "Microsoft.Win32.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.0.0": { - "sha512": "eoaVIbe5rWtsuvXMzkR+1Z9t7Y98i6Jq0EwtPxwaGUvKyhumtx/KS5p/jm0e0WN3sm/3zkcpEeBFeUEKDgn6bg==", - "type": "package", - "path": "microsoft.win32.registry/4.0.0", - "files": [ - "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", - "Microsoft.Win32.Registry.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "KEBGjjvvaAs35nBXCk23qpydNtp+DqrH1NHpQj4/6i/D4TQcGu1GlJ/UrX637EguXqpd2zlAjXmgnfBtDtDlbg==", - "type": "package", - "path": "netstandard.library/1.6.0", - "files": [ - "NETStandard.Library.1.6.0.nupkg.sha512", - "NETStandard.Library.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "zSxGms3EXg5+zZ3z5hPUpNEtB8lEoI4jeNSX4g2fq3x7IfwJo5yspIP5WtQVuWn8cdt4JH8IZYGp9q+F6lt1wg==", - "type": "package", - "path": "runtime.native.system/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.4.0.0.nupkg.sha512", - "runtime.native.System.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.1.0": { - "sha512": "pDDn4jXuGnXhZAslUuVvxBKwRwEGOrlPNH1kz1ciRpI0YM+DR1Nao2lyct7q4ELRQGLZAxdT/4XlMzTllVK4Zw==", - "type": "package", - "path": "runtime.native.system.io.compression/4.1.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", - "runtime.native.System.IO.Compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.0.1": { - "sha512": "OeS65MhURMp5jYBr/yqbGWiYbn7aMeM+2NLEAGgEsRlIJ1Yc9eAqv/Zd2BUbLCniPxgelXpjTuniKaHp+VvDug==", - "type": "package", - "path": "runtime.native.system.net.http/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Http.nuspec" - ] - }, - "runtime.native.System.Net.Security/4.0.1": { - "sha512": "hNDZY20cvW73KyXzwB0k14NziwAOsUHdAGWqcABvMhFWOLDQ+1M3q7v8VIHLqq2rMZTq1zBm2c3xD5SMqg4Ubg==", - "type": "package", - "path": "runtime.native.system.net.security/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Security.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "sha512": "PIme9NI+rJxUq5+oU6capGsQf0cy7S2iHf4NXcMLVdBxfaLazc1Kbmq0bp1MEZeXxPa/MX1iYsrlsMu9pSDvAQ==", - "type": "package", - "path": "runtime.native.system.security.cryptography/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", - "runtime.native.System.Security.Cryptography.nuspec" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "jG2RUlidatCPnSlTHhzINxjovVlXvMxLL2bCZWD+Jq56d3xCMGC19PTo1usazxCe/Qk+7teY9uqf1irK0KIgmQ==", - "type": "package", - "path": "system.appcontext/4.1.0", - "files": [ - "System.AppContext.4.1.0.nupkg.sha512", - "System.AppContext.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll" - ] - }, - "System.Buffers/4.0.0": { - "sha512": "oJjTt0VtCWBNJHvw8B84aD7yHHF7vGZ2wUSSyUSNoWZT+DtZfWkDzzcZwlR6MUhL0ZeVwrmxszwv/3iKyXehmg==", - "type": "package", - "path": "system.buffers/4.0.0", - "files": [ - "System.Buffers.4.0.0.nupkg.sha512", - "System.Buffers.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/.xml", - "lib/netstandard1.1/System.Buffers.dll" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "system.collections/4.0.11", - "files": [ - "System.Collections.4.0.11.nupkg.sha512", - "System.Collections.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Concurrent/4.0.12": { - "sha512": "3PRCtEKNqTico/tfqxAVzUcJh03NxVa+Rsi9//9sYj39AmeXbQ/xCuU6pJv9pNGfLBcqc0ig4rxAPC4cvlNRcQ==", - "type": "package", - "path": "system.collections.concurrent/4.0.12", - "files": [ - "System.Collections.Concurrent.4.0.12.nupkg.sha512", - "System.Collections.Concurrent.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Immutable/1.2.0": { - "sha512": "1PjQHJyJpYymxU5ABiiai2Q/htx9GNBMJyBP5sUxLJdTJtVOSCg2eBeGOl14uorPvBooe3QRR9GByOlCyn6kdw==", - "type": "package", - "path": "system.collections.immutable/1.2.0", - "files": [ - "System.Collections.Immutable.1.2.0.nupkg.sha512", - "System.Collections.Immutable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "rjzC4/aSwNQkECA83ZP4Qj47elmqZPSqb4b0xJDyycRFmI904b9HyoPO0/203ZLUVwELTURFp8Ebuf/TQX7O0A==", - "type": "package", - "path": "system.componentmodel/4.0.1", - "files": [ - "System.ComponentModel.4.0.1.nupkg.sha512", - "System.ComponentModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Annotations/4.1.0": { - "sha512": "Rc8tE9c6w/pCXd/13g2DuqHpsl+J3+sh+fvbt/1wXo2GWh7u+oElMJ2wNVcMG6GQQ+jWByKS5VOmSAna32sCPQ==", - "type": "package", - "path": "system.componentmodel.annotations/4.1.0", - "files": [ - "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", - "System.ComponentModel.Annotations.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/portable-net45+win8/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Console/4.0.0": { - "sha512": "fTBZ2g3DwltLc8sdJOy2AgoFgKEN9xziOVGvTJOMPtGQmiN9PokZeyvDdcN+XmNYkUTKaaCy+in9gJMcTLpcnw==", - "type": "package", - "path": "system.console/4.0.0", - "files": [ - "System.Console.4.0.0.nupkg.sha512", - "System.Console.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "KG+exVp/WRV8IC0p0W6VltAbLa5WurSJvcw7X0F4BsfepC/sTj5g3I/Z1YiwuYSJEM5oh/cUUffxdzvmsyFKdQ==", - "type": "package", - "path": "system.diagnostics.debug/4.0.11", - "files": [ - "System.Diagnostics.Debug.4.0.11.nupkg.sha512", - "System.Diagnostics.Debug.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "sha512": "VRrQoK1bg1+2mM8G57QRMVIp4pE/CnXeEzYV3J8/oM2ro5f+yiJEsYa4N76Gy3esS/3KZcN+fl6ZwC5WTsQ5NA==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.0.0", - "files": [ - "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", - "System.Diagnostics.DiagnosticSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" - ] - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "sha512": "qwaovQ4LyAkg7xrHeskWfEd9jR2dJtZZAEw2MuUhjdPxRPhiiZrjb7J2PAYPN+otucscNeBQ510L+Pqqizf5BA==", - "type": "package", - "path": "system.diagnostics.fileversioninfo/4.0.0", - "files": [ - "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", - "System.Diagnostics.FileVersionInfo.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.FileVersionInfo.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" - ] - }, - "System.Diagnostics.Process/4.1.0": { - "sha512": "ByN1UzToBh5U7rLXO2rH+EN590TmaunLED7oPFSEhBU2q7FvszImfDZiogGQXGNEhVbhu8a+2xTJTG9JvEq0PQ==", - "type": "package", - "path": "system.diagnostics.process/4.1.0", - "files": [ - "System.Diagnostics.Process.4.1.0.nupkg.sha512", - "System.Diagnostics.Process.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.Process.dll", - "lib/net461/System.Diagnostics.Process.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.Process.dll", - "ref/net461/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.xml", - "ref/netstandard1.3/de/System.Diagnostics.Process.xml", - "ref/netstandard1.3/es/System.Diagnostics.Process.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.3/it/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", - "ref/netstandard1.4/System.Diagnostics.Process.dll", - "ref/netstandard1.4/System.Diagnostics.Process.xml", - "ref/netstandard1.4/de/System.Diagnostics.Process.xml", - "ref/netstandard1.4/es/System.Diagnostics.Process.xml", - "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.4/it/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win/lib/net46/System.Diagnostics.Process.dll", - "runtimes/win/lib/net461/System.Diagnostics.Process.dll", - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Diagnostics.StackTrace/4.0.1": { - "sha512": "YuE/unaRbpbI7B6pxwJiQAp4OTHg5+jSVUAVNuBYyvwG4s2WMcl3W7/CmRUZbcZ6y0YW7fXfaYltD03R5G0VBw==", - "type": "package", - "path": "system.diagnostics.stacktrace/4.0.1", - "files": [ - "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", - "System.Diagnostics.StackTrace.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.StackTrace.dll", - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" - ] - }, - "System.Diagnostics.Tools/4.0.1": { - "sha512": "3deFSsh/r8+PSUNO56q02CW6lcFm6WFxLj0rXK/n7H2y8aXBGp19UxBd6ULd6jWU3hEtPLDfHZwfnqLAZ/Ol4w==", - "type": "package", - "path": "system.diagnostics.tools/4.0.1", - "files": [ - "System.Diagnostics.Tools.4.0.1.nupkg.sha512", - "System.Diagnostics.Tools.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Tracing/4.1.0": { - "sha512": "l2QHczY4dhwFJSXIlDVN4mzLiLoHxEX7p/VJEeKRi0YfUFQIuSlhDumMQIpQrCVtkANppK29EbyrUDYBeYF4Rg==", - "type": "package", - "path": "system.diagnostics.tracing/4.1.0", - "files": [ - "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", - "System.Diagnostics.Tracing.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "9k+q34XPPYybL1oOME7DovLeuhLX+prxr2OzoWMqUmrnwAr3lxY9OmLEyeKjk4uJIweXNg3644xHLGOZRGU22w==", - "type": "package", - "path": "system.dynamic.runtime/4.0.11", - "files": [ - "System.Dynamic.Runtime.4.0.11.nupkg.sha512", - "System.Dynamic.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "TGLqhQStuTpybLb5lMCGiIKMd/qdI0JyqlhzJpTlOIcWD6EbUVKokw5PkyHs3GWtQbTlT8vWawaInZsmdh91Ww==", - "type": "package", - "path": "system.globalization/4.0.11", - "files": [ - "System.Globalization.4.0.11.nupkg.sha512", - "System.Globalization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Calendars/4.0.1": { - "sha512": "YDAGmKv2fKbA6mkNM/7kGF6Tu5BC3LrWYahEdTGKwZZ1e5bcfi8DtWKhhOuFtxAqNZKMzP757gKIEoFoMxxERg==", - "type": "package", - "path": "system.globalization.calendars/4.0.1", - "files": [ - "System.Globalization.Calendars.4.0.1.nupkg.sha512", - "System.Globalization.Calendars.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Extensions/4.0.1": { - "sha512": "3kHwnZaCXkT5qAnqIQPI8FE3fJ9Ci3mNfprosU7lNZzgWbdqG/wyOqEv0bdKLJcIiCd8BGLRKOnv4MfSWyvSTQ==", - "type": "package", - "path": "system.globalization.extensions/4.0.1", - "files": [ - "System.Globalization.Extensions.4.0.1.nupkg.sha512", - "System.Globalization.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" - ] - }, - "System.IO/4.1.0": { - "sha512": "TZuheeY7Z+UauweflKw+mt/QOexbc5c/ijrw+JnxJ2EHJZl92jiyDogDtUsStlOwXGlu80+ZTjM7s5Gts6/Z5A==", - "type": "package", - "path": "system.io/4.1.0", - "files": [ - "System.IO.4.1.0.nupkg.sha512", - "System.IO.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.Compression/4.1.0": { - "sha512": "cegizkSCPlImy+m3Ox8uf0kOQX268dbVWWAwS9OXvq0yOwusna3r60T2iWArRHbc08lbypqOCP0OF4xROMXGVw==", - "type": "package", - "path": "system.io.compression/4.1.0", - "files": [ - "System.IO.Compression.4.1.0.nupkg.sha512", - "System.IO.Compression.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" - ] - }, - "System.IO.Compression.ZipFile/4.0.1": { - "sha512": "jfxIZhNhAu6OuRldXPZ7/G0aris9swd1CM7axW14tEQvG3sgu3Ayv9gy2IODhdqZH1V2O3htOXwYJ885U8bnqQ==", - "type": "package", - "path": "system.io.compression.zipfile/4.0.1", - "files": [ - "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", - "System.IO.Compression.ZipFile.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "Xn1g1mAnq77IktcrxhA7ebz+H6F6oGcwbpg5/9fPAT3zI4MEfq0j+qSGyIxRNjzglZPIK7yYNKPtNLLLZyOaOA==", - "type": "package", - "path": "system.io.filesystem/4.0.1", - "files": [ - "System.IO.FileSystem.4.0.1.nupkg.sha512", - "System.IO.FileSystem.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "uFeZv2tSDFykvMnolbSF9XJLtdyV0PpvWkeiNiagke4zg6OvFGILcoNif0eqCPLDUGrKLSWVv5yTL1Zk9K7BPg==", - "type": "package", - "path": "system.io.filesystem.primitives/4.0.1", - "files": [ - "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", - "System.IO.FileSystem.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "sha512": "vmbru/9c2IY7JvTt37tYe0FYIdRmifbeXBsKSJiaFY4U6urAD7HjRJySlI7hDQUo3R8s2vKJJ1eKlE1iHuXK0g==", - "type": "package", - "path": "system.io.filesystem.watcher/4.0.0", - "files": [ - "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", - "System.IO.FileSystem.Watcher.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Watcher.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "sha512": "wm55QoEVb6R5wuE08RJcvPIJB2oRrpeHegIUXAek4JfcqcLGFr4hj1XfzaASyiX4dYH0c+Hp8M9aMxI9lhmpPA==", - "type": "package", - "path": "system.io.memorymappedfiles/4.0.0", - "files": [ - "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", - "System.IO.MemoryMappedFiles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.MemoryMappedFiles.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" - ] - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "sha512": "Pb1D8pEiohHZV6J8uWucZq5T19jSZNk5/lvIRYuidFKHPwIPz4ezGcJMPDO9u3/bVvaLEuAhl3OzCwTlmsfj4Q==", - "type": "package", - "path": "system.io.unmanagedmemorystream/4.0.1", - "files": [ - "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", - "System.IO.UnmanagedMemoryStream.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.UnmanagedMemoryStream.dll", - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq/4.1.0": { - "sha512": "zrLjW1Ego8wsTeIH7mVJ4RYg3I6gNCDDuDnb0lCcxWzY2hG54e36i6BzzarXfRdbHOK5+sMWTqrv7p5xpB3ifQ==", - "type": "package", - "path": "system.linq/4.1.0", - "files": [ - "System.Linq.4.1.0.nupkg.sha512", - "System.Linq.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "3AoYHK1ecOutE0bZ4XAPi2LdmkLOfMmn7WlGeXqv/ep1Zb42EwlHrcO417waXS6xRezRMVH8e15wNnwJiCoMxw==", - "type": "package", - "path": "system.linq.expressions/4.1.0", - "files": [ - "System.Linq.Expressions.4.1.0.nupkg.sha512", - "System.Linq.Expressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" - ] - }, - "System.Linq.Parallel/4.0.1": { - "sha512": "lydHObR76vNsZkL7Mn4uSTTo9XO6Dr/oMaSn1rRZegVe+Gb4pV8QGGHYQUAGNZaSIyirCGffrgcFxhlqfq2cQw==", - "type": "package", - "path": "system.linq.parallel/4.0.1", - "files": [ - "System.Linq.Parallel.4.0.1.nupkg.sha512", - "System.Linq.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Parallel.dll", - "lib/netstandard1.3/System.Linq.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Parallel.dll", - "ref/netcore50/System.Linq.Parallel.xml", - "ref/netcore50/de/System.Linq.Parallel.xml", - "ref/netcore50/es/System.Linq.Parallel.xml", - "ref/netcore50/fr/System.Linq.Parallel.xml", - "ref/netcore50/it/System.Linq.Parallel.xml", - "ref/netcore50/ja/System.Linq.Parallel.xml", - "ref/netcore50/ko/System.Linq.Parallel.xml", - "ref/netcore50/ru/System.Linq.Parallel.xml", - "ref/netcore50/zh-hans/System.Linq.Parallel.xml", - "ref/netcore50/zh-hant/System.Linq.Parallel.xml", - "ref/netstandard1.1/System.Linq.Parallel.dll", - "ref/netstandard1.1/System.Linq.Parallel.xml", - "ref/netstandard1.1/de/System.Linq.Parallel.xml", - "ref/netstandard1.1/es/System.Linq.Parallel.xml", - "ref/netstandard1.1/fr/System.Linq.Parallel.xml", - "ref/netstandard1.1/it/System.Linq.Parallel.xml", - "ref/netstandard1.1/ja/System.Linq.Parallel.xml", - "ref/netstandard1.1/ko/System.Linq.Parallel.xml", - "ref/netstandard1.1/ru/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Queryable/4.0.1": { - "sha512": "vcjXDiU8uzARDIQH3gEYbv85+caFaFuS9M+7UFNzB+NODltzp3FlWS9lpylM/g0brzfguqfXSLLuozYnZgPbhw==", - "type": "package", - "path": "system.linq.queryable/4.0.1", - "files": [ - "System.Linq.Queryable.4.0.1.nupkg.sha512", - "System.Linq.Queryable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Queryable.dll", - "lib/netstandard1.3/System.Linq.Queryable.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Queryable.dll", - "ref/netcore50/System.Linq.Queryable.xml", - "ref/netcore50/de/System.Linq.Queryable.xml", - "ref/netcore50/es/System.Linq.Queryable.xml", - "ref/netcore50/fr/System.Linq.Queryable.xml", - "ref/netcore50/it/System.Linq.Queryable.xml", - "ref/netcore50/ja/System.Linq.Queryable.xml", - "ref/netcore50/ko/System.Linq.Queryable.xml", - "ref/netcore50/ru/System.Linq.Queryable.xml", - "ref/netcore50/zh-hans/System.Linq.Queryable.xml", - "ref/netcore50/zh-hant/System.Linq.Queryable.xml", - "ref/netstandard1.0/System.Linq.Queryable.dll", - "ref/netstandard1.0/System.Linq.Queryable.xml", - "ref/netstandard1.0/de/System.Linq.Queryable.xml", - "ref/netstandard1.0/es/System.Linq.Queryable.xml", - "ref/netstandard1.0/fr/System.Linq.Queryable.xml", - "ref/netstandard1.0/it/System.Linq.Queryable.xml", - "ref/netstandard1.0/ja/System.Linq.Queryable.xml", - "ref/netstandard1.0/ko/System.Linq.Queryable.xml", - "ref/netstandard1.0/ru/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "4CQSMfSmTC0DoxKAlpYU6CrDGgTt9Uzv3TMoIAUxIvDk+R8iPtZZsMCgTS7su6IhEh95I7D3hWLTJ3iRlcXeNQ==", - "type": "package", - "path": "system.net.http/4.1.0", - "files": [ - "System.Net.Http.4.1.0.nupkg.sha512", - "System.Net.Http.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" - ] - }, - "System.Net.NameResolution/4.0.0": { - "sha512": "P4UzI1FZ+NxnL725rVCjfdZ25lhn/b5BBH6Z1VMkWSuFgKmvG6Gp8q6ccTqUYHTZel1djqesAycP9RKPGY3gqg==", - "type": "package", - "path": "system.net.nameresolution/4.0.0", - "files": [ - "System.Net.NameResolution.4.0.0.nupkg.sha512", - "System.Net.NameResolution.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.NameResolution.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.xml", - "ref/netstandard1.3/de/System.Net.NameResolution.xml", - "ref/netstandard1.3/es/System.Net.NameResolution.xml", - "ref/netstandard1.3/fr/System.Net.NameResolution.xml", - "ref/netstandard1.3/it/System.Net.NameResolution.xml", - "ref/netstandard1.3/ja/System.Net.NameResolution.xml", - "ref/netstandard1.3/ko/System.Net.NameResolution.xml", - "ref/netstandard1.3/ru/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", - "runtimes/win/lib/net46/System.Net.NameResolution.dll", - "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" - ] - }, - "System.Net.Primitives/4.0.11": { - "sha512": "il8pFOeEAhFg6ZGDbO4h/ybODJrM8XyShNTLt/yUf3ApHbwP4Xv8GRM6TwbvLftsmJYTRqt0Oo+CGY0LGP92Yg==", - "type": "package", - "path": "system.net.primitives/4.0.11", - "files": [ - "System.Net.Primitives.4.0.11.nupkg.sha512", - "System.Net.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Requests/4.0.11": { - "sha512": "YGMSLpwalKACBcTNKwMNShr+ox93248TXbLz9k4x15lhb1lrvDssGHKbgSfgJavAYv+YIF1nCEhmhZOsh7cGuA==", - "type": "package", - "path": "system.net.requests/4.0.11", - "files": [ - "System.Net.Requests.4.0.11.nupkg.sha512", - "System.Net.Requests.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/_._", - "ref/netcore50/System.Net.Requests.dll", - "ref/netcore50/System.Net.Requests.xml", - "ref/netcore50/de/System.Net.Requests.xml", - "ref/netcore50/es/System.Net.Requests.xml", - "ref/netcore50/fr/System.Net.Requests.xml", - "ref/netcore50/it/System.Net.Requests.xml", - "ref/netcore50/ja/System.Net.Requests.xml", - "ref/netcore50/ko/System.Net.Requests.xml", - "ref/netcore50/ru/System.Net.Requests.xml", - "ref/netcore50/zh-hans/System.Net.Requests.xml", - "ref/netcore50/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.0/System.Net.Requests.dll", - "ref/netstandard1.0/System.Net.Requests.xml", - "ref/netstandard1.0/de/System.Net.Requests.xml", - "ref/netstandard1.0/es/System.Net.Requests.xml", - "ref/netstandard1.0/fr/System.Net.Requests.xml", - "ref/netstandard1.0/it/System.Net.Requests.xml", - "ref/netstandard1.0/ja/System.Net.Requests.xml", - "ref/netstandard1.0/ko/System.Net.Requests.xml", - "ref/netstandard1.0/ru/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.1/System.Net.Requests.dll", - "ref/netstandard1.1/System.Net.Requests.xml", - "ref/netstandard1.1/de/System.Net.Requests.xml", - "ref/netstandard1.1/es/System.Net.Requests.xml", - "ref/netstandard1.1/fr/System.Net.Requests.xml", - "ref/netstandard1.1/it/System.Net.Requests.xml", - "ref/netstandard1.1/ja/System.Net.Requests.xml", - "ref/netstandard1.1/ko/System.Net.Requests.xml", - "ref/netstandard1.1/ru/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.3/System.Net.Requests.dll", - "ref/netstandard1.3/System.Net.Requests.xml", - "ref/netstandard1.3/de/System.Net.Requests.xml", - "ref/netstandard1.3/es/System.Net.Requests.xml", - "ref/netstandard1.3/fr/System.Net.Requests.xml", - "ref/netstandard1.3/it/System.Net.Requests.xml", - "ref/netstandard1.3/ja/System.Net.Requests.xml", - "ref/netstandard1.3/ko/System.Net.Requests.xml", - "ref/netstandard1.3/ru/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", - "runtimes/win/lib/net46/_._", - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" - ] - }, - "System.Net.Security/4.0.0": { - "sha512": "PesXUt5FyvG2c6ti12xkuEpOrXnyAWgxUrpvLoGFnQHn/ZOCZaKzsmu5UrrbFBnMbV9wBToH/xAnMP7l4x38Cg==", - "type": "package", - "path": "system.net.security/4.0.0", - "files": [ - "System.Net.Security.4.0.0.nupkg.sha512", - "System.Net.Security.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Security.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.xml", - "ref/netstandard1.3/de/System.Net.Security.xml", - "ref/netstandard1.3/es/System.Net.Security.xml", - "ref/netstandard1.3/fr/System.Net.Security.xml", - "ref/netstandard1.3/it/System.Net.Security.xml", - "ref/netstandard1.3/ja/System.Net.Security.xml", - "ref/netstandard1.3/ko/System.Net.Security.xml", - "ref/netstandard1.3/ru/System.Net.Security.xml", - "ref/netstandard1.3/zh-hans/System.Net.Security.xml", - "ref/netstandard1.3/zh-hant/System.Net.Security.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", - "runtimes/win/lib/net46/System.Net.Security.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Net.Sockets/4.1.0": { - "sha512": "/W5R4HdIxOGakKacFedlSyYv5z/jO2L0k6k8OHfkUD3BRNW60HxVlL5nSssM6ZUdVXUQxHrx9yv1c49XCug2Eg==", - "type": "package", - "path": "system.net.sockets/4.1.0", - "files": [ - "System.Net.Sockets.4.1.0.nupkg.sha512", - "System.Net.Sockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebHeaderCollection/4.0.1": { - "sha512": "4WQARPJuH+HktTtLGnMS/40FgWfq/1DJywnbl5XST1q5bGu0zbhz01SCp1Xqn6dMMlXu4/qmH6C1NyFhQfQ0yA==", - "type": "package", - "path": "system.net.webheadercollection/4.0.1", - "files": [ - "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", - "System.Net.WebHeaderCollection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", - "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Numerics.Vectors/4.1.1": { - "sha512": "vdKSS5kLAMIGSPDXt4XeUu/5QsSHrcMsJEoCj7w1uhm7ZUWPt6Yjz171XFt+0o9dkKMR8RQxp0d8uC7/oLLREg==", - "type": "package", - "path": "system.numerics.vectors/4.1.1", - "files": [ - "System.Numerics.Vectors.4.1.1.nupkg.sha512", - "System.Numerics.Vectors.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "5QIZ0wZPw4ZVRx70m/X2PGvj4y879uSB6BISLnj5H1drygpUmHFoUFLgm3mmHwtPyrkgj6e/BdAZiv5XQ1Q17Q==", - "type": "package", - "path": "system.objectmodel/4.0.12", - "files": [ - "System.ObjectModel.4.0.12.nupkg.sha512", - "System.ObjectModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "GKcvIsJBHkbNYQvyj5IIP+olUGCCRUCFzHBIzGXhu6aJ6kTAnGb4k+/d0jyjjN2+VtbyN37omfXwNKIuWhrXMA==", - "type": "package", - "path": "system.reflection/4.1.0", - "files": [ - "System.Reflection.4.1.0.nupkg.sha512", - "System.Reflection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.DispatchProxy/4.0.1": { - "sha512": "6IjjjP/SeKqan1gIRFH30/HWCGcFKZdeXAjBa4A84spo53Dh4W/EhFAME5ETx3RrjZlc+d7pD9bXDpm+pB6Pzg==", - "type": "package", - "path": "system.reflection.dispatchproxy/4.0.1", - "files": [ - "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", - "System.Reflection.DispatchProxy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", - "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "ODcZmN/d87j4+iKHl5Uok9HcEFXwwFgMVEof26EMchHXmF3i16Mk1jdhcc5ck0Ka/TJQh3wahmn2FEJA0yE/bg==", - "type": "package", - "path": "system.reflection.emit/4.0.1", - "files": [ - "System.Reflection.Emit.4.0.1.nupkg.sha512", - "System.Reflection.Emit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "PsqrjQzBGC6GIimp57JNjFWAZ/Gz2by5axNUcufaZeZA7CxwndrsI589VFHoL0Po/RBYeAlB6y0sezkqWSrX0A==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "files": [ - "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", - "System.Reflection.Emit.ILGeneration.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "Vrm6ju9GFOUYs7gg8puwSyKt1vqRlZh9Nv0qD+kv4lgE1IKxfHzviDmKvGqfT2AYYRtrSx1lphpMNMgv3+1cwg==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.0.1", - "files": [ - "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", - "System.Reflection.Emit.Lightweight.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "GyPPfc9qevCrUY9tOZUmWBKC2yUMSjuN9We6U+adJSgGID2TT2dyng2JV7H0HdJhpRbbFOqnTc6o8bQAh4E0gw==", - "type": "package", - "path": "system.reflection.extensions/4.0.1", - "files": [ - "System.Reflection.Extensions.4.0.1.nupkg.sha512", - "System.Reflection.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.Metadata/1.3.0": { - "sha512": "7P59cN2h7ppeRKnHACgFlOGQgbccW8YxwHFnmj7mDOW/AuL24OmIjUeztl+S+gv/049F9Nj4FAMaFLh5bqpZJA==", - "type": "package", - "path": "system.reflection.metadata/1.3.0", - "files": [ - "System.Reflection.Metadata.1.3.0.nupkg.sha512", - "System.Reflection.Metadata.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "hGFZByoG2o1bF9uiew08wFwh0gtyd2VCYj7XMtIakrwReVr0w++cFtJKlM1OuPoryrldxhPASFP3x5zYnhjVbA==", - "type": "package", - "path": "system.reflection.primitives/4.0.1", - "files": [ - "System.Reflection.Primitives.4.0.1.nupkg.sha512", - "System.Reflection.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "/Xl3UUIeityOW3H9Z/7gxOXU32XZnieW4IVurnD+pR6czi9q6YvfVRtD5Tqf6Y+l61OzxcM8xIfPjCH/UT5bWQ==", - "type": "package", - "path": "system.reflection.typeextensions/4.1.0", - "files": [ - "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", - "System.Reflection.TypeExtensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" - ] - }, - "System.Resources.Reader/4.0.0": { - "sha512": "ylP/7XPvORWwP7bL3QTPSYJ2Na34seTA33c3DT72OcdlmmwrNi5Z83fE0AfunX0LEeJJeuvnOc3pRVvVkEqIqw==", - "type": "package", - "path": "system.resources.reader/4.0.0", - "files": [ - "System.Resources.Reader.4.0.0.nupkg.sha512", - "System.Resources.Reader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Resources.Reader.dll" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "gKLMuj/owdCHY0iPPtDI87lUfkVcjsXsqt9TajV9hHy9/bR56Oj6djYO8g8O1NM9XBIxdBY5RD5HIppb6eq2+A==", - "type": "package", - "path": "system.resources.resourcemanager/4.0.1", - "files": [ - "System.Resources.ResourceManager.4.0.1.nupkg.sha512", - "System.Resources.ResourceManager.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime/4.1.0": { - "sha512": "xo/NbdOGv24g9ZG0K0ODKtIF/rB2XLYNWxU2Z7kvvFdCDsLsCN6H/z8dpPl4/USBIT2xiyZyftXXSrq3ak6RDQ==", - "type": "package", - "path": "system.runtime/4.1.0", - "files": [ - "System.Runtime.4.1.0.nupkg.sha512", - "System.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "9QTtnNromGft2PYSQ9KkdoHJf18sAgDjsOPOAwFeaTvmA3M29UgZF3kCTmFKMRHaUbYqs4/01dXDnFyh4kUAQA==", - "type": "package", - "path": "system.runtime.extensions/4.1.0", - "files": [ - "System.Runtime.Extensions.4.1.0.nupkg.sha512", - "System.Runtime.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "R45CGUzfC+Woh81fbZANBbbdRRfIrWTqdsRtPl5U1A9VH5pdIbDZJtonIHGdQNXnbje7o1dySfdw+jRdJUTJ5A==", - "type": "package", - "path": "system.runtime.handles/4.0.1", - "files": [ - "System.Runtime.Handles.4.0.1.nupkg.sha512", - "System.Runtime.Handles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "mgu5HB77onFMizYDCykMSYkLeqQwvY5OtGNjkQdjXNQmfR/ZDL7Qm0PVlzAWDIwPGaig0qM94U9mQSSxIrKYEg==", - "type": "package", - "path": "system.runtime.interopservices/4.1.0", - "files": [ - "System.Runtime.InteropServices.4.1.0.nupkg.sha512", - "System.Runtime.InteropServices.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "K0ZGNBnTKdTMwev2bSNBPv13JN+ldrnbb6473sW3C+FIiCnqDwjf27GYnGf4XxgoSv5a4YH50+yC46jKCS7AMg==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.0.0", - "files": [ - "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", - "System.Runtime.InteropServices.RuntimeInformation.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" - ] - }, - "System.Runtime.Loader/4.0.0": { - "sha512": "rfBmahFBSNgIWIcY4h7k+/8lvDFVs8h1nnp6CH662jiKPh8oFACayyZnkJBbWCPoSOh6MN+OUFmij4Qo1mIJjQ==", - "type": "package", - "path": "system.runtime.loader/4.0.0", - "files": [ - "System.Runtime.Loader.4.0.0.nupkg.sha512", - "System.Runtime.Loader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net462/_._", - "lib/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.xml", - "ref/netstandard1.5/de/System.Runtime.Loader.xml", - "ref/netstandard1.5/es/System.Runtime.Loader.xml", - "ref/netstandard1.5/fr/System.Runtime.Loader.xml", - "ref/netstandard1.5/it/System.Runtime.Loader.xml", - "ref/netstandard1.5/ja/System.Runtime.Loader.xml", - "ref/netstandard1.5/ko/System.Runtime.Loader.xml", - "ref/netstandard1.5/ru/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" - ] - }, - "System.Runtime.Numerics/4.0.1": { - "sha512": "+uDWR5vk2YhXEztJANPqFUGjoUmqCEzeAo1eIdD+kW3n6Gr2onYQks+aAnRagD5f5PimWtWSVvFED2H8ahdzIw==", - "type": "package", - "path": "system.runtime.numerics/4.0.1", - "files": [ - "System.Runtime.Numerics.4.0.1.nupkg.sha512", - "System.Runtime.Numerics.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Claims/4.0.1": { - "sha512": "Iy2Z8sgdbztk6ZV8aMk5ma6CJ0Pdq5PDxMAPCli9uOfyhmg9LB1h46Myo+uTLZkz1a1AC52rCap5gL/gSo88hA==", - "type": "package", - "path": "system.security.claims/4.0.1", - "files": [ - "System.Security.Claims.4.0.1.nupkg.sha512", - "System.Security.Claims.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Claims.dll", - "lib/netstandard1.3/System.Security.Claims.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.xml", - "ref/netstandard1.3/de/System.Security.Claims.xml", - "ref/netstandard1.3/es/System.Security.Claims.xml", - "ref/netstandard1.3/fr/System.Security.Claims.xml", - "ref/netstandard1.3/it/System.Security.Claims.xml", - "ref/netstandard1.3/ja/System.Security.Claims.xml", - "ref/netstandard1.3/ko/System.Security.Claims.xml", - "ref/netstandard1.3/ru/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "sha512": "SxeJhuMeyo94iNw36tLZ3+ceVc2XBJZypGEpTB6XiUg4e6BF3KQ7nuyxG9NZmLaNhXct+mHHecDqo84fKi8tXA==", - "type": "package", - "path": "system.security.cryptography.algorithms/4.2.0", - "files": [ - "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Algorithms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" - ] - }, - "System.Security.Cryptography.Cng/4.2.0": { - "sha512": "+t+fP4NrEX0Y7YP/dpG9Nw8Bwuj0p3Tgk1hW+ZKPybWhPdPgLUT/5EnJGVUGQ+G60YQ1dOfeDBo+c3pUwAIN+Q==", - "type": "package", - "path": "system.security.cryptography.cng/4.2.0", - "files": [ - "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Cng.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" - ] - }, - "System.Security.Cryptography.Csp/4.0.0": { - "sha512": "wheZXjWMzVLkQame2Ih8xCDOQ+V2EYWFCNWd0JuTfjqZ2mgtu7eH/JE2RGyjcX7cdRqQS2S7A3uG7H9XMTI8zA==", - "type": "package", - "path": "system.security.cryptography.csp/4.0.0", - "files": [ - "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Csp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" - ] - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "sha512": "aRUak1DrRloCWBJwbQk4WFbFoHFBKMs8tCvLB3qIuVGfN4cUzattZLdmUBKE2DgnSOpCCtssdWYoClmGUP0ENA==", - "type": "package", - "path": "system.security.cryptography.encoding/4.0.0", - "files": [ - "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" - ] - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "sha512": "XJOb9CM1wDhM1LV/0WO8ugklvOGzqQcm/S4nYudrzFCwD0hRkyCeqDeEnjx4l0a14qArG7kgM57CPUwhusSsJw==", - "type": "package", - "path": "system.security.cryptography.openssl/4.0.0", - "files": [ - "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", - "System.Security.Cryptography.OpenSsl.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" - ] - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "sha512": "Sxqmk9UCb0lKkEKR4aPC9vnt+DNqRrqaGyQWQ2hNq6VEbxK0AnUW78resJnTMHe9WoAd5xxtGDVr39risB4BJw==", - "type": "package", - "path": "system.security.cryptography.primitives/4.0.0", - "files": [ - "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "sha512": "9ojGSlgAEjxYBxsz7lk8FTmDanXhSehK4sWuyniVN9LhQ023MMolziNLLHQ/ONT7QTdQ0B2gypE1/9hxHTrMwg==", - "type": "package", - "path": "system.security.cryptography.x509certificates/4.1.0", - "files": [ - "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", - "System.Security.Cryptography.X509Certificates.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" - ] - }, - "System.Security.Principal/4.0.1": { - "sha512": "K+ZmITjYRLmaxCXgUI0b2g7w0wt3ynOHHxKeK9usffM1+kzlkjrvcCGkTu/yPe29+8O4mOgtAVLvvvVST52hWg==", - "type": "package", - "path": "system.security.principal/4.0.1", - "files": [ - "System.Security.Principal.4.0.1.nupkg.sha512", - "System.Security.Principal.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Security.Principal.dll", - "lib/netstandard1.0/System.Security.Principal.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Security.Principal.dll", - "ref/netcore50/System.Security.Principal.xml", - "ref/netcore50/de/System.Security.Principal.xml", - "ref/netcore50/es/System.Security.Principal.xml", - "ref/netcore50/fr/System.Security.Principal.xml", - "ref/netcore50/it/System.Security.Principal.xml", - "ref/netcore50/ja/System.Security.Principal.xml", - "ref/netcore50/ko/System.Security.Principal.xml", - "ref/netcore50/ru/System.Security.Principal.xml", - "ref/netcore50/zh-hans/System.Security.Principal.xml", - "ref/netcore50/zh-hant/System.Security.Principal.xml", - "ref/netstandard1.0/System.Security.Principal.dll", - "ref/netstandard1.0/System.Security.Principal.xml", - "ref/netstandard1.0/de/System.Security.Principal.xml", - "ref/netstandard1.0/es/System.Security.Principal.xml", - "ref/netstandard1.0/fr/System.Security.Principal.xml", - "ref/netstandard1.0/it/System.Security.Principal.xml", - "ref/netstandard1.0/ja/System.Security.Principal.xml", - "ref/netstandard1.0/ko/System.Security.Principal.xml", - "ref/netstandard1.0/ru/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Principal.Windows/4.0.0": { - "sha512": "N48FlIaw4yd7zGFNjEvMdl9MfYK0dxF0Gn9V7VVIOraRO2kmShnIyJgw42PAgXZj4dXUACJQCvZ8bZf9pnn7zQ==", - "type": "package", - "path": "system.security.principal.windows/4.0.0", - "files": [ - "System.Security.Principal.Windows.4.0.0.nupkg.sha512", - "System.Security.Principal.Windows.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Principal.Windows.dll", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" - ] - }, - "System.Text.Encoding/4.0.11": { - "sha512": "RcR3Hkm4raW8r4TDs6DKw20r6Vljnx3NHHykupIMc1tngv9nFCaPNPY0uqeQOZq1ux7qO+vPMKs74nWcWVQprQ==", - "type": "package", - "path": "system.text.encoding/4.0.11", - "files": [ - "System.Text.Encoding.4.0.11.nupkg.sha512", - "System.Text.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encoding.CodePages/4.0.1": { - "sha512": "q4jHW+1OYIx3WxpeZhwtMgGEW+T5HP91vnapgvJpuLQcM18R+woA6pgH1d4cPFJOnAuNHXZBB5JPJqR6vl+wDw==", - "type": "package", - "path": "system.text.encoding.codepages/4.0.1", - "files": [ - "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", - "System.Text.Encoding.CodePages.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Text.Encoding.CodePages.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", - "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "+Z9hfMix0fqSrXzcYLgeIeHh4q9xW1CAI3GOiUpFvlgvlOTcKIFSabI2cFt1tZZn+5uiA/oYnMivkemA3u2CKA==", - "type": "package", - "path": "system.text.encoding.extensions/4.0.11", - "files": [ - "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", - "System.Text.Encoding.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "6S1eWqIvhJgomg8VOCyCRib2KUBvd/8RfdYCkXAelhQr1POJabvCbQDT8Bda9kUc4+8Lg4cFkU68kbm6I2UinQ==", - "type": "package", - "path": "system.text.regularexpressions/4.1.0", - "files": [ - "System.Text.RegularExpressions.4.1.0.nupkg.sha512", - "System.Text.RegularExpressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading/4.0.11": { - "sha512": "R2sW0S6z9HLO6oUFJbEkeUurs9TJhNn/3cXwTVgO9EA4P706aGNXLBDuLvPuUfjB2BWYTqQcsQlmEBnNQb6mHg==", - "type": "package", - "path": "system.threading/4.0.11", - "files": [ - "System.Threading.4.0.11.nupkg.sha512", - "System.Threading.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll" - ] - }, - "System.Threading.Overlapped/4.0.1": { - "sha512": "8SRWRTaspxCobR4Lawok80o+UriJ28LA12uxMoJ1SlusDE8/MWF365r1uc5XtgKhxM022jvNnP9s9ANUWRyYMw==", - "type": "package", - "path": "system.threading.overlapped/4.0.1", - "files": [ - "System.Threading.Overlapped.4.0.1.nupkg.sha512", - "System.Threading.Overlapped.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Threading.Overlapped.dll", - "ref/net46/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.xml", - "ref/netstandard1.3/de/System.Threading.Overlapped.xml", - "ref/netstandard1.3/es/System.Threading.Overlapped.xml", - "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", - "ref/netstandard1.3/it/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", - "runtimes/win/lib/net46/System.Threading.Overlapped.dll", - "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" - ] - }, - "System.Threading.Tasks/4.0.11": { - "sha512": "IB6iE91t3bcDlJlga/8iRG42241jo/nicq73BXWxgB3lgNSBOLcKK6ANE5rT/vAJSSw5E/mFhFA45arEVqX0hg==", - "type": "package", - "path": "system.threading.tasks/4.0.11", - "files": [ - "System.Threading.Tasks.4.0.11.nupkg.sha512", - "System.Threading.Tasks.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "sha512": "21UhggAhuA8zv58pr99oZxH0hZaynxV5t2B7o9uToWUmzhATE1VsOAL9utIHdHC7BWqecxqot8VrsKXJWHOs0Q==", - "type": "package", - "path": "system.threading.tasks.dataflow/4.6.0", - "files": [ - "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", - "System.Threading.Tasks.Dataflow.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" - ] - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "sha512": "EuuETt5/NaBSiwK502xqSqagZItyhKOxOq3Bd1LaH2P8VhGt7g15DUXA4vda8WG3s+0XxPg74TELgSFHfVpRIg==", - "type": "package", - "path": "system.threading.tasks.extensions/4.0.0", - "files": [ - "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", - "System.Threading.Tasks.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" - ] - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "sha512": "MgZD6/y8ccybN3OnNqlY9uZfJuJ3c3HNsJAMa9Zo1jrlJvXMwYAUmmcqmLKGJ3QF00vrlo2R2z8zsPy4gKJLeQ==", - "type": "package", - "path": "system.threading.tasks.parallel/4.0.1", - "files": [ - "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", - "System.Threading.Tasks.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/netcore50/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "YYS+wknUwloPKzRK20jKSqEc7t27JMAvZeOp3Q8Qj1e+njrzNnqeE7MgTxh+kROmdel7roLsbcm4JZVvpoghfA==", - "type": "package", - "path": "system.threading.thread/4.0.0", - "files": [ - "System.Threading.Thread.4.0.0.nupkg.sha512", - "System.Threading.Thread.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "XTJ6K31lswfxW3CLhL/wGY+qNkkakc47h5R6OtKKGrfeIlV1F4tt7woDL/fOSPdvyJHjjAQwYW03YDsnjpWryQ==", - "type": "package", - "path": "system.threading.threadpool/4.0.10", - "files": [ - "System.Threading.ThreadPool.4.0.10.nupkg.sha512", - "System.Threading.ThreadPool.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "oqbfAKnuR8KMFZd3lR0do13Im3WhaImg7Ks+zLgFfWu/3R2Qe/4GLRMX0NiuEFm/+wAI5FSivnLRxJz/NG7RKg==", - "type": "package", - "path": "system.threading.timer/4.0.1", - "files": [ - "System.Threading.Timer.4.0.1.nupkg.sha512", - "System.Threading.Timer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.ReaderWriter/4.0.11": { - "sha512": "grM6iCN9rLAhwJ+rt9m59nG4Q28f6hWeqZKQHlJgF7ohe8pVv2IOi6GQ1QSerEvC/jdzNhdv6J08+Tev0kWfBQ==", - "type": "package", - "path": "system.xml.readerwriter/4.0.11", - "files": [ - "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", - "System.Xml.ReaderWriter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XDocument/4.0.11": { - "sha512": "hfbrA/0SmKODLyLEl50lhDWKHUvzfvmkEXqQSEJAesMdD/fe5VvRuwmcD7a1EzQuobMKH8t4pZXabU8c+E//Gg==", - "type": "package", - "path": "system.xml.xdocument/4.0.11", - "files": [ - "System.Xml.XDocument.4.0.11.nupkg.sha512", - "System.Xml.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlDocument/4.0.1": { - "sha512": "ToOSpDN6htjvaJX1lpn2CuPzp9SK6a2mCz1uyznFE6fkjBDiQ4gCRfv/poTH3UYVn03MyyggRmtBnDxvRn1IFA==", - "type": "package", - "path": "system.xml.xmldocument/4.0.1", - "files": [ - "System.Xml.XmlDocument.4.0.1.nupkg.sha512", - "System.Xml.XmlDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/netstandard1.3/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath/4.0.1": { - "sha512": "/8tUgjtMgjwB1Gs62UBYlHOVUqR6+ddQ9vXiJfdncGdix1egte976SpbH3jL4e1c3Ua504a/ACDvoMEAxSYPYQ==", - "type": "package", - "path": "system.xml.xpath/4.0.1", - "files": [ - "System.Xml.XPath.4.0.1.nupkg.sha512", - "System.Xml.XPath.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.dll", - "lib/netstandard1.3/System.Xml.XPath.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.xml", - "ref/netstandard1.3/de/System.Xml.XPath.xml", - "ref/netstandard1.3/es/System.Xml.XPath.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.xml", - "ref/netstandard1.3/it/System.Xml.XPath.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath.XDocument/4.0.1": { - "sha512": "j8Em0n3lK2YHcdtQwPM62NEwHrZar0H3Z2o7wuuW6pykesvnYUJfH8iiD+e3ynFdNt9BcDW20GgP2Ii/G60PqA==", - "type": "package", - "path": "system.xml.xpath.xdocument/4.0.1", - "files": [ - "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", - "System.Xml.XPath.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.XDocument.dll", - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - } - }, - "projectFileDependencyGroups": { - "": [], - ".NETCoreApp,Version=v1.0": [ - "Microsoft.NETCore.App >= 1.0.0" - ] - }, - "tools": {}, - "projectFileToolGroups": {}, - "packageFolders": { - "C:\\.nuget\\packages\\": {} - } -} \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json deleted file mode 100644 index 48af439a1..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/project.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "keyFile": "../../tools/Key.snk" - }, - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "Microsoft.DotNet.Core.Build.Tasks": { - "target": "project" - }, - "Microsoft.DotNet.InternalAbstractions": { - "target": "project" - }, - "xunit": "2.2.0-beta3-build3330", - "FluentAssertions.Json": "4.12.0", - "dotnet-test-xunit": "1.0.0-rc2-318883-21" - }, - "testRunner": "xunit", - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "netstandardapp1.5", - "dotnet5.4", - "portable-net451+win8" - ] - } - } -} diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json deleted file mode 100644 index 9e90ffa5a..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.deps.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v1.0", - "signature": "a813617eb7d3bb5d69fa51d48f64bc6455d8ca5f" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v1.0": { - "simple.dependencies/1.0.0": { - "dependencies": { - "System.Collections.NonGeneric": "4.0.1", - "Newtonsoft.Json": "9.0.1" - }, - "runtime": { - "simple.dependencies.dll": {} - } - }, - "newtonsoft.json/9.0.1": { - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - } - }, - "system.collections.nongeneric/4.0.1": { - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "system.runtime.serialization.primitives/4.1.1": { - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - } - } - }, - "libraries": { - "simple.dependencies/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "newtonsoft.json/9.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==" - }, - "system.collections.nongeneric/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==" - }, - "system.runtime.serialization.primitives/4.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==" - } - } -} \ No newline at end of file diff --git a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json b/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json deleted file mode 100644 index 029c87384..000000000 --- a/test/Microsoft.DotNet.Core.Build.Tasks.Tests/simple.dependencies.project.lock.json +++ /dev/null @@ -1,6796 +0,0 @@ -{ - "locked": false, - "version": 2, - "targets": { - ".NETCoreApp,Version=v1.0": { - "Libuv/1.9.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1" - }, - "runtimeTargets": { - "runtimes/osx/native/_._": { - "assetType": "native", - "rid": "osx" - } - } - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "type": "package" - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "1.1.0", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.FileVersionInfo": "4.0.0", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.Tools": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.CodePages": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath.XDocument": "4.0.1", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[1.3.0]" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "1.3.0" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CSharp.dll": {} - } - }, - "Microsoft.NETCore.App/1.0.0": { - "type": "package", - "dependencies": { - "Libuv": "1.9.0", - "Microsoft.CSharp": "4.0.1", - "Microsoft.CodeAnalysis.CSharp": "1.3.0", - "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", - "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", - "Microsoft.VisualBasic": "10.0.1", - "NETStandard.Library": "1.6.0", - "System.Buffers": "4.0.0", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Annotations": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Process": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.IO.MemoryMappedFiles": "4.0.0", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Parallel": "4.0.1", - "System.Linq.Queryable": "4.0.1", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Net.Security": "4.0.0", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Numerics.Vectors": "4.1.1", - "System.Reflection.DispatchProxy": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.Reader": "4.0.0", - "System.Runtime.Loader": "4.0.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Threading.Tasks.Dataflow": "4.6.0", - "System.Threading.Tasks.Extensions": "4.0.0", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10" - }, - "compile": { - "lib/netcoreapp1.0/_._": {} - }, - "runtime": { - "lib/netcoreapp1.0/_._": {} - } - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "type": "package" - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHostResolver": "1.0.1" - } - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHost": "1.0.1" - } - }, - "Microsoft.NETCore.Jit/1.0.2": { - "type": "package" - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Jit": "1.0.2", - "Microsoft.NETCore.Windows.ApiSets": "1.0.1" - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "type": "package" - }, - "Microsoft.VisualBasic/10.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "Microsoft.Win32.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.Compression.ZipFile": "4.0.1", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Sockets": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "Newtonsoft.Json/9.0.1": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Security/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - } - }, - "System.Buffers/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Collections.Immutable/1.2.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.ComponentModel.Annotations/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} - }, - "runtime": { - "lib/netstandard1.4/_._": {} - } - }, - "System.Console/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Process/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "Microsoft.Win32.Registry": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Diagnostics.Process.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.4/_._": { - "assetType": "runtime", - "rid": "osx" - } - } - }, - "System.Diagnostics.StackTrace/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Immutable": "1.2.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - } - }, - "System.Globalization.Calendars/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Extensions.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.IO.Compression": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.0.1": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Overlapped": "4.0.1", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "osx" - } - } - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Linq.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Linq.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Linq.Queryable/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Linq.Queryable.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Net.Http/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.NameResolution/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Principal.Windows": "4.0.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.NameResolution.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - } - }, - "System.Net.Requests/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Requests.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Security/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Security": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Security.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Sockets/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.Net.WebHeaderCollection/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Numerics.Vectors/4.1.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Numerics.Vectors.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - } - }, - "System.Reflection.DispatchProxy/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - } - }, - "System.Reflection.Metadata/1.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Immutable": "1.2.0", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.Reader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.1/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Loader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/_._": {} - }, - "runtime": { - "lib/netstandard1.5/_._": {} - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - }, - "System.Security.Claims/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Cng": "4.2.0", - "System.Security.Cryptography.Csp": "4.0.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.6/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Principal/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Security.Principal.dll": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "System.Security.Principal.Windows/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - } - }, - "System.Text.Encoding.CodePages/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Overlapped/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/_._": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - } - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - }, - "runtime": { - "lib/netstandard1.1/_._": {} - } - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - } - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Extensions": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XPath/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - }, - "System.Xml.XPath.XDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/_._": {} - } - } - } - }, - "libraries": { - "Libuv/1.9.0": { - "sha512": "R8WOXQyvM/qtpss3OOAAHrvTAXjk3sU2Jycpn9b4o0d/V64odAveBG8iQBKv4Rn6y7IRsQj68TftGMO9mUducg==", - "type": "package", - "path": "Libuv/1.9.0", - "files": [ - "Libuv.1.9.0.nupkg.sha512", - "Libuv.nuspec", - "License.txt", - "runtimes/debian-x64/native/libuv.so", - "runtimes/fedora-x64/native/libuv.so", - "runtimes/opensuse-x64/native/libuv.so", - "runtimes/osx/native/libuv.dylib", - "runtimes/rhel-x64/native/libuv.so", - "runtimes/win7-arm/native/libuv.dll", - "runtimes/win7-x64/native/libuv.dll", - "runtimes/win7-x86/native/libuv.dll" - ] - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "sha512": "DQBn3skrfcDH4k7D0U7Iy0p19Rgh9G5iVsSLwb2wKVXmVNNMerg62paMsbXvbPoAXmo/mswV81kFu3t233iqzg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Analyzers/1.1.0", - "files": [ - "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Analyzers.nuspec", - "ThirdPartyNotices.rtf", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", - "tools/install.ps1", - "tools/uninstall.ps1" - ] - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "sha512": "c4MpVNVkXkeJbHAvrAtpZti8R7Fit7PL+Wxq6wZyudsZ/cUEp/h6owq1SgU6mlmEpkUjIkX5bK6z4VHeV4DfKA==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Common/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Common.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.dll", - "lib/net45/Microsoft.CodeAnalysis.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" - ] - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "sha512": "l8wItUjeoiCQ4yNh3LAfmFUe1oZ/c+JhUSSGDw50HURu1c1Pvjt8rNJ7Mu4mwN7GiIHS/o+zVLiuBxs/fzI19A==", - "type": "package", - "path": "Microsoft.CodeAnalysis.CSharp/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.CSharp.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", - "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" - ] - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "sha512": "1e7G/c5WBVvXurbiyO5Xh7/9JVu4JfnuvmGe2IcsIdryvKfWnhLk36p84dEZwxQ2FCbch6JWn/xGUzTXXhVz0Q==", - "type": "package", - "path": "Microsoft.CodeAnalysis.VisualBasic/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.VisualBasic.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "XaADFLAIOncVa+cCzhZjnAmqUpiDlkcAl5e/rlHqmJkcqiYn+WYyZrtM2nWdhodNs+evRyg4wXSnvs1vkoleMQ==", - "type": "package", - "path": "Microsoft.CSharp/4.0.1", - "files": [ - "Microsoft.CSharp.4.0.1.nupkg.sha512", - "Microsoft.CSharp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.NETCore.App/1.0.0": { - "sha512": "wCaPr6INGtw/mrBld2b6tKZoVtMnXBJoRHPjDf0lyBVvT37IG+oN2bSgbQgexp+sd+QHtzJ3mu3pxng0CEuv9g==", - "type": "package", - "path": "Microsoft.NETCore.App/1.0.0", - "files": [ - "Microsoft.NETCore.App.1.0.0.nupkg.sha512", - "Microsoft.NETCore.App.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netcoreapp1.0/_._" - ] - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "sha512": "drmQROPm5utHQJfaIT0TFwQOuMop7hAJfXHQQ7EIZeVFninr6Iu4/UB3eKLPlODa2qjAWMsUUfiswXo0wBjO+g==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHost/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHost.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "sha512": "0NdjfuteMXC+qBQyNysrSFVJ8r29boAjlvlMnLYql1X4QTfcYmWCUgFWWWGogtx/MC1RWH2riPgJ77enNm1QWw==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostPolicy/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostPolicy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "sha512": "LhPQ2NH748RVJaI9sxA8UzS0fKYoaezTbkft6PGpsocqqsejyvHYi5CAul+2F/rgBpTASUH0JzpjVnkiHnFA0Q==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostResolver/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostResolver.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Jit/1.0.2": { - "sha512": "DSP5BlZ/Fu7Cfhkd2CtAt6EZOiOlaRwcPYKkYElN9LBLr1h5bxf7BbMOnLGXFwBBtEFiKjmHK8/tsZAG8Sn/fg==", - "type": "package", - "path": "Microsoft.NETCore.Jit/1.0.2", - "files": [ - "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Jit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "T/LgCB0BL7RK71g1sMvqsofDUPWD5tUrLCl6S/a9u5iYKeUkBJlwHNXVrjF0meoUI4/3dtfDYuIPh9UrBlgmOw==", - "type": "package", - "path": "Microsoft.NETCore.Platforms/1.0.1", - "files": [ - "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Platforms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "sha512": "rU8ccMrcxuZ4BiJ7DBuzDI4blsg27p7ulP6cgydILvlGTjaKs1+vaIxr29gtQIThQsJ70H/lxjiGG4K6Mt/7CA==", - "type": "package", - "path": "Microsoft.NETCore.Runtime.CoreCLR/1.0.2", - "files": [ - "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.0.1": { - "sha512": "ciEwIQjtqSFLbNh+Cg4Rbi5saNjbRFy7bxi8gY7kPDHnr4Z8xVFgtBTOY24cfxx7FJYZ0MPRMc4Qhn8rFJIx0A==", - "type": "package", - "path": "Microsoft.NETCore.Targets/1.0.1", - "files": [ - "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Targets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "sha512": "WM1T+WUvi1UbFGHzP7Z1t7SlhCMaOPaknL5BCtUqwM3FPiQdhy+dZzm/vvE6E/1vC/M3Ea/rNiWV9yfVgM9mgQ==", - "type": "package", - "path": "Microsoft.NETCore.Windows.ApiSets/1.0.1", - "files": [ - "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.VisualBasic/10.0.1": { - "sha512": "K1mxxLGUicXpzTPSkEqxdglBem5v4NmqTqeg03gpxdzsfI/I0BaWYtc9JBD0mIOfRGp6uM9M5utgZiYJqAxyoA==", - "type": "package", - "path": "Microsoft.VisualBasic/10.0.1", - "files": [ - "Microsoft.VisualBasic.10.0.1.nupkg.sha512", - "Microsoft.VisualBasic.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/Microsoft.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.VisualBasic.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.VisualBasic.dll", - "ref/netcore50/Microsoft.VisualBasic.xml", - "ref/netcore50/de/Microsoft.VisualBasic.xml", - "ref/netcore50/es/Microsoft.VisualBasic.xml", - "ref/netcore50/fr/Microsoft.VisualBasic.xml", - "ref/netcore50/it/Microsoft.VisualBasic.xml", - "ref/netcore50/ja/Microsoft.VisualBasic.xml", - "ref/netcore50/ko/Microsoft.VisualBasic.xml", - "ref/netcore50/ru/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/Microsoft.VisualBasic.dll", - "ref/netstandard1.1/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._" - ] - }, - "Microsoft.Win32.Primitives/4.0.1": { - "sha512": "l0ZrqK6NAJ/PBt6NPSloZ772BusAC6o0qJyI3PL9s8M+649hvuK++aEJ/KYZ7gtMjmWphrdhYoL6AhUVw/qCpQ==", - "type": "package", - "path": "Microsoft.Win32.Primitives/4.0.1", - "files": [ - "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", - "Microsoft.Win32.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.0.0": { - "sha512": "QZQsMYyHWyeeNHSqn6YZVprctxbhZ6QnK9os0kRHxm1LTdFPnw+u21Kj6+H5CLW9WCEnkTZxvrnNTuFLkQ4c1Q==", - "type": "package", - "path": "Microsoft.Win32.Registry/4.0.0", - "files": [ - "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", - "Microsoft.Win32.Registry.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "Jbpa0wLmcErrrp3TjO7uS/Bxwft6HWlL9wC8+LxwC8tHw/pcdDQVvND/9lLiX8Rn0kY+s1/EOz9yWie2TQ5gAQ==", - "type": "package", - "path": "NETStandard.Library/1.6.0", - "files": [ - "NETStandard.Library.1.6.0.nupkg.sha512", - "NETStandard.Library.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt" - ] - }, - "Newtonsoft.Json/9.0.1": { - "sha512": "U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==", - "type": "package", - "path": "Newtonsoft.Json/9.0.1", - "files": [ - "Newtonsoft.Json.9.0.1.nupkg.sha512", - "Newtonsoft.Json.nuspec", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", - "tools/install.ps1" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "41x2lcS1kEVczKU1ryUZykYDyw3CMCdTeUOwt6A1/FJGjWHSxPQm0U/JU4fC9bqmnD7vA4q3uWEaJ1IzrmyJPw==", - "type": "package", - "path": "runtime.native.System/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.4.0.0.nupkg.sha512", - "runtime.native.System.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.1.0": { - "sha512": "L9gcA8G8BREAHoWcOstDugB4/UVbTuQ38UV/Ju4b9IuwVqK80tE1pgy/+LeSnIiF9ws1KW3XQEwl3vb3KSEXXA==", - "type": "package", - "path": "runtime.native.System.IO.Compression/4.1.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", - "runtime.native.System.IO.Compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.0.1": { - "sha512": "MTLNQABiRAiyju80+M+kZUMUlTRP/V0ofcD6vdRzZS1I5ffr0KSxi//21lAS3hLEJfJ623Zi0btO4fR8dnPKPg==", - "type": "package", - "path": "runtime.native.System.Net.Http/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Http.nuspec" - ] - }, - "runtime.native.System.Net.Security/4.0.1": { - "sha512": "d3QUrmQ8fg3qLxAVYwS6B7rizx3+mmf6CbN3+6x43yYwUp27f74BwDPc2jLIgKPPwTzitangLWi+9YqqiES88g==", - "type": "package", - "path": "runtime.native.System.Net.Security/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Security.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "sha512": "6gLQEjlZ2e8AmNlH0YDd102/hZVICNe1folF5RenqK25X852P/IQ/llAwCJVoAKUQlpa8KDrLVuzhjX3JPawRA==", - "type": "package", - "path": "runtime.native.System.Security.Cryptography/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", - "runtime.native.System.Security.Cryptography.nuspec" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "kTXEWzCijc7u4XmD2zfHYmyyrxqc0eqBHeuFMIlwNikCqFJC6AiHfEIZYlZk8HbVTc2A8UWLTBOpBPMFflrqpw==", - "type": "package", - "path": "System.AppContext/4.1.0", - "files": [ - "System.AppContext.4.1.0.nupkg.sha512", - "System.AppContext.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll" - ] - }, - "System.Buffers/4.0.0": { - "sha512": "6hah3sqjZCX6Ba37GRGUY8vslT+KKqLwRom33XExKPh+yYFTA4X2w6fjMVD2wdOuahNr1M/R4Z6I+ogEyciHGQ==", - "type": "package", - "path": "System.Buffers/4.0.0", - "files": [ - "System.Buffers.4.0.0.nupkg.sha512", - "System.Buffers.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/.xml", - "lib/netstandard1.1/System.Buffers.dll" - ] - }, - "System.Collections/4.0.11": { - "sha512": "GetjWwFh14cMNU77nbTHe4Zx49WxFc78Bpwh/JkyQBmDVpLlwnUJQGHe2F1tdDaJMlj9stL1UHTFN/6bcjVv0A==", - "type": "package", - "path": "System.Collections/4.0.11", - "files": [ - "System.Collections.4.0.11.nupkg.sha512", - "System.Collections.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Concurrent/4.0.12": { - "sha512": "s6klY8LSbB2bOLGUAaEd1uuKgSk+uBRVknh9CnsXEIgHrEV66SAjZyC0IivkCxdsOUD4PcpgWvTpH/+p0SeyJA==", - "type": "package", - "path": "System.Collections.Concurrent/4.0.12", - "files": [ - "System.Collections.Concurrent.4.0.12.nupkg.sha512", - "System.Collections.Concurrent.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Immutable/1.2.0": { - "sha512": "NJM6bLtu0XMTIL1tbu4YvePct9oytxbrXGpKDkSBTowmWXtjw+UgK8duC/5QUZ4KP7sgJ82wWj0zJ7o/EiyQiQ==", - "type": "package", - "path": "System.Collections.Immutable/1.2.0", - "files": [ - "System.Collections.Immutable.1.2.0.nupkg.sha512", - "System.Collections.Immutable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" - ] - }, - "System.Collections.NonGeneric/4.0.1": { - "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "type": "package", - "path": "System.Collections.NonGeneric/4.0.1", - "files": [ - "System.Collections.NonGeneric.4.0.1.nupkg.sha512", - "System.Collections.NonGeneric.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "+WQW/7ThcXEyOmX48xzbn6k9wgpZUWFKal7lPaansIGp5KNt0Sqs4yAn48Hk+KSineDpmjRIfFyr9x7p7IX+WQ==", - "type": "package", - "path": "System.ComponentModel/4.0.1", - "files": [ - "System.ComponentModel.4.0.1.nupkg.sha512", - "System.ComponentModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Annotations/4.1.0": { - "sha512": "7e7YTOa1lmKn/SBiIH9OTwdt1gzvw57OleO8J1lDF3Mk4VjEmtBcao6ER3ESvsRYoZ/U9YiHj2g1mhX+fw556Q==", - "type": "package", - "path": "System.ComponentModel.Annotations/4.1.0", - "files": [ - "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", - "System.ComponentModel.Annotations.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/portable-net45+win8/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Console/4.0.0": { - "sha512": "mDEy6iQe09abm2HpuCjSfeJMt8k4Bu7wnqqvfvpNn87A42NyjCbmJ3v1gF/P2M1NoyyoEcMyS9MO8rxeZF761Q==", - "type": "package", - "path": "System.Console/4.0.0", - "files": [ - "System.Console.4.0.0.nupkg.sha512", - "System.Console.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "GOUwHInyMvSBKENMfKGgL+trlGq27LOUqiggBMC69GntL/k0G4/3Dh7qqyp9aVZyraja5jy+YLs5R+5w3JZXeg==", - "type": "package", - "path": "System.Diagnostics.Debug/4.0.11", - "files": [ - "System.Diagnostics.Debug.4.0.11.nupkg.sha512", - "System.Diagnostics.Debug.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "sha512": "gqW2/wPdjw/O0c23ck8JUDWHsa57MqxE4yaqaL01KpLHoaC6IabRV3wLSJBsl6tnCDS4EJExIk5gSMvBJT9L8g==", - "type": "package", - "path": "System.Diagnostics.DiagnosticSource/4.0.0", - "files": [ - "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", - "System.Diagnostics.DiagnosticSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" - ] - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "sha512": "/kVXI1j/fWw8bumaMmoA2Actx/pJGOrFucfEXcLBI5aRatSH5Mqk1hS49Q5REypcV32rbOI0agg/14cEWKpz2Q==", - "type": "package", - "path": "System.Diagnostics.FileVersionInfo/4.0.0", - "files": [ - "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", - "System.Diagnostics.FileVersionInfo.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.FileVersionInfo.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" - ] - }, - "System.Diagnostics.Process/4.1.0": { - "sha512": "2aYQppWQviG/0OKXTwe7FOnHDZLdCCvjN3u6zUw40lxrNzhRhlrz95uPcX/xSHxcxRpomqLhPKsp2R47yuWiQw==", - "type": "package", - "path": "System.Diagnostics.Process/4.1.0", - "files": [ - "System.Diagnostics.Process.4.1.0.nupkg.sha512", - "System.Diagnostics.Process.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.Process.dll", - "lib/net461/System.Diagnostics.Process.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.Process.dll", - "ref/net461/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.xml", - "ref/netstandard1.3/de/System.Diagnostics.Process.xml", - "ref/netstandard1.3/es/System.Diagnostics.Process.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.3/it/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", - "ref/netstandard1.4/System.Diagnostics.Process.dll", - "ref/netstandard1.4/System.Diagnostics.Process.xml", - "ref/netstandard1.4/de/System.Diagnostics.Process.xml", - "ref/netstandard1.4/es/System.Diagnostics.Process.xml", - "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.4/it/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win/lib/net46/System.Diagnostics.Process.dll", - "runtimes/win/lib/net461/System.Diagnostics.Process.dll", - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Diagnostics.StackTrace/4.0.1": { - "sha512": "ZnFIBpSe/Uulh7R7nXorTnkL2POzkaFUL22YXBjthPeLyZSbXm8BMtDgCx1btgMFPF9oVQOS/nmzt4gJSM5z0A==", - "type": "package", - "path": "System.Diagnostics.StackTrace/4.0.1", - "files": [ - "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", - "System.Diagnostics.StackTrace.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.StackTrace.dll", - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" - ] - }, - "System.Diagnostics.Tools/4.0.1": { - "sha512": "oFPexUie0mHe3sVWqdvmmvszsm+FikNSeZToJc9lQ412eILHMF3f1WzXlqKJayUC9klA8WNsREtTnk1A5P+Ggg==", - "type": "package", - "path": "System.Diagnostics.Tools/4.0.1", - "files": [ - "System.Diagnostics.Tools.4.0.1.nupkg.sha512", - "System.Diagnostics.Tools.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Tracing/4.1.0": { - "sha512": "vXwGhvfM0beIjP18dKIMPgx0L9mW06JwMwaY82ZQY6DlZrrR9mWyyOHW2u7ntm5A24yxOhGU60Ylo/Eu6DPoqw==", - "type": "package", - "path": "System.Diagnostics.Tracing/4.1.0", - "files": [ - "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", - "System.Diagnostics.Tracing.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "arcukY36dVZoxQD9tPqAC7qSn1khD5anIUMxIAsLFTKdy/il5yxXIw/gELCCIojxE5WDSiL54c5ENjxemLvY1A==", - "type": "package", - "path": "System.Dynamic.Runtime/4.0.11", - "files": [ - "System.Dynamic.Runtime.4.0.11.nupkg.sha512", - "System.Dynamic.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "93EFhs2UoueVm5ZbDtoNv+gjlZgfV1FR1N9JS1XzFfe0VWfYEpi2zDRbavv71VtNKRpS7L19JGvkWXVaSUlKTQ==", - "type": "package", - "path": "System.Globalization/4.0.11", - "files": [ - "System.Globalization.4.0.11.nupkg.sha512", - "System.Globalization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Calendars/4.0.1": { - "sha512": "ZPoYOVSNSTbaSR/lDaYZdAtxMu5xsOSsu46LpNPlPgLc2mAbo/nLmkyU8S0A90XthMhhP0CT4GBYn8StVA1Hlw==", - "type": "package", - "path": "System.Globalization.Calendars/4.0.1", - "files": [ - "System.Globalization.Calendars.4.0.1.nupkg.sha512", - "System.Globalization.Calendars.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Extensions/4.0.1": { - "sha512": "f6x3H/Lpw6K1MBGbC741p6y6BuVqVG2m0mCTF+XVCZOxxIOVS1NvUal6jukvRt339kt/XFvPI8FiPrMCB+35KA==", - "type": "package", - "path": "System.Globalization.Extensions/4.0.1", - "files": [ - "System.Globalization.Extensions.4.0.1.nupkg.sha512", - "System.Globalization.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" - ] - }, - "System.IO/4.1.0": { - "sha512": "JrXp07/ss3zp+XxstCDw0+nZ/br7btoR5atmKTm1KpbOjsWg/QLwGS8G06hwPSuGi2Gg72aT87XkmJPGTi/sDw==", - "type": "package", - "path": "System.IO/4.1.0", - "files": [ - "System.IO.4.1.0.nupkg.sha512", - "System.IO.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.Compression/4.1.0": { - "sha512": "eBdkXbRWXGtZq60g4xfAtHaMRrMls+V7kMZANCGq4lYVKiDhpa9T8UP/DgmAnm3sXQ7H0bwdj9CpIIq4+ap5Iw==", - "type": "package", - "path": "System.IO.Compression/4.1.0", - "files": [ - "System.IO.Compression.4.1.0.nupkg.sha512", - "System.IO.Compression.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" - ] - }, - "System.IO.Compression.ZipFile/4.0.1": { - "sha512": "gww8ubYRDaNbdObTWjxm3282U5n1IwWdefVsJDYY0GXjfoKaHaKdY9QAawe+EFoQLFcOMb2XKYj2SLrWNI+Uig==", - "type": "package", - "path": "System.IO.Compression.ZipFile/4.0.1", - "files": [ - "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", - "System.IO.Compression.ZipFile.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "Yu1IGorsj0jZuIj2iAqlvR1bJ4ONT1vK77jaD0npgzTP3owP2PXZFoVekMMtkO2TO/0e/zXBVOmDCC4GhIpysg==", - "type": "package", - "path": "System.IO.FileSystem/4.0.1", - "files": [ - "System.IO.FileSystem.4.0.1.nupkg.sha512", - "System.IO.FileSystem.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "XhOqbO9JWdHU+d6ZkILXA96Yz3+XTwznJ78uyhtCgXharLT4mkhlBNNt2eZ8ynV9ChvyQusD7grQvA4H2lC+1Q==", - "type": "package", - "path": "System.IO.FileSystem.Primitives/4.0.1", - "files": [ - "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", - "System.IO.FileSystem.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "sha512": "1Ai0CkKSOIuei9Ht04Ug5e/MHa4wuRDgl+yJDZcz8IrDclLDHodqr+lA9ziUncuHT5JbizLzMWEcM9KZW6jbJw==", - "type": "package", - "path": "System.IO.FileSystem.Watcher/4.0.0", - "files": [ - "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", - "System.IO.FileSystem.Watcher.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Watcher.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "sha512": "I6FvO5VWpPw/VW1DEuME9+jY7EnU3EiPvsfQILWWT7GQ7xirNg3rDOB+w1eWyAs8i8uJTQmt+wiMU1CJH8WF5w==", - "type": "package", - "path": "System.IO.MemoryMappedFiles/4.0.0", - "files": [ - "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", - "System.IO.MemoryMappedFiles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.MemoryMappedFiles.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" - ] - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "sha512": "C/q7XR1nJq4vk6rdnlR3nMRcIpWSP9M8vpfTQ8lTTMW586c0MwXUVpvthGzazELKRr+uY+juJVRfcJCiq8i1Rw==", - "type": "package", - "path": "System.IO.UnmanagedMemoryStream/4.0.1", - "files": [ - "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", - "System.IO.UnmanagedMemoryStream.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.UnmanagedMemoryStream.dll", - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq/4.1.0": { - "sha512": "AvDpmWdu5s2MdyCmrHjyeHed10zGSLLq7kjaZPDcdGz3HPOwRfG6mNcK6jL0XTGFbNfH6C4/5H6c9CuVkV2xqg==", - "type": "package", - "path": "System.Linq/4.1.0", - "files": [ - "System.Linq.4.1.0.nupkg.sha512", - "System.Linq.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "xSoEkwQSrkEx+kgs6maYU4Zn3Rkb0o/FvRyjDSgFsbKU/QPUlhhvAt2zc46WAqTqIaK3M/rYO5mdGAMAyPnQRw==", - "type": "package", - "path": "System.Linq.Expressions/4.1.0", - "files": [ - "System.Linq.Expressions.4.1.0.nupkg.sha512", - "System.Linq.Expressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" - ] - }, - "System.Linq.Parallel/4.0.1": { - "sha512": "J7R9tTmkEIjuqh6pieeSmXf7m/8evxvHDAWZ2al/p74EHHeQRa3zTOaWi5UpOzCoKGB20QjFd+9hV6iM3CypTw==", - "type": "package", - "path": "System.Linq.Parallel/4.0.1", - "files": [ - "System.Linq.Parallel.4.0.1.nupkg.sha512", - "System.Linq.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Parallel.dll", - "lib/netstandard1.3/System.Linq.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Parallel.dll", - "ref/netcore50/System.Linq.Parallel.xml", - "ref/netcore50/de/System.Linq.Parallel.xml", - "ref/netcore50/es/System.Linq.Parallel.xml", - "ref/netcore50/fr/System.Linq.Parallel.xml", - "ref/netcore50/it/System.Linq.Parallel.xml", - "ref/netcore50/ja/System.Linq.Parallel.xml", - "ref/netcore50/ko/System.Linq.Parallel.xml", - "ref/netcore50/ru/System.Linq.Parallel.xml", - "ref/netcore50/zh-hans/System.Linq.Parallel.xml", - "ref/netcore50/zh-hant/System.Linq.Parallel.xml", - "ref/netstandard1.1/System.Linq.Parallel.dll", - "ref/netstandard1.1/System.Linq.Parallel.xml", - "ref/netstandard1.1/de/System.Linq.Parallel.xml", - "ref/netstandard1.1/es/System.Linq.Parallel.xml", - "ref/netstandard1.1/fr/System.Linq.Parallel.xml", - "ref/netstandard1.1/it/System.Linq.Parallel.xml", - "ref/netstandard1.1/ja/System.Linq.Parallel.xml", - "ref/netstandard1.1/ko/System.Linq.Parallel.xml", - "ref/netstandard1.1/ru/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Queryable/4.0.1": { - "sha512": "D07uaRFTD+jLHZ91sVDFcZU0WivI3QrSishVDAHhQeC/m+dax+XD3XqC0OGpdAz7zEMunj5trg5HrmAHuRd+Yw==", - "type": "package", - "path": "System.Linq.Queryable/4.0.1", - "files": [ - "System.Linq.Queryable.4.0.1.nupkg.sha512", - "System.Linq.Queryable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Queryable.dll", - "lib/netstandard1.3/System.Linq.Queryable.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Queryable.dll", - "ref/netcore50/System.Linq.Queryable.xml", - "ref/netcore50/de/System.Linq.Queryable.xml", - "ref/netcore50/es/System.Linq.Queryable.xml", - "ref/netcore50/fr/System.Linq.Queryable.xml", - "ref/netcore50/it/System.Linq.Queryable.xml", - "ref/netcore50/ja/System.Linq.Queryable.xml", - "ref/netcore50/ko/System.Linq.Queryable.xml", - "ref/netcore50/ru/System.Linq.Queryable.xml", - "ref/netcore50/zh-hans/System.Linq.Queryable.xml", - "ref/netcore50/zh-hant/System.Linq.Queryable.xml", - "ref/netstandard1.0/System.Linq.Queryable.dll", - "ref/netstandard1.0/System.Linq.Queryable.xml", - "ref/netstandard1.0/de/System.Linq.Queryable.xml", - "ref/netstandard1.0/es/System.Linq.Queryable.xml", - "ref/netstandard1.0/fr/System.Linq.Queryable.xml", - "ref/netstandard1.0/it/System.Linq.Queryable.xml", - "ref/netstandard1.0/ja/System.Linq.Queryable.xml", - "ref/netstandard1.0/ko/System.Linq.Queryable.xml", - "ref/netstandard1.0/ru/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "BkAwb17jMBDijqtrjf8Tp8gtVK76nJWmMOgCC8vGP7PHIstlrGADxZH5AP1h0C6xeTGXrsztXVXasjb2A9QWjg==", - "type": "package", - "path": "System.Net.Http/4.1.0", - "files": [ - "System.Net.Http.4.1.0.nupkg.sha512", - "System.Net.Http.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" - ] - }, - "System.Net.NameResolution/4.0.0": { - "sha512": "jkERvZB3hT+eNXFJVAeAmro+AqWcHWdvt+ud0ymHtRn5goyuQ6gRGYj+J64QfuJ18hp6blmWaLDHAuyg3WVLcQ==", - "type": "package", - "path": "System.Net.NameResolution/4.0.0", - "files": [ - "System.Net.NameResolution.4.0.0.nupkg.sha512", - "System.Net.NameResolution.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.NameResolution.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.xml", - "ref/netstandard1.3/de/System.Net.NameResolution.xml", - "ref/netstandard1.3/es/System.Net.NameResolution.xml", - "ref/netstandard1.3/fr/System.Net.NameResolution.xml", - "ref/netstandard1.3/it/System.Net.NameResolution.xml", - "ref/netstandard1.3/ja/System.Net.NameResolution.xml", - "ref/netstandard1.3/ko/System.Net.NameResolution.xml", - "ref/netstandard1.3/ru/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", - "runtimes/win/lib/net46/System.Net.NameResolution.dll", - "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" - ] - }, - "System.Net.Primitives/4.0.11": { - "sha512": "0W1rJnR7bkg/kLU2BnHOLOdvJe9eWkzwd27yoR0zqwk5JjQTDJXFVgzr0joQMqffzCr8GAhOmsQ2Ic49VnXytw==", - "type": "package", - "path": "System.Net.Primitives/4.0.11", - "files": [ - "System.Net.Primitives.4.0.11.nupkg.sha512", - "System.Net.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Requests/4.0.11": { - "sha512": "xbqbJz9ulEo77Trphha4CBiolIki7Go2xp2oEVBoSAzM+O4jf1yqAct9KxC0XPchBcywAB2szLCY74DlizAYXg==", - "type": "package", - "path": "System.Net.Requests/4.0.11", - "files": [ - "System.Net.Requests.4.0.11.nupkg.sha512", - "System.Net.Requests.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/_._", - "ref/netcore50/System.Net.Requests.dll", - "ref/netcore50/System.Net.Requests.xml", - "ref/netcore50/de/System.Net.Requests.xml", - "ref/netcore50/es/System.Net.Requests.xml", - "ref/netcore50/fr/System.Net.Requests.xml", - "ref/netcore50/it/System.Net.Requests.xml", - "ref/netcore50/ja/System.Net.Requests.xml", - "ref/netcore50/ko/System.Net.Requests.xml", - "ref/netcore50/ru/System.Net.Requests.xml", - "ref/netcore50/zh-hans/System.Net.Requests.xml", - "ref/netcore50/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.0/System.Net.Requests.dll", - "ref/netstandard1.0/System.Net.Requests.xml", - "ref/netstandard1.0/de/System.Net.Requests.xml", - "ref/netstandard1.0/es/System.Net.Requests.xml", - "ref/netstandard1.0/fr/System.Net.Requests.xml", - "ref/netstandard1.0/it/System.Net.Requests.xml", - "ref/netstandard1.0/ja/System.Net.Requests.xml", - "ref/netstandard1.0/ko/System.Net.Requests.xml", - "ref/netstandard1.0/ru/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.1/System.Net.Requests.dll", - "ref/netstandard1.1/System.Net.Requests.xml", - "ref/netstandard1.1/de/System.Net.Requests.xml", - "ref/netstandard1.1/es/System.Net.Requests.xml", - "ref/netstandard1.1/fr/System.Net.Requests.xml", - "ref/netstandard1.1/it/System.Net.Requests.xml", - "ref/netstandard1.1/ja/System.Net.Requests.xml", - "ref/netstandard1.1/ko/System.Net.Requests.xml", - "ref/netstandard1.1/ru/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.3/System.Net.Requests.dll", - "ref/netstandard1.3/System.Net.Requests.xml", - "ref/netstandard1.3/de/System.Net.Requests.xml", - "ref/netstandard1.3/es/System.Net.Requests.xml", - "ref/netstandard1.3/fr/System.Net.Requests.xml", - "ref/netstandard1.3/it/System.Net.Requests.xml", - "ref/netstandard1.3/ja/System.Net.Requests.xml", - "ref/netstandard1.3/ko/System.Net.Requests.xml", - "ref/netstandard1.3/ru/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", - "runtimes/win/lib/net46/_._", - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" - ] - }, - "System.Net.Security/4.0.0": { - "sha512": "DAdMigsDUPudVlFUpXuLmIpPixoWF2qg3nWwYPfh03xOdrK+pI2+PudxuxBC8hJJPCED53W/kelFItMT2lgcXQ==", - "type": "package", - "path": "System.Net.Security/4.0.0", - "files": [ - "System.Net.Security.4.0.0.nupkg.sha512", - "System.Net.Security.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Security.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.xml", - "ref/netstandard1.3/de/System.Net.Security.xml", - "ref/netstandard1.3/es/System.Net.Security.xml", - "ref/netstandard1.3/fr/System.Net.Security.xml", - "ref/netstandard1.3/it/System.Net.Security.xml", - "ref/netstandard1.3/ja/System.Net.Security.xml", - "ref/netstandard1.3/ko/System.Net.Security.xml", - "ref/netstandard1.3/ru/System.Net.Security.xml", - "ref/netstandard1.3/zh-hans/System.Net.Security.xml", - "ref/netstandard1.3/zh-hant/System.Net.Security.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", - "runtimes/win/lib/net46/System.Net.Security.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Net.Sockets/4.1.0": { - "sha512": "Vr4Zun+nSboRmNHxw1Caanhrbawsl/bYqUOmCkRleLny3OdsSU+/Heo5C6DVI9sPAzq2cCWi4FmNzkqVst70mg==", - "type": "package", - "path": "System.Net.Sockets/4.1.0", - "files": [ - "System.Net.Sockets.4.1.0.nupkg.sha512", - "System.Net.Sockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebHeaderCollection/4.0.1": { - "sha512": "PWVHl0iPXu3k16tkKPtcbb+I84QMm0G9WDXX5ax5re33RGpNluW8nSiM+qz+gGunHavDELXZWw8Iqwr+mkoaLw==", - "type": "package", - "path": "System.Net.WebHeaderCollection/4.0.1", - "files": [ - "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", - "System.Net.WebHeaderCollection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", - "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Numerics.Vectors/4.1.1": { - "sha512": "pXF7egIi6aKokRdt8O5P4tC9b/3i9VnOZKLEsHj6fj6v1TMqtICfhwom3bcQJpVK6X5TOZTHKOZLcROnr+cjjQ==", - "type": "package", - "path": "System.Numerics.Vectors/4.1.1", - "files": [ - "System.Numerics.Vectors.4.1.1.nupkg.sha512", - "System.Numerics.Vectors.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "O+q402luZF3nRK51XkyePYiBi6WVQeiPriESLWlcMK1NJaR6Afffh0WONmTQTwcka+Z6iiNgQzePli4Gl0oUdg==", - "type": "package", - "path": "System.ObjectModel/4.0.12", - "files": [ - "System.ObjectModel.4.0.12.nupkg.sha512", - "System.ObjectModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "hnsgRmEC7EQ4r920kkr4njHfM0PbHSmISiM8uWj0xh/tfj2QfBFVQbRY6jzDMIJI9NM180ztaAyu6xXFqJgbiw==", - "type": "package", - "path": "System.Reflection/4.1.0", - "files": [ - "System.Reflection.4.1.0.nupkg.sha512", - "System.Reflection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.DispatchProxy/4.0.1": { - "sha512": "uc8ys/hjDLRbF3Dgq/h3yOu/scjXwfbA53GZvD5lrJyfMVnjW5I3kW+ohYA8jpiHtuX/qiyymNahHVMjWQ//og==", - "type": "package", - "path": "System.Reflection.DispatchProxy/4.0.1", - "files": [ - "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", - "System.Reflection.DispatchProxy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", - "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "LY/uzPD3sRNysXaZKMXD+WG5AF3VxDybEcwVQVqHEurO2fRj8lLGhXH3GwubeXbadEiYQ0eE2PeR0auXNtx6HA==", - "type": "package", - "path": "System.Reflection.Emit/4.0.1", - "files": [ - "System.Reflection.Emit.4.0.1.nupkg.sha512", - "System.Reflection.Emit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "XfE7FOBbXdtD5uOrRkR6zd6hKLRBp1fpL3HQZbZ0QJW2ZNe7ELHvVZCspBpISMvm3Z7s5vw7hZ9w/yyeFtBEOg==", - "type": "package", - "path": "System.Reflection.Emit.ILGeneration/4.0.1", - "files": [ - "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", - "System.Reflection.Emit.ILGeneration.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "pOsk7aQYUH90F0fTqnUUUIZJfRBRd+J0ixAdQ593TFY1ISzL7xwKvZxWzEoeA9/elOf9eZawYaN2DdII1RMlqg==", - "type": "package", - "path": "System.Reflection.Emit.Lightweight/4.0.1", - "files": [ - "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", - "System.Reflection.Emit.Lightweight.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "IfbmuGxvcwpWuHgvg15l4YAWc/0CPcsFFI+cMhF1Z00Q1ZtnyRYSW677KJIq5x7Oh4U3C6RM0UBbw+IbtD8Ntg==", - "type": "package", - "path": "System.Reflection.Extensions/4.0.1", - "files": [ - "System.Reflection.Extensions.4.0.1.nupkg.sha512", - "System.Reflection.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.Metadata/1.3.0": { - "sha512": "AqzJhKDLd5GV+McOb4nw1E4z6PaDzIdxIpb0QBIjAf4thoTqbg84CxFAfxTB3kzbVSLU9C4NYQyd9R/lU1YIMA==", - "type": "package", - "path": "System.Reflection.Metadata/1.3.0", - "files": [ - "System.Reflection.Metadata.1.3.0.nupkg.sha512", - "System.Reflection.Metadata.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "jrEPZZ9lhfNsWYmubLHDHfLA/h/5H0dpq9mLfF8DEL2HwGoysd1QG36Szxt9N0D+NbXSftFQV4rCl7Me+QQGRQ==", - "type": "package", - "path": "System.Reflection.Primitives/4.0.1", - "files": [ - "System.Reflection.Primitives.4.0.1.nupkg.sha512", - "System.Reflection.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "oi2XhaXLryqd8IM+rrYAyI0z+ZLBXKBHXQ2pTkW53U0nHeavANuVcSUlKP/gBuyTdLKTtqDex2ZXps/L9oKVzQ==", - "type": "package", - "path": "System.Reflection.TypeExtensions/4.1.0", - "files": [ - "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", - "System.Reflection.TypeExtensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" - ] - }, - "System.Resources.Reader/4.0.0": { - "sha512": "nzI6DUrQKAwSNN7y4PjvpblOXt+4aTcogUV+EwkgeiuWjToUW2m4epup65N8FaLJeQybBpTEDiOhSis3qTC1QQ==", - "type": "package", - "path": "System.Resources.Reader/4.0.0", - "files": [ - "System.Resources.Reader.4.0.0.nupkg.sha512", - "System.Resources.Reader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Resources.Reader.dll" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "R73oCHfarGDuS724tGXmJsVGzQfk00OGW8JpiAYt/MMzfPu5T/5yYko/sSM97+sy8VMhP2y8083UzshyujageA==", - "type": "package", - "path": "System.Resources.ResourceManager/4.0.1", - "files": [ - "System.Resources.ResourceManager.4.0.1.nupkg.sha512", - "System.Resources.ResourceManager.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime/4.1.0": { - "sha512": "16wNLsqfhKCTcyWxq3EkWbfnCY/maOUqGLq35UOV2EGz99S5te9xgrqCqBkXwL1BnK62mqpxlK/tWt2Zjqp0Eg==", - "type": "package", - "path": "System.Runtime/4.1.0", - "files": [ - "System.Runtime.4.1.0.nupkg.sha512", - "System.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "t6l7jZsg/NcRHxg+276A+nqmJv/RvqsWTSl8LP3ullxyKu7ZK6rvlrsP10fMdDXuQOiusK7+7fOW3ePwbPXbVQ==", - "type": "package", - "path": "System.Runtime.Extensions/4.1.0", - "files": [ - "System.Runtime.Extensions.4.1.0.nupkg.sha512", - "System.Runtime.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "DrLy26SE00IJfn7X+7c09nibQXNP/XExX9+P03Ldu8NoN0b4Qa0x2wt6Ljok8XT6C+O9ucA+e9ZAe7YTDjFr9A==", - "type": "package", - "path": "System.Runtime.Handles/4.0.1", - "files": [ - "System.Runtime.Handles.4.0.1.nupkg.sha512", - "System.Runtime.Handles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "AEz9Rp0bTyJZwQJLtLQtuAUFAo2y4Z/Hec4NmSPT1ySrpPsGGElSV87DI3jM9VBQv6JDPDzNH2JE9h19wxq5IA==", - "type": "package", - "path": "System.Runtime.InteropServices/4.1.0", - "files": [ - "System.Runtime.InteropServices.4.1.0.nupkg.sha512", - "System.Runtime.InteropServices.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "uEdRRdxU5zCgv1H0bxo/vRHhdc8JFHeZtz8i35go4McrHMBT5n8va8ycyTYWrZSQ8bgLvD7ix8dw5k/bx6B2iQ==", - "type": "package", - "path": "System.Runtime.InteropServices.RuntimeInformation/4.0.0", - "files": [ - "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", - "System.Runtime.InteropServices.RuntimeInformation.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" - ] - }, - "System.Runtime.Loader/4.0.0": { - "sha512": "BOuixOICsGb5WsnmiVaBYSuptC1KApl1vzlRBfQU7Y3ltsszsUNwfMHdNse/yT1knz1Q2cCSXTnq2lfXvm9PFg==", - "type": "package", - "path": "System.Runtime.Loader/4.0.0", - "files": [ - "System.Runtime.Loader.4.0.0.nupkg.sha512", - "System.Runtime.Loader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net462/_._", - "lib/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.xml", - "ref/netstandard1.5/de/System.Runtime.Loader.xml", - "ref/netstandard1.5/es/System.Runtime.Loader.xml", - "ref/netstandard1.5/fr/System.Runtime.Loader.xml", - "ref/netstandard1.5/it/System.Runtime.Loader.xml", - "ref/netstandard1.5/ja/System.Runtime.Loader.xml", - "ref/netstandard1.5/ko/System.Runtime.Loader.xml", - "ref/netstandard1.5/ru/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" - ] - }, - "System.Runtime.Numerics/4.0.1": { - "sha512": "1gKGhH7nUFf7C1gr+bBoMvsBQ2/H4b9B/R+ZBVTVR+sEml+rns+PZF+GECpuCqs7bbNDXj8k7DtWgaBBFqglLQ==", - "type": "package", - "path": "System.Runtime.Numerics/4.0.1", - "files": [ - "System.Runtime.Numerics.4.0.1.nupkg.sha512", - "System.Runtime.Numerics.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", - "type": "package", - "path": "System.Runtime.Serialization.Primitives/4.1.1", - "files": [ - "System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512", - "System.Runtime.Serialization.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Primitives.dll", - "lib/netcore50/System.Runtime.Serialization.Primitives.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll" - ] - }, - "System.Security.Claims/4.0.1": { - "sha512": "Uj4YL2pPL4HjGJV8NczP2Q66UVYjTTQLIi3uROiAwwJkRP2vPQgaZwaeAugciNZgNNZkqHzdvozJAV+Ec/0N/w==", - "type": "package", - "path": "System.Security.Claims/4.0.1", - "files": [ - "System.Security.Claims.4.0.1.nupkg.sha512", - "System.Security.Claims.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Claims.dll", - "lib/netstandard1.3/System.Security.Claims.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.xml", - "ref/netstandard1.3/de/System.Security.Claims.xml", - "ref/netstandard1.3/es/System.Security.Claims.xml", - "ref/netstandard1.3/fr/System.Security.Claims.xml", - "ref/netstandard1.3/it/System.Security.Claims.xml", - "ref/netstandard1.3/ja/System.Security.Claims.xml", - "ref/netstandard1.3/ko/System.Security.Claims.xml", - "ref/netstandard1.3/ru/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "sha512": "nfDTD7z58eF8+OUt9R7UCNqRSzTgFfAH4q2Fbt3yHMP/+15Tu6uZEdUPu+/yE1vUY4PfozxaQ5a78isG/Ha5IA==", - "type": "package", - "path": "System.Security.Cryptography.Algorithms/4.2.0", - "files": [ - "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Algorithms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" - ] - }, - "System.Security.Cryptography.Cng/4.2.0": { - "sha512": "qJ9pnGGae9+LnViB7xjeFAouF0OViIf6MqgqF4PEtNtjze+yDbXakzZcj4+9Acrw80uqhOsKN/Xu48SUuuerpA==", - "type": "package", - "path": "System.Security.Cryptography.Cng/4.2.0", - "files": [ - "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Cng.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" - ] - }, - "System.Security.Cryptography.Csp/4.0.0": { - "sha512": "NVEnNApnW+5UAQg96yfGX6bAihbemBQTkJT+wmEyxNe+0JUcvATBJhF15Dh/Z04/sJPTPBfeC2k3QbE0O7zGkw==", - "type": "package", - "path": "System.Security.Cryptography.Csp/4.0.0", - "files": [ - "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Csp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" - ] - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "sha512": "Ym5NRRQ1ZcHi+s/bME47Q9KuakimP/sJXfkY+dfHGu67hgBdrLcB0xs1LbKKVip1kGukZpS40qCpFm37KO/h+A==", - "type": "package", - "path": "System.Security.Cryptography.Encoding/4.0.0", - "files": [ - "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" - ] - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "sha512": "pcPHa9ffsgALcBW/IpZSoHdKLuK8L1W1Rls9D32vKzbSYtBcZZacGb+tQLjgGX4TTK4BWsIN8c+RyTvnjly5Xw==", - "type": "package", - "path": "System.Security.Cryptography.OpenSsl/4.0.0", - "files": [ - "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", - "System.Security.Cryptography.OpenSsl.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" - ] - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "sha512": "NoZUZptChcNKOUu6DEJjlBDMPoFvw4QnoHN5wlddmi9idGe0a9wXcRqLANsfsdwPR9wFCMC3B2DhwlN5XP/mug==", - "type": "package", - "path": "System.Security.Cryptography.Primitives/4.0.0", - "files": [ - "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "sha512": "3e5jXb54vQuItYXB/KBMsqUw645c/JQjz1MoJ5uaco3mu+fLpscUeR0rQwcctjVAIMDEF6pGEa8falmDvyCIPg==", - "type": "package", - "path": "System.Security.Cryptography.X509Certificates/4.1.0", - "files": [ - "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", - "System.Security.Cryptography.X509Certificates.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" - ] - }, - "System.Security.Principal/4.0.1": { - "sha512": "awQM/V57TinvUv04eNBkuZfpZpS3TykQmw457uQIfb1c1NUb8s0WloI8F+8OefgMKFUArZqS/CTIo1MaxzI41A==", - "type": "package", - "path": "System.Security.Principal/4.0.1", - "files": [ - "System.Security.Principal.4.0.1.nupkg.sha512", - "System.Security.Principal.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Security.Principal.dll", - "lib/netstandard1.0/System.Security.Principal.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Security.Principal.dll", - "ref/netcore50/System.Security.Principal.xml", - "ref/netcore50/de/System.Security.Principal.xml", - "ref/netcore50/es/System.Security.Principal.xml", - "ref/netcore50/fr/System.Security.Principal.xml", - "ref/netcore50/it/System.Security.Principal.xml", - "ref/netcore50/ja/System.Security.Principal.xml", - "ref/netcore50/ko/System.Security.Principal.xml", - "ref/netcore50/ru/System.Security.Principal.xml", - "ref/netcore50/zh-hans/System.Security.Principal.xml", - "ref/netcore50/zh-hant/System.Security.Principal.xml", - "ref/netstandard1.0/System.Security.Principal.dll", - "ref/netstandard1.0/System.Security.Principal.xml", - "ref/netstandard1.0/de/System.Security.Principal.xml", - "ref/netstandard1.0/es/System.Security.Principal.xml", - "ref/netstandard1.0/fr/System.Security.Principal.xml", - "ref/netstandard1.0/it/System.Security.Principal.xml", - "ref/netstandard1.0/ja/System.Security.Principal.xml", - "ref/netstandard1.0/ko/System.Security.Principal.xml", - "ref/netstandard1.0/ru/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Principal.Windows/4.0.0": { - "sha512": "6AjgoFpkgOXi6ff/QA8X7ptSzHgxfdDGFzXBrgtCuYWp7yZEA5UpgYXTUz+BRN0ghptF0QiT7XMks1VFWjdkPA==", - "type": "package", - "path": "System.Security.Principal.Windows/4.0.0", - "files": [ - "System.Security.Principal.Windows.4.0.0.nupkg.sha512", - "System.Security.Principal.Windows.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Principal.Windows.dll", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" - ] - }, - "System.Text.Encoding/4.0.11": { - "sha512": "qNhrsRyOiAJEebUgu4u8j0KKwVxE6ToQXD7SVI1ZEzDjBANJqWuGmJkCGyPavi/L5oW5c3nfZd+SWYy3gHpeQw==", - "type": "package", - "path": "System.Text.Encoding/4.0.11", - "files": [ - "System.Text.Encoding.4.0.11.nupkg.sha512", - "System.Text.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encoding.CodePages/4.0.1": { - "sha512": "SPSEk/+yGF/8671SF4otT/7Ccy0v96cUfHIzxhTvzkttd7ilIUKXnFNi2pR0No9w0mN37FOZeWH/1anvUpvwLg==", - "type": "package", - "path": "System.Text.Encoding.CodePages/4.0.1", - "files": [ - "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", - "System.Text.Encoding.CodePages.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Text.Encoding.CodePages.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", - "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "riSwTArdagYKjrp/DzoyVuK9wh6d3F+rHzR5/eyEb83VTIToGreYlnC/cDF/H1llhZhykBr7CG0gkxnUKTGtGA==", - "type": "package", - "path": "System.Text.Encoding.Extensions/4.0.11", - "files": [ - "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", - "System.Text.Encoding.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "kyy6kxns6bAysPO9m29a/lIgPthlAOl4AHuN55etAos2laoFdaWo6U/4OdyoBnJO+Bxh5FlFO7fpP5A69T0KLg==", - "type": "package", - "path": "System.Text.RegularExpressions/4.1.0", - "files": [ - "System.Text.RegularExpressions.4.1.0.nupkg.sha512", - "System.Text.RegularExpressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading/4.0.11": { - "sha512": "dsJUbvClITs+Pznqq3N//aMDJNneTRYMoEsVKDmAHGh8EPjDB4FvAmcHMeoj4xyO3fZTpk5/7xcZBSG7PXb7kA==", - "type": "package", - "path": "System.Threading/4.0.11", - "files": [ - "System.Threading.4.0.11.nupkg.sha512", - "System.Threading.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll" - ] - }, - "System.Threading.Overlapped/4.0.1": { - "sha512": "41i+EAxyCW+/evnvXSKj0IHfUiMwHZohxyq7dalgZfO58o7ep5qll81/aLr5cvtPfS/91iHkFp5MGLED/ry7Dw==", - "type": "package", - "path": "System.Threading.Overlapped/4.0.1", - "files": [ - "System.Threading.Overlapped.4.0.1.nupkg.sha512", - "System.Threading.Overlapped.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Threading.Overlapped.dll", - "ref/net46/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.xml", - "ref/netstandard1.3/de/System.Threading.Overlapped.xml", - "ref/netstandard1.3/es/System.Threading.Overlapped.xml", - "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", - "ref/netstandard1.3/it/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", - "runtimes/win/lib/net46/System.Threading.Overlapped.dll", - "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" - ] - }, - "System.Threading.Tasks/4.0.11": { - "sha512": "TtdCvO0IIheiswtc9Ngly7J9QBkap5X23ujGaaUSBPuKqKl7U7JYtcRfIsQMwyZ+O91uyMradQPZGwCsMzeATw==", - "type": "package", - "path": "System.Threading.Tasks/4.0.11", - "files": [ - "System.Threading.Tasks.4.0.11.nupkg.sha512", - "System.Threading.Tasks.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "sha512": "OK7OxIJ9u4tpQ7K2rkal+qHqipIQ576CgHHm6nNlwMymqCPdihtFLhb1TV+MSSMWyeOTA3fT3eQNLlnBBlrQ5A==", - "type": "package", - "path": "System.Threading.Tasks.Dataflow/4.6.0", - "files": [ - "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", - "System.Threading.Tasks.Dataflow.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" - ] - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "sha512": "tNrguBmbHTG/UsTJPlgZhlb2iAGJQVguY/amgbR4z36eB4bDelHSLl5/S5qxBVL/rzbAwWhlGntc6x1LiM3t8w==", - "type": "package", - "path": "System.Threading.Tasks.Extensions/4.0.0", - "files": [ - "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", - "System.Threading.Tasks.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" - ] - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "sha512": "Hck6r2cP4010W10GHj0T+2aC4BlwfR5Jryo66LuKneqWYv8woLvkB33wms+u99zkHowvrMyH5GyAn+3Xy/oNYQ==", - "type": "package", - "path": "System.Threading.Tasks.Parallel/4.0.1", - "files": [ - "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", - "System.Threading.Tasks.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/netcore50/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "bZZ1sPwuEgP+ldGNxjznhbr6l43j/FshRA5B79FEPK7JuRXfzywYijLVx7xwRWp6JspbjTJ6vyxCewU0SudBIQ==", - "type": "package", - "path": "System.Threading.Thread/4.0.0", - "files": [ - "System.Threading.Thread.4.0.0.nupkg.sha512", - "System.Threading.Thread.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "XsayrwW56AZOeZODMbycHoip7UvhWo4gvP+lQuPWiRLoBmf5544Y7u1OqLCtyHpyVKfdwgUhvjmwnt2nDvOSJw==", - "type": "package", - "path": "System.Threading.ThreadPool/4.0.10", - "files": [ - "System.Threading.ThreadPool.4.0.10.nupkg.sha512", - "System.Threading.ThreadPool.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "IGPz3ncIsWGzTI31Ew6LF9vUfT9IbGLuaA7sZNT8HiJ5icwmQP4dZB1Iquvyyr5+6IshhyBZAYL+PT7WvW26HQ==", - "type": "package", - "path": "System.Threading.Timer/4.0.1", - "files": [ - "System.Threading.Timer.4.0.1.nupkg.sha512", - "System.Threading.Timer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.ReaderWriter/4.0.11": { - "sha512": "hmEjrB85NCiD50cw9JkQvzHGAZ+I9guEg2zGLYKSZdjzPDYdg25mmGehf86zfJwZdW5XBi7owJpLZWRU5QDH2Q==", - "type": "package", - "path": "System.Xml.ReaderWriter/4.0.11", - "files": [ - "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", - "System.Xml.ReaderWriter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XDocument/4.0.11": { - "sha512": "Kg0Ca0bBCniaLGY2EnmJ+GTZlrQswzd530hIiRi0Zm4iMdDdxV67Fv73B5gwh+sMGHqaW/Q917waIqmSFxTaOg==", - "type": "package", - "path": "System.Xml.XDocument/4.0.11", - "files": [ - "System.Xml.XDocument.4.0.11.nupkg.sha512", - "System.Xml.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlDocument/4.0.1": { - "sha512": "5fyjMTXJNcbDv4aCJN1RyNzu3/xObqJlfzX8OVgJ3DXHeapmjj7zkt1YoGiEzqamG1DPZ9epRVLsf+SxBjf5hQ==", - "type": "package", - "path": "System.Xml.XmlDocument/4.0.1", - "files": [ - "System.Xml.XmlDocument.4.0.1.nupkg.sha512", - "System.Xml.XmlDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/netstandard1.3/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath/4.0.1": { - "sha512": "HoPTx0vnO+b3F3/CbyERk+DTFTOQjYvie4wPgwdtRXmDa1zo4qzIUCT3FWFeRh9Bg/V5hhm6pHxY9arJD56SLA==", - "type": "package", - "path": "System.Xml.XPath/4.0.1", - "files": [ - "System.Xml.XPath.4.0.1.nupkg.sha512", - "System.Xml.XPath.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.dll", - "lib/netstandard1.3/System.Xml.XPath.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.xml", - "ref/netstandard1.3/de/System.Xml.XPath.xml", - "ref/netstandard1.3/es/System.Xml.XPath.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.xml", - "ref/netstandard1.3/it/System.Xml.XPath.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath.XDocument/4.0.1": { - "sha512": "dgXOf8OwZhN7XEQxU3goBEad6DvEZB3GoGXMdqu8XEG5HX1sJ8tIYIedsjJWqAsEHnbYnPDd82Y9gagu0jyVqQ==", - "type": "package", - "path": "System.Xml.XPath.XDocument/4.0.1", - "files": [ - "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", - "System.Xml.XPath.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.XDocument.dll", - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - } - }, - "projectFileDependencyGroups": { - "": [ - "Newtonsoft.Json >= 9.0.1" - ], - ".NETCoreApp,Version=v1.0": [ - "Microsoft.NETCore.App >= 1.0.0", - "System.Collections.NonGeneric >= 4.0.1" - ] - }, - "tools": {}, - "projectFileToolGroups": {} -} \ No newline at end of file From 70c80bf2d3262219e13579d61b715995c7e226fc Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 11 Aug 2016 07:42:23 -0500 Subject: [PATCH 162/165] Fix CI by not copying Microsoft.DotNet.PlatformAbstractions to stage0, since it is already loaded into the stage0 dotnet process. --- build.proj | 3 --- 1 file changed, 3 deletions(-) diff --git a/build.proj b/build.proj index 1bd77c031..fd7420b34 100644 --- a/build.proj +++ b/build.proj @@ -62,9 +62,6 @@ Microsoft.WindowsAzure.Storage.dll - - Microsoft.DotNet.PlatformAbstractions.dll - From 6cf21679920fe10dd592f41b069817e2ab7f03fc Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Wed, 10 Aug 2016 19:44:02 -0500 Subject: [PATCH 163/165] Update the CLI to use the new Core SDK nuget package. No need for build3 to set Platform properties and BaseNuGetRuntimeIdentifier. The SDK handles that. Also, no need to set "runtimes" any more in the default project.json. --- .../TestProjects/MSBuildTestApp/project.json | 20 ++----------------- .../dotnet-build3/MSBuildForwardingApp.cs | 16 --------------- .../CSharp_MSBuild/project.json.template | 4 +--- src/dotnet/commands/dotnet-new/Program.cs | 9 --------- 4 files changed, 3 insertions(+), 46 deletions(-) diff --git a/TestAssets/TestProjects/MSBuildTestApp/project.json b/TestAssets/TestProjects/MSBuildTestApp/project.json index 57bb1cf54..de055296f 100644 --- a/TestAssets/TestProjects/MSBuildTestApp/project.json +++ b/TestAssets/TestProjects/MSBuildTestApp/project.json @@ -2,28 +2,12 @@ "frameworks": { "netcoreapp1.0": { "dependencies": { + "Microsoft.DotNet.Core.Sdk": "1.0.0-alpha-20160811-3", "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" } } } - }, - "runtimes": { - "win7-x64": {}, - "win7-x86": {}, - "win81-x64": {}, - "win81-x86": {}, - "win10-x64": {}, - "win10-x86": {}, - "osx.10.10-x64": {}, - "osx.10.11-x64": {}, - "ubuntu.14.04-x64": {}, - "ubuntu.16.04-x64": {}, - "centos.7-x64": {}, - "rhel.7.2-x64": {}, - "debian.8-x64": {}, - "fedora.23-x64": {}, - "opensuse.13.2-x64": {} - }, + } } diff --git a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs index 2c5fbb4c8..76e28d9ba 100644 --- a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs +++ b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs @@ -6,8 +6,6 @@ using Microsoft.DotNet.PlatformAbstractions; using System; using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Threading.Tasks; namespace Microsoft.DotNet.Cli { @@ -35,18 +33,9 @@ namespace Microsoft.DotNet.Cli { { "MSBuildExtensionsPath", AppContext.BaseDirectory }, { "DotnetHostPath", GetHostPath() }, - { "BaseNuGetRuntimeIdentifier", GetCurrentBaseRid() }, - { "Platform", GetCurrentArchitecture() }, - { "PlatformTarget", GetCurrentArchitecture() } }; } - private static string GetCurrentBaseRid() - { - return RuntimeEnvironment.GetRuntimeIdentifier() - .Replace("-" + RuntimeEnvironment.RuntimeArchitecture, ""); - } - private static string GetHostPath() { return new Muxer().MuxerPath; @@ -58,10 +47,5 @@ namespace Microsoft.DotNet.Cli AppContext.BaseDirectory, s_msbuildExeName); } - - private static string GetCurrentArchitecture() - { - return RuntimeEnvironment.RuntimeArchitecture; - } } } diff --git a/src/dotnet/commands/dotnet-new/CSharp_MSBuild/project.json.template b/src/dotnet/commands/dotnet-new/CSharp_MSBuild/project.json.template index b785979b5..0e553f9eb 100644 --- a/src/dotnet/commands/dotnet-new/CSharp_MSBuild/project.json.template +++ b/src/dotnet/commands/dotnet-new/CSharp_MSBuild/project.json.template @@ -3,14 +3,12 @@ "frameworks": { "netcoreapp1.0": { "dependencies": { + "Microsoft.DotNet.Core.Sdk": "1.0.0-alpha-20160811-3", "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" } } } - }, - "runtimes": { - "$currentruntime$": {} } } diff --git a/src/dotnet/commands/dotnet-new/Program.cs b/src/dotnet/commands/dotnet-new/Program.cs index 89a62193b..b527dc332 100644 --- a/src/dotnet/commands/dotnet-new/Program.cs +++ b/src/dotnet/commands/dotnet-new/Program.cs @@ -98,15 +98,6 @@ namespace Microsoft.DotNet.Tools.New File.Move( Path.Combine(projectDirectory, "project.json.template"), projectJsonFile); - - string originalProjectJsonText = File.ReadAllText(projectJsonFile); - string replacedProjectJsonText = originalProjectJsonText - .Replace("$currentruntime$", RuntimeEnvironment.GetRuntimeIdentifier()); - - if (replacedProjectJsonText != originalProjectJsonText) - { - File.WriteAllText(projectJsonFile, replacedProjectJsonText); - } } private static void ReplaceFileTemplateNames(string projectDirectory) From 8bd9430660e5d4c848947be6cba2456642264c1b Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Thu, 11 Aug 2016 16:09:06 -0700 Subject: [PATCH 164/165] Removing the hack that added Microsoft.WindowsAzure.Storage.dll to stage0 because of an issue in msbuild. --- build.proj | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/build.proj b/build.proj index fd7420b34..4aa253178 100644 --- a/build.proj +++ b/build.proj @@ -56,17 +56,6 @@ RestoreDotnetCliBuildFramework"> - - - - - Microsoft.WindowsAzure.Storage.dll - - - - - Date: Wed, 10 Aug 2016 23:45:30 -0700 Subject: [PATCH 165/165] Adding Restore3 command for msbuild restore support. --- build_projects/dotnet-cli-build/project.json | 2 +- .../Microsoft.NuGet.ImportAfter.targets | 6 + src/Microsoft.DotNet.Cli.Utils/project.json | 8 +- .../project.json | 6 +- src/dotnet/Program.cs | 4 +- .../dotnet-build3/MSBuildForwardingApp.cs | 2 +- .../commands/dotnet-restore3/Program.cs | 111 ++++++++++++++++++ src/dotnet/project.json | 4 +- src/redist/project.json | 3 +- src/tool_nuget/project.json | 2 +- .../project.json | 8 +- 11 files changed, 138 insertions(+), 18 deletions(-) create mode 100644 src/dotnet/commands/dotnet-restore3/Program.cs diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 1d2582b09..644b04f13 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -20,7 +20,7 @@ "System.Runtime.Serialization.Primitives": "4.1.1", "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", - "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697", + "NuGet.CommandLine.XPlat": "3.6.0-beta.1.msbuild.1", "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" diff --git a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets index b1da40f46..f88dc4adf 100644 --- a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets +++ b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets @@ -14,4 +14,10 @@ Copyright (c) .NET Foundation. All rights reserved. $(MSBuildExtensionsPath)\Microsoft.NuGet.targets + + + + $(MSBuildExtensionsPath)\NuGet.targets + + diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index 9b717250a..a6939ef41 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -9,10 +9,10 @@ "target": "project" }, "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914", - "NuGet.Versioning": "3.5.0-rc1-1697", - "NuGet.Packaging": "3.5.0-rc1-1697", - "NuGet.Frameworks": "3.5.0-rc1-1697", - "NuGet.ProjectModel": "3.5.0-rc1-1697" + "NuGet.Versioning": "3.6.0-beta.1.msbuild.1", + "NuGet.Packaging": "3.6.0-beta.1.msbuild.1", + "NuGet.Frameworks": "3.6.0-beta.1.msbuild.1", + "NuGet.ProjectModel": "3.6.0-beta.1.msbuild.1" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index c129163fa..95436c6dc 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -8,9 +8,9 @@ "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000914", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914", "Newtonsoft.Json": "9.0.1", - "NuGet.Configuration": "3.5.0-rc1-1697", - "NuGet.Packaging": "3.5.0-rc1-1697", - "NuGet.RuntimeModel": "3.5.0-rc1-1697", + "NuGet.Configuration": "3.6.0-beta.1.msbuild.1", + "NuGet.Packaging": "3.6.0-beta.1.msbuild.1", + "NuGet.RuntimeModel": "3.6.0-beta.1.msbuild.1", "System.Reflection.Metadata": "1.3.0" }, "frameworks": { diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs index b79ee90a3..d297ef88b 100644 --- a/src/dotnet/Program.cs +++ b/src/dotnet/Program.cs @@ -17,6 +17,7 @@ using Microsoft.DotNet.Tools.Help; using Microsoft.DotNet.Tools.New; using Microsoft.DotNet.Tools.Publish; using Microsoft.DotNet.Tools.Restore; +using Microsoft.DotNet.Tools.Restore3; using Microsoft.DotNet.Tools.Run; using Microsoft.DotNet.Tools.Test; using NuGet.Frameworks; @@ -37,7 +38,8 @@ namespace Microsoft.DotNet.Cli ["run"] = RunCommand.Run, ["test"] = TestCommand.Run, ["build3"] = Build3Command.Run, - ["run3"] = Run3Command.Run + ["run3"] = Run3Command.Run, + ["restore3"] = Restore3Command.Run, }; public static int Main(string[] args) diff --git a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs index 76e28d9ba..0815d769e 100644 --- a/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs +++ b/src/dotnet/commands/dotnet-build3/MSBuildForwardingApp.cs @@ -14,7 +14,7 @@ namespace Microsoft.DotNet.Cli private const string s_msbuildExeName = "MSBuild.exe"; private readonly ForwardingApp _forwardingApp; - public MSBuildForwardingApp(string[] argsToForward) + public MSBuildForwardingApp(IEnumerable argsToForward) { _forwardingApp = new ForwardingApp( GetMSBuildExePath(), diff --git a/src/dotnet/commands/dotnet-restore3/Program.cs b/src/dotnet/commands/dotnet-restore3/Program.cs new file mode 100644 index 000000000..c47eeb1bb --- /dev/null +++ b/src/dotnet/commands/dotnet-restore3/Program.cs @@ -0,0 +1,111 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.CommandLine; +using Microsoft.DotNet.Cli.Utils; + +namespace Microsoft.DotNet.Tools.Restore3 +{ + public class Restore3Command + { + public static int Run(string[] args) + { + DebugHelper.HandleDebugSwitch(ref args); + + CommandLineApplication cmd = new CommandLineApplication(throwOnUnexpectedArg: false) + { + Name = "restore3", + FullName = "restore3", + Description = "restore for msbuild" + }; + + cmd.HelpOption("-h|--help"); + + var argRoot = cmd.Argument( + "[root]", + "Optional path to a project file or MSBuild arguments.", + multipleValues: true); + + var sourceOption = cmd.Option( + "-s|--source ", + "Specifies a NuGet package source to use during the restore.", + CommandOptionType.MultipleValue); + + var packagesOption = cmd.Option( + "--packages ", + "Directory to install packages in.", + CommandOptionType.SingleValue); + + var disableParallelOption = cmd.Option( + "--disable-parallel", + "Disables restoring multiple projects in parallel.", + CommandOptionType.NoValue); + + var configFileOption = cmd.Option( + "--configfile ", + "The NuGet configuration file to use.", + CommandOptionType.SingleValue); + + var noCacheOption = cmd.Option( + "--no-cache", + "Do not cache packages and http requests.", + CommandOptionType.NoValue); + + var ignoreFailedSourcesOption = cmd.Option( + "--ignore-failed-sources", + "Treat package source failures as warnings.", + CommandOptionType.NoValue); + + cmd.OnExecute(() => + { + var msbuildArgs = new List() + { + "/t:Restore" + }; + + if (sourceOption.HasValue()) + { + msbuildArgs.Add($"/p:RestoreSources={string.Join(";", sourceOption.Values)}"); + } + + if (packagesOption.HasValue()) + { + msbuildArgs.Add($"/p:RestorePackagesPath={packagesOption.Value()}"); + } + + if (disableParallelOption.HasValue()) + { + msbuildArgs.Add($"/p:RestoreDisableParallel=true"); + } + + if (configFileOption.HasValue()) + { + msbuildArgs.Add($"/p:RestoreConfigFile={configFileOption.Value()}"); + } + + if (noCacheOption.HasValue()) + { + msbuildArgs.Add($"/p:RestoreNoCache=true"); + } + + if (ignoreFailedSourcesOption.HasValue()) + { + msbuildArgs.Add($"/p:RestoreIgnoreFailedSources=true"); + } + + // Add in arguments + msbuildArgs.AddRange(argRoot.Values); + + // Add remaining arguments that the parser did not understand + msbuildArgs.AddRange(cmd.RemainingArguments); + + return new MSBuildForwardingApp(msbuildArgs).Execute(); + }); + + return cmd.Execute(args); + } + } +} diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 5c1ac258d..11c55dcbb 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -60,8 +60,8 @@ "exclude": "compile" }, - "Microsoft.Build": "0.1.0-preview-00029-160805", - "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", + "Microsoft.Build": "0.1.0-preview-00029-160805", + "Microsoft.Build.Framework": "0.1.0-preview-00029-160805", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000914" }, diff --git a/src/redist/project.json b/src/redist/project.json index 42f112267..14e78ac3d 100644 --- a/src/redist/project.json +++ b/src/redist/project.json @@ -18,7 +18,8 @@ "Microsoft.Build.Tasks.Core": "0.1.0-preview-00029-160805", "Microsoft.Build.Utilities.Core": "0.1.0-preview-00029-160805", "Microsoft.Build.Targets": "0.1.0-preview-00029-160805", - "Microsoft.Build": "0.1.0-preview-00029-160805" + "Microsoft.Build": "0.1.0-preview-00029-160805", + "NuGet.Build.Tasks": "3.6.0-beta.1.msbuild.1" }, "frameworks": { "netcoreapp1.0": { diff --git a/src/tool_nuget/project.json b/src/tool_nuget/project.json index 7af3cf800..5614a8bab 100644 --- a/src/tool_nuget/project.json +++ b/src/tool_nuget/project.json @@ -8,7 +8,7 @@ "type": "platform", "version": "1.0.0" }, - "NuGet.CommandLine.XPlat": "3.5.0-rc1-1697" + "NuGet.CommandLine.XPlat": "3.6.0-beta.1.msbuild.1" }, "frameworks": { "netcoreapp1.0": { diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json index 4345dfcec..f398dcc79 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json @@ -20,10 +20,10 @@ }, "System.Diagnostics.TraceSource": "4.0.0", "System.Runtime.Serialization.Primitives": "4.1.1", - "NuGet.Versioning": "3.5.0-rc1-1697", - "NuGet.Packaging": "3.5.0-rc1-1697", - "NuGet.Frameworks": "3.5.0-rc1-1697", - "NuGet.ProjectModel": "3.5.0-rc1-1697", + "NuGet.Versioning": "3.6.0-beta.1.msbuild.1", + "NuGet.Packaging": "3.6.0-beta.1.msbuild.1", + "NuGet.Frameworks": "3.6.0-beta.1.msbuild.1", + "NuGet.ProjectModel": "3.6.0-beta.1.msbuild.1", "Microsoft.DotNet.ProjectModel": { "target": "project" },