From 030bd858af2e9af8e0f7344119f638f85d53d41a Mon Sep 17 00:00:00 2001 From: stephentoub Date: Mon, 30 Nov 2015 08:24:28 -0500 Subject: [PATCH] Add new System.Threading.Tasks.Extensions library For now, it contains just ```ValueTask``` and its awaiter. --- .../System.Threading.Tasks.Extensions.sln | 28 + .../System.Threading.Tasks.Extensions.csproj | 25 + .../CompilerServices/ValueTaskAwaiter.cs | 48 + .../src/System/Threading/Tasks/ValueTask.cs | 166 ++ .../src/project.json | 11 + .../src/project.lock.json | 314 +++ ...em.Threading.Tasks.Extensions.Tests.csproj | 27 + .../tests/ValueTaskTests.cs | 290 +++ .../tests/project.json | 11 + .../tests/project.lock.json | 2007 +++++++++++++++++ 10 files changed, 2927 insertions(+) create mode 100644 src/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.sln create mode 100644 src/System.Threading.Tasks.Extensions/src/System.Threading.Tasks.Extensions.csproj create mode 100644 src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ValueTaskAwaiter.cs create mode 100644 src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs create mode 100644 src/System.Threading.Tasks.Extensions/src/project.json create mode 100644 src/System.Threading.Tasks.Extensions/src/project.lock.json create mode 100644 src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj create mode 100644 src/System.Threading.Tasks.Extensions/tests/ValueTaskTests.cs create mode 100644 src/System.Threading.Tasks.Extensions/tests/project.json create mode 100644 src/System.Threading.Tasks.Extensions/tests/project.lock.json diff --git a/src/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.sln b/src/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.sln new file mode 100644 index 000000000000..c760bb4df5ed --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23103.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Extensions", "src\System.Threading.Tasks.Extensions.csproj", "{F24D3391-2928-4E83-AADE-B34423498750}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Extensions.Tests", "tests\System.Threading.Tasks.Extensions.Tests.csproj", "{82B54697-0251-47A1-8546-FC507D0F3B08}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F24D3391-2928-4E83-AADE-B34423498750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F24D3391-2928-4E83-AADE-B34423498750}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F24D3391-2928-4E83-AADE-B34423498750}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F24D3391-2928-4E83-AADE-B34423498750}.Release|Any CPU.Build.0 = Release|Any CPU + {82B54697-0251-47A1-8546-FC507D0F3B08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {82B54697-0251-47A1-8546-FC507D0F3B08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {82B54697-0251-47A1-8546-FC507D0F3B08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {82B54697-0251-47A1-8546-FC507D0F3B08}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/System.Threading.Tasks.Extensions/src/System.Threading.Tasks.Extensions.csproj b/src/System.Threading.Tasks.Extensions/src/System.Threading.Tasks.Extensions.csproj new file mode 100644 index 000000000000..ea854f5fe443 --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/src/System.Threading.Tasks.Extensions.csproj @@ -0,0 +1,25 @@ + + + + + Debug + AnyCPU + {F24D3391-2928-4E83-AADE-B34423498750} + Library + System.Threading.Tasks.Extensions + 4.0.0.0 + $(OutputPath)$(AssemblyName).xml + dotnet5.1 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ValueTaskAwaiter.cs b/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ValueTaskAwaiter.cs new file mode 100644 index 000000000000..7fd73809f534 --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/src/System/Runtime/CompilerServices/ValueTaskAwaiter.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.InteropServices; +using System.Threading.Tasks; + +namespace System.Runtime.CompilerServices +{ + /// Provides an awaiter for a . + [StructLayout(LayoutKind.Auto)] + public struct ValueTaskAwaiter : ICriticalNotifyCompletion + { + /// The value being awaited. + private readonly ValueTask _value; + /// The value to pass to ConfigureAwait. + private readonly bool _continueOnCapturedContext; + + /// Initializes the awaiter. + /// The value to be awaited. + /// The value to pass to ConfigureAwait. + public ValueTaskAwaiter(ValueTask value, bool continueOnCapturedContext) + { + _value = value; + _continueOnCapturedContext = continueOnCapturedContext; + } + + /// Returns this awaiter. + public ValueTaskAwaiter GetAwaiter() { return this; } + + /// Gets whether the has completed. + public bool IsCompleted { get { return _value.IsCompleted; } } + + /// Gets the result of the ValueTask. + public TResult GetResult() { return _value._task == null ? _value._result : _value._task.GetAwaiter().GetResult(); } + + /// Schedules the continuation action for this ValueTask. + public void OnCompleted(Action continuation) + { + _value.AsTask().ConfigureAwait(_continueOnCapturedContext).GetAwaiter().OnCompleted(continuation); + } + + /// Schedules the continuation action for this ValueTask. + public void UnsafeOnCompleted(Action continuation) + { + _value.AsTask().ConfigureAwait(_continueOnCapturedContext).GetAwaiter().UnsafeOnCompleted(continuation); + } + } +} diff --git a/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs b/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs new file mode 100644 index 000000000000..dbffb916ff8c --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/src/System/Threading/Tasks/ValueTask.cs @@ -0,0 +1,166 @@ +// Copyright (c) Microsoft. 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.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace System.Threading.Tasks +{ + /// + /// Provides a value type that wraps a and a , + /// only one of which is used. + /// + /// The type of the result. + /// + /// + /// Methods may return an instance of this value type when it's likely that the result of their + /// operations will be available synchronously and when the method is expected to be invoked so + /// frequently that the cost of allocating a new for each call will + /// be prohibitive. + /// + /// + /// There are tradeoffs to using a instead of a . + /// For example, while a can help avoid an allocation in the case where the successful + /// result is available synchronously, it also contains two fields whereas a as + /// a reference type is a single field. This means that a method call ends up returning two fields worth of + /// data instead of one, which is more data to copy. It also means that if a method that returns one of these + /// is awaited within an async method, the state machine for that async method will be larger due to needing + /// to store the struct that's two fields instead of a single reference. + /// + /// + /// The default choice for any async method should be to return a or . + /// Only if performance analysis proves it worthwhile should a be used instead of + /// . There is no non-generic version of as the + /// Task.CompletedTask property may be used to hand back a successfully completed singleton in the case where + /// a -returning method completes synchronously and successfully. + /// + /// + [StructLayout(LayoutKind.Auto)] + public struct ValueTask : IEquatable> + { + /// The task to be used if the operation completed asynchronously or if it completed synchronously but non-successfully. + internal readonly Task _task; + /// The result to be used if the operation completed successfully synchronously. + internal readonly TResult _result; + + /// Initialize the with the result of the successful operation. + /// The result. + public ValueTask(TResult result) + { + _task = null; + _result = result; + } + + /// + /// Initialize the with a that represents the operation. + /// + /// The task. + public ValueTask(Task task) + { + Debug.Assert(task != null); + _task = task; + _result = default(TResult); + } + + /// Implicit operator to wrap a around a task. + public static implicit operator ValueTask(Task task) + { + return new ValueTask(task); + } + + /// Implicit operator to wrap a around a result. + public static implicit operator ValueTask(TResult result) + { + return new ValueTask(result); + } + + /// Returns the hash code for this instance. + public override int GetHashCode() + { + return + _task != null ? _task.GetHashCode() : + _result != null ? _result.GetHashCode() : + 0; + } + + /// Returns a value indicating whether this value is equal to a specified . + public override bool Equals(object obj) + { + return + obj is ValueTask && + Equals((ValueTask)obj); + } + + /// Returns a value indicating whether this value is equal to a specified value. + public bool Equals(ValueTask other) + { + return _task != null || other._task != null ? + _task == other._task : + EqualityComparer.Default.Equals(_result, other._result); + } + + /// Returns a value indicating whether two values are equal. + public static bool operator==(ValueTask left, ValueTask right) + { + return left.Equals(right); + } + + /// Returns a value indicating whether two values are not equal. + public static bool operator!=(ValueTask left, ValueTask right) + { + return !left.Equals(right); + } + + /// + /// Gets a object to represent this ValueTask. It will + /// either return the wrapped task object if one exists, or it'll manufacture a new + /// task object to represent the result. + /// + public Task AsTask() + { + // Return the task if we were constructed from one, otherwise manufacture one. We don't + // cache the generated task into _task as it would end up changing both equality comparison + // and the hash code we generate in GetHashCode. + return _task ?? Task.FromResult(_result); + } + + /// Gets whether the represents a completed operation. + public bool IsCompleted { get { return _task == null || _task.IsCompleted; } } + + /// Gets whether the represents a successfully completed operation. + public bool IsCompletedSuccessfully { get { return _task == null || _task.Status == TaskStatus.RanToCompletion; } } + + /// Gets whether the represents a failed operation. + public bool IsFaulted { get { return _task != null && _task.IsFaulted; } } + + /// Gets whether the represents a canceled operation. + public bool IsCanceled { get { return _task != null && _task.IsCanceled; } } + + /// Gets the result. + public TResult Result { get { return _task == null ? _result : _task.GetAwaiter().GetResult(); } } + + /// Gets an awaiter for this value. + public ValueTaskAwaiter GetAwaiter() + { + return new ValueTaskAwaiter(this, continueOnCapturedContext: true); + } + + /// Configures an awaiter for this value. + /// true to attempt to marshal the continuation back to the captured context; otherwise, false. + public ValueTaskAwaiter ConfigureAwait(bool continueOnCapturedContext) + { + return new ValueTaskAwaiter(this, continueOnCapturedContext: continueOnCapturedContext); + } + + /// Gets a string-representation of this . + public override string ToString() + { + return + _task == null ? _result.ToString() : + _task.Status == TaskStatus.RanToCompletion ? _task.Result.ToString() : + _task.Status.ToString(); + } + } +} diff --git a/src/System.Threading.Tasks.Extensions/src/project.json b/src/System.Threading.Tasks.Extensions/src/project.json new file mode 100644 index 000000000000..c2acf1edc0fe --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/src/project.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Runtime": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "frameworks": { + "dnxcore50": {} + } +} \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/src/project.lock.json b/src/System.Threading.Tasks.Extensions/src/project.lock.json new file mode 100644 index 000000000000..20e9afe03b42 --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/src/project.lock.json @@ -0,0 +1,314 @@ +{ + "locked": true, + "version": 2, + "targets": { + "DNXCore,Version=v5.0": { + "System.Collections/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Runtime/4.0.0": { + "type": "package", + "compile": { + "ref/dotnet/System.Runtime.dll": {} + } + }, + "System.Threading.Tasks/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + } + } + }, + "DNXCore,Version=v5.0/win7-x86": { + "System.Collections/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Runtime/4.0.0": { + "type": "package", + "compile": { + "ref/dotnet/System.Runtime.dll": {} + } + }, + "System.Threading.Tasks/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + } + } + }, + "DNXCore,Version=v5.0/win7-x64": { + "System.Collections/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Runtime/4.0.0": { + "type": "package", + "compile": { + "ref/dotnet/System.Runtime.dll": {} + } + }, + "System.Threading.Tasks/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + } + } + } + }, + "libraries": { + "System.Collections/4.0.0": { + "type": "package", + "sha512": "i2vsGDIEbWdHcUSNDPKZP/ZWod6o740el7mGTCy0dqbCxQh74W4QoC+klUwPEtGEFuvzJ7bJgvwJqscosVNyZQ==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Collections.xml", + "ref/dotnet/es/System.Collections.xml", + "ref/dotnet/fr/System.Collections.xml", + "ref/dotnet/it/System.Collections.xml", + "ref/dotnet/ja/System.Collections.xml", + "ref/dotnet/ko/System.Collections.xml", + "ref/dotnet/ru/System.Collections.xml", + "ref/dotnet/System.Collections.dll", + "ref/dotnet/System.Collections.xml", + "ref/dotnet/zh-hans/System.Collections.xml", + "ref/dotnet/zh-hant/System.Collections.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Collections.4.0.0.nupkg", + "System.Collections.4.0.0.nupkg.sha512", + "System.Collections.nuspec" + ] + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "sha512": "AYJsLLGDVTC/nyURjgAo7Lpye0+HuSkcQujUf+NgQVdC/C/ky5NyamQHCforHJzgqspitMMtBe8B4UBdGXy1zQ==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Diagnostics.Debug.xml", + "ref/dotnet/es/System.Diagnostics.Debug.xml", + "ref/dotnet/fr/System.Diagnostics.Debug.xml", + "ref/dotnet/it/System.Diagnostics.Debug.xml", + "ref/dotnet/ja/System.Diagnostics.Debug.xml", + "ref/dotnet/ko/System.Diagnostics.Debug.xml", + "ref/dotnet/ru/System.Diagnostics.Debug.xml", + "ref/dotnet/System.Diagnostics.Debug.dll", + "ref/dotnet/System.Diagnostics.Debug.xml", + "ref/dotnet/zh-hans/System.Diagnostics.Debug.xml", + "ref/dotnet/zh-hant/System.Diagnostics.Debug.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Diagnostics.Debug.4.0.0.nupkg", + "System.Diagnostics.Debug.4.0.0.nupkg.sha512", + "System.Diagnostics.Debug.nuspec" + ] + }, + "System.Runtime/4.0.0": { + "type": "package", + "sha512": "Uq9epame8hEqJlj4KaWb67dDJvj4IM37jRFGVeFbugRdPz48bR0voyBhrbf3iSa2tAmlkg4lsa6BUOL9iwlMew==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Runtime.xml", + "ref/dotnet/es/System.Runtime.xml", + "ref/dotnet/fr/System.Runtime.xml", + "ref/dotnet/it/System.Runtime.xml", + "ref/dotnet/ja/System.Runtime.xml", + "ref/dotnet/ko/System.Runtime.xml", + "ref/dotnet/ru/System.Runtime.xml", + "ref/dotnet/System.Runtime.dll", + "ref/dotnet/System.Runtime.xml", + "ref/dotnet/zh-hans/System.Runtime.xml", + "ref/dotnet/zh-hant/System.Runtime.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Runtime.4.0.0.nupkg", + "System.Runtime.4.0.0.nupkg.sha512", + "System.Runtime.nuspec" + ] + }, + "System.Threading.Tasks/4.0.0": { + "type": "package", + "sha512": "dA3y1B6Pc8mNt9obhEWWGGpvEakS51+nafXpmM/Z8IF847GErLXGTjdfA+AYEKszfFbH7SVLWUklXhYeeSQ1lw==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Threading.Tasks.xml", + "ref/dotnet/es/System.Threading.Tasks.xml", + "ref/dotnet/fr/System.Threading.Tasks.xml", + "ref/dotnet/it/System.Threading.Tasks.xml", + "ref/dotnet/ja/System.Threading.Tasks.xml", + "ref/dotnet/ko/System.Threading.Tasks.xml", + "ref/dotnet/ru/System.Threading.Tasks.xml", + "ref/dotnet/System.Threading.Tasks.dll", + "ref/dotnet/System.Threading.Tasks.xml", + "ref/dotnet/zh-hans/System.Threading.Tasks.xml", + "ref/dotnet/zh-hant/System.Threading.Tasks.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Threading.Tasks.4.0.0.nupkg", + "System.Threading.Tasks.4.0.0.nupkg.sha512", + "System.Threading.Tasks.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "": [ + "System.Collections >= 4.0.0", + "System.Diagnostics.Debug >= 4.0.0", + "System.Runtime >= 4.0.0", + "System.Threading.Tasks >= 4.0.0" + ], + "DNXCore,Version=v5.0": [] + } +} \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj b/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj new file mode 100644 index 000000000000..6e57ac3fd9ba --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj @@ -0,0 +1,27 @@ + + + + + Debug + AnyCPU + {82B54697-0251-47A1-8546-FC507D0F3B08} + Library + System.Threading.Tasks.Extensions.Tests + System.Threading.Tasks.Extensions.Tests + + + + + + + + + {F24D3391-2928-4E83-AADE-B34423498750} + System.Threading.Tasks.Extensions + + + + + + + diff --git a/src/System.Threading.Tasks.Extensions/tests/ValueTaskTests.cs b/src/System.Threading.Tasks.Extensions/tests/ValueTaskTests.cs new file mode 100644 index 000000000000..d8ea96b465ab --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/tests/ValueTaskTests.cs @@ -0,0 +1,290 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Diagnostics; +using Xunit; + +namespace System.Threading.Tasks.Channels.Tests +{ + public class ValueTaskTests + { + [Fact] + public void DefaultValueTask_ValueType_DefaultValue() + { + Assert.True(default(ValueTask).IsCompleted); + Assert.True(default(ValueTask).IsCompletedSuccessfully); + Assert.False(default(ValueTask).IsFaulted); + Assert.False(default(ValueTask).IsCanceled); + Assert.Equal(0, default(ValueTask).Result); + + Assert.True(default(ValueTask).IsCompleted); + Assert.True(default(ValueTask).IsCompletedSuccessfully); + Assert.False(default(ValueTask).IsFaulted); + Assert.False(default(ValueTask).IsCanceled); + Assert.Equal(null, default(ValueTask).Result); + } + + [Fact] + public void CreateFromValue_IsRanToCompletion() + { + ValueTask t = new ValueTask(42); + Assert.True(t.IsCompleted); + Assert.True(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + Assert.Equal(42, t.Result); + } + + [Fact] + public void CreateFromCompletedTask_IsRanToCompletion() + { + ValueTask t = new ValueTask(Task.FromResult(42)); + Assert.True(t.IsCompleted); + Assert.True(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + Assert.Equal(42, t.Result); + } + + [Fact] + public void CreateFromNotCompletedTask_IsNotRanToCompletion() + { + var tcs = new TaskCompletionSource(); + ValueTask t = new ValueTask(tcs.Task); + + Assert.False(t.IsCompleted); + Assert.False(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + + tcs.SetResult(42); + + Assert.Equal(42, t.Result); + Assert.True(t.IsCompleted); + Assert.True(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + } + + [Fact] + public void CastFromValue_IsRanToCompletion() + { + ValueTask t = 42; + + Assert.Equal(42, t.Result); + + Assert.True(t.IsCompleted); + Assert.True(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + } + + [Fact] + public void CastFromCompletedTask_IsRanToCompletion() + { + ValueTask t = Task.FromResult(42); + + Assert.Equal(42, t.Result); + + Assert.True(t.IsCompleted); + Assert.True(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.False(t.IsCanceled); + } + + [Fact] + public void CastFromFaultedTask_IsNotRanToCompletion() + { + ValueTask t = Task.FromException(new FormatException()); + + Assert.Throws(() => t.Result); + + Assert.True(t.IsCompleted); + Assert.False(t.IsCompletedSuccessfully); + Assert.True(t.IsFaulted); + Assert.False(t.IsCanceled); + } + + [Fact] + public void CastFromCanceledTask_IsNotRanToCompletion() + { + ValueTask t = Task.FromCanceled(new CancellationToken(true)); + + Assert.Throws(() => t.Result); + + Assert.True(t.IsCompleted); + Assert.False(t.IsCompletedSuccessfully); + Assert.False(t.IsFaulted); + Assert.True(t.IsCanceled); + } + + [Fact] + public void CreateFromTask_AsTaskIdemptotent() + { + Task source = Task.FromResult(42); + ValueTask t = new ValueTask(source); + Assert.Same(source, t.AsTask()); + Assert.Same(t.AsTask(), t.AsTask()); + } + + [Fact] + public void CreateFromValue_AsTaskNotIdemptotent() + { + ValueTask t = new ValueTask(42); + Assert.NotSame(Task.FromResult(42), t.AsTask()); + Assert.NotSame(t.AsTask(), t.AsTask()); + } + + [Fact] + public async Task CreateFromValue_Await() + { + ValueTask t = new ValueTask(42); + Assert.Equal(42, await t); + Assert.Equal(42, await t.ConfigureAwait(false)); + Assert.Equal(42, await t.ConfigureAwait(true)); + } + + [Fact] + public async Task CreateFromTask_Await_Normal() + { + Task source = Task.Delay(1).ContinueWith(_ => 42); + ValueTask t = new ValueTask(source); + Assert.Equal(42, await t); + } + + [Fact] + public async Task CreateFromTask_Await_ConfigureAwaitFalse() + { + Task source = Task.Delay(1).ContinueWith(_ => 42); + ValueTask t = new ValueTask(source); + Assert.Equal(42, await t.ConfigureAwait(false)); + } + + [Fact] + public async Task CreateFromTask_Await_ConfigureAwaitTrue() + { + Task source = Task.Delay(1).ContinueWith(_ => 42); + ValueTask t = new ValueTask(source); + Assert.Equal(42, await t.ConfigureAwait(true)); + } + + [Fact] + public void Awaiter_OnCompleted() + { + // Since ValueTask implementes both OnCompleted and UnsafeOnCompleted, + // OnCompleted typically won't be used by await, so we add an explicit test + // for it here. + + ValueTask t = 42; + var mres = new ManualResetEventSlim(); + t.GetAwaiter().OnCompleted(() => mres.Set()); + Assert.True(mres.Wait(10000)); + } + + [Fact] + public void GetHashCode_ContainsResult() + { + ValueTask t = 42; + Assert.Equal(t.Result.GetHashCode(), t.GetHashCode()); + } + + [Fact] + public void GetHashCode_ContainsTask() + { + ValueTask t = Task.FromResult("42"); + Assert.Equal(t.AsTask().GetHashCode(), t.GetHashCode()); + } + + [Fact] + public void GetHashCode_ContainsNull() + { + ValueTask t = (string)null; + Assert.Equal(0, t.GetHashCode()); + } + + [Fact] + public void OperatorEquals() + { + Assert.True((ValueTask)42 == (ValueTask)42); + Assert.False((ValueTask)42 == (ValueTask)43); + + Assert.True((ValueTask)"42" == (ValueTask)"42"); + Assert.True((ValueTask)(string)null == (ValueTask)(string)null); + + Assert.False((ValueTask)"42" == (ValueTask)(string)null); + Assert.False((ValueTask)(string)null == (ValueTask)"42"); + + Assert.False((ValueTask)42 == (ValueTask)Task.FromResult(42)); + Assert.False((ValueTask)Task.FromResult(42) == (ValueTask)42); + } + + [Fact] + public void OperatorNotEquals() + { + Assert.False((ValueTask)42 != (ValueTask)42); + Assert.True((ValueTask)42 != (ValueTask)43); + + Assert.False((ValueTask)"42" != (ValueTask)"42"); + Assert.False((ValueTask)(string)null != (ValueTask)(string)null); + + Assert.True((ValueTask)"42" != (ValueTask)(string)null); + Assert.True((ValueTask)(string)null != (ValueTask)"42"); + + Assert.True((ValueTask)42 != (ValueTask)Task.FromResult(42)); + Assert.True((ValueTask)Task.FromResult(42) != (ValueTask)42); + } + + [Fact] + public void Equals_ValueTask() + { + Assert.True(((ValueTask)42).Equals((ValueTask)42)); + Assert.False(((ValueTask)42).Equals((ValueTask)43)); + + Assert.True(((ValueTask)"42").Equals((ValueTask)"42")); + Assert.True(((ValueTask)(string)null).Equals((ValueTask)(string)null)); + + Assert.False(((ValueTask)"42").Equals((ValueTask)(string)null)); + Assert.False(((ValueTask)(string)null).Equals((ValueTask)"42")); + + Assert.False(((ValueTask)42).Equals((ValueTask)Task.FromResult(42))); + Assert.False(((ValueTask)Task.FromResult(42)).Equals((ValueTask)42)); + } + + [Fact] + public void Equals_Object() + { + Assert.True(((ValueTask)42).Equals((object)(ValueTask)42)); + Assert.False(((ValueTask)42).Equals((object)(ValueTask)43)); + + Assert.True(((ValueTask)"42").Equals((object)(ValueTask)"42")); + Assert.True(((ValueTask)(string)null).Equals((object)(ValueTask)(string)null)); + + Assert.False(((ValueTask)"42").Equals((object)(ValueTask)(string)null)); + Assert.False(((ValueTask)(string)null).Equals((object)(ValueTask)"42")); + + Assert.False(((ValueTask)42).Equals((object)(ValueTask)Task.FromResult(42))); + Assert.False(((ValueTask)Task.FromResult(42)).Equals((object)(ValueTask)42)); + + Assert.False(((ValueTask)42).Equals((object)null)); + Assert.False(((ValueTask)42).Equals(new object())); + Assert.False(((ValueTask)42).Equals((object)42)); + } + + [Fact] + public void ToString_Success() + { + Assert.Equal("Hello", new ValueTask("Hello").ToString()); + Assert.Equal(string.Empty, new ValueTask(string.Empty).ToString()); + Assert.Equal("42", new ValueTask(42).ToString()); + + Assert.Equal("Hello", new ValueTask(Task.FromResult("Hello")).ToString()); + Assert.Equal(string.Empty, new ValueTask(Task.FromResult(string.Empty)).ToString()); + Assert.Equal("42", new ValueTask(Task.FromResult(42)).ToString()); + + Assert.Equal("Faulted", new ValueTask(Task.FromException(new InvalidOperationException())).ToString()); + Assert.Equal("Faulted", new ValueTask(Task.FromException(new OperationCanceledException())).ToString()); + + Assert.Equal("Canceled", new ValueTask(Task.FromCanceled(new CancellationToken(true))).ToString()); + } + } +} diff --git a/src/System.Threading.Tasks.Extensions/tests/project.json b/src/System.Threading.Tasks.Extensions/tests/project.json new file mode 100644 index 000000000000..4610ac71225c --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/tests/project.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "System.Runtime": "4.0.20", + "System.Threading.Tasks": "4.0.10", + "xunit": "2.1.0", + "xunit.netcore.extensions": "1.0.0-prerelease-*" + }, + "frameworks": { + "dnxcore50": {} + } +} \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/tests/project.lock.json b/src/System.Threading.Tasks.Extensions/tests/project.lock.json new file mode 100644 index 000000000000..57def19819fe --- /dev/null +++ b/src/System.Threading.Tasks.Extensions/tests/project.lock.json @@ -0,0 +1,2007 @@ +{ + "locked": true, + "version": 2, + "targets": { + "DNXCore,Version=v5.0": { + "System.Collections/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + } + }, + "System.Globalization/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Globalization.dll": {} + } + }, + "System.IO/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20", + "System.Text.Encoding": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.IO.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.IO.dll": {} + } + }, + "System.Linq/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.10", + "System.Diagnostics.Debug": "4.0.10", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10" + }, + "compile": { + "ref/dotnet/System.Linq.dll": {} + }, + "runtime": { + "lib/dotnet/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.ObjectModel.dll": {} + } + }, + "System.Private.Uri/4.0.0": { + "type": "package", + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.Uri.dll": {} + } + }, + "System.Reflection/4.0.10": { + "type": "package", + "dependencies": { + "System.IO": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Reflection.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.dll": {} + } + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Primitives.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Primitives.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.0", + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Resources.ResourceManager.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.0.20": { + "type": "package", + "dependencies": { + "System.Private.Uri": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.dll": {} + } + }, + "System.Runtime.Extensions/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.Handles.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.0.20": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Handles": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0-beta-23213": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + } + }, + "System.Text.Encoding/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Text.Encoding.dll": {} + } + }, + "System.Text.RegularExpressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Tasks.dll": {} + } + }, + "xunit/2.1.0": { + "type": "package", + "dependencies": { + "xunit.assert": "[2.1.0]", + "xunit.core": "[2.1.0]" + } + }, + "xunit.abstractions/2.0.0": { + "type": "package", + "compile": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + }, + "runtime": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + } + }, + "xunit.assert/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.ObjectModel": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.RegularExpressions": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "lib/dotnet/xunit.assert.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.assert.dll": {} + } + }, + "xunit.core/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]", + "xunit.extensibility.execution": "[2.1.0]" + } + }, + "xunit.extensibility.core/2.1.0": { + "type": "package", + "dependencies": { + "xunit.abstractions": "[2.0.0]" + }, + "compile": { + "lib/dotnet/xunit.core.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.core.dll": {}, + "lib/dotnet/xunit.runner.tdnet.dll": {}, + "lib/dotnet/xunit.runner.utility.desktop.dll": {} + } + }, + "xunit.extensibility.execution/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.IO": "4.0.0", + "System.Linq": "4.0.0", + "System.Linq.Expressions": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.Encoding": "4.0.0", + "System.Threading": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]" + }, + "compile": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + } + }, + "xunit.netcore.extensions/1.0.0-prerelease-00122": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.10", + "System.IO": "4.0.10", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.10", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10", + "System.Runtime.Handles": "4.0.0", + "System.Runtime.InteropServices": "4.0.20", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0-beta-23213", + "System.Text.Encoding": "4.0.10", + "System.Threading": "4.0.10", + "System.Threading.Tasks": "4.0.10", + "xunit": "2.1.0" + }, + "compile": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + }, + "runtime": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + } + } + }, + "DNXCore,Version=v5.0/win7-x86": { + "System.Collections/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + } + }, + "System.Globalization/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Globalization.dll": {} + } + }, + "System.IO/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20", + "System.Text.Encoding": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.IO.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.IO.dll": {} + } + }, + "System.Linq/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.10", + "System.Diagnostics.Debug": "4.0.10", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10" + }, + "compile": { + "ref/dotnet/System.Linq.dll": {} + }, + "runtime": { + "lib/dotnet/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.ObjectModel.dll": {} + } + }, + "System.Private.Uri/4.0.0": { + "type": "package", + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.Uri.dll": {} + } + }, + "System.Reflection/4.0.10": { + "type": "package", + "dependencies": { + "System.IO": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Reflection.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.dll": {} + } + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Primitives.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Primitives.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.0", + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Resources.ResourceManager.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.0.20": { + "type": "package", + "dependencies": { + "System.Private.Uri": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.dll": {} + } + }, + "System.Runtime.Extensions/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.Handles.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.0.20": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Handles": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0-beta-23213": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + } + }, + "System.Text.Encoding/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Text.Encoding.dll": {} + } + }, + "System.Text.RegularExpressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Tasks.dll": {} + } + }, + "xunit/2.1.0": { + "type": "package", + "dependencies": { + "xunit.assert": "[2.1.0]", + "xunit.core": "[2.1.0]" + } + }, + "xunit.abstractions/2.0.0": { + "type": "package", + "compile": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + }, + "runtime": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + } + }, + "xunit.assert/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.ObjectModel": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.RegularExpressions": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "lib/dotnet/xunit.assert.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.assert.dll": {} + } + }, + "xunit.core/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]", + "xunit.extensibility.execution": "[2.1.0]" + } + }, + "xunit.extensibility.core/2.1.0": { + "type": "package", + "dependencies": { + "xunit.abstractions": "[2.0.0]" + }, + "compile": { + "lib/dotnet/xunit.core.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.core.dll": {}, + "lib/dotnet/xunit.runner.tdnet.dll": {}, + "lib/dotnet/xunit.runner.utility.desktop.dll": {} + } + }, + "xunit.extensibility.execution/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.IO": "4.0.0", + "System.Linq": "4.0.0", + "System.Linq.Expressions": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.Encoding": "4.0.0", + "System.Threading": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]" + }, + "compile": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + } + }, + "xunit.netcore.extensions/1.0.0-prerelease-00122": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.10", + "System.IO": "4.0.10", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.10", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10", + "System.Runtime.Handles": "4.0.0", + "System.Runtime.InteropServices": "4.0.20", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0-beta-23213", + "System.Text.Encoding": "4.0.10", + "System.Threading": "4.0.10", + "System.Threading.Tasks": "4.0.10", + "xunit": "2.1.0" + }, + "compile": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + }, + "runtime": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + } + } + }, + "DNXCore,Version=v5.0/win7-x64": { + "System.Collections/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Collections.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Collections.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Diagnostics.Debug.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + } + }, + "System.Globalization/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Globalization.dll": {} + } + }, + "System.IO/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20", + "System.Text.Encoding": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.IO.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.IO.dll": {} + } + }, + "System.Linq/4.0.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.10", + "System.Diagnostics.Debug": "4.0.10", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10" + }, + "compile": { + "ref/dotnet/System.Linq.dll": {} + }, + "runtime": { + "lib/dotnet/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.ObjectModel.dll": {} + } + }, + "System.Private.Uri/4.0.0": { + "type": "package", + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.Uri.dll": {} + } + }, + "System.Reflection/4.0.10": { + "type": "package", + "dependencies": { + "System.IO": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Reflection.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.dll": {} + } + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Extensions.dll": {} + } + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Reflection.Primitives.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Primitives.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.0.0", + "System.Reflection": "4.0.0", + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Resources.ResourceManager.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Resources.ResourceManager.dll": {} + } + }, + "System.Runtime/4.0.20": { + "type": "package", + "dependencies": { + "System.Private.Uri": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.dll": {} + } + }, + "System.Runtime.Extensions/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.Extensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.Handles.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.0.20": { + "type": "package", + "dependencies": { + "System.Reflection": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Handles": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0-beta-23213": { + "type": "package", + "dependencies": { + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.20" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll": {} + } + }, + "System.Text.Encoding/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Text.Encoding.dll": {} + } + }, + "System.Text.RegularExpressions/4.0.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.0.10": { + "type": "package", + "dependencies": { + "System.Runtime": "4.0.0" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Tasks.dll": {} + } + }, + "xunit/2.1.0": { + "type": "package", + "dependencies": { + "xunit.assert": "[2.1.0]", + "xunit.core": "[2.1.0]" + } + }, + "xunit.abstractions/2.0.0": { + "type": "package", + "compile": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + }, + "runtime": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + } + }, + "xunit.assert/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.ObjectModel": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.RegularExpressions": "4.0.0", + "System.Threading.Tasks": "4.0.0" + }, + "compile": { + "lib/dotnet/xunit.assert.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.assert.dll": {} + } + }, + "xunit.core/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]", + "xunit.extensibility.execution": "[2.1.0]" + } + }, + "xunit.extensibility.core/2.1.0": { + "type": "package", + "dependencies": { + "xunit.abstractions": "[2.0.0]" + }, + "compile": { + "lib/dotnet/xunit.core.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.core.dll": {}, + "lib/dotnet/xunit.runner.tdnet.dll": {}, + "lib/dotnet/xunit.runner.utility.desktop.dll": {} + } + }, + "xunit.extensibility.execution/2.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.IO": "4.0.0", + "System.Linq": "4.0.0", + "System.Linq.Expressions": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Text.Encoding": "4.0.0", + "System.Threading": "4.0.0", + "System.Threading.Tasks": "4.0.0", + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "[2.1.0]" + }, + "compile": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + }, + "runtime": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + } + }, + "xunit.netcore.extensions/1.0.0-prerelease-00122": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.0.10", + "System.IO": "4.0.10", + "System.Linq": "4.0.0", + "System.Reflection": "4.0.10", + "System.Reflection.Primitives": "4.0.0", + "System.Runtime": "4.0.20", + "System.Runtime.Extensions": "4.0.10", + "System.Runtime.Handles": "4.0.0", + "System.Runtime.InteropServices": "4.0.20", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0-beta-23213", + "System.Text.Encoding": "4.0.10", + "System.Threading": "4.0.10", + "System.Threading.Tasks": "4.0.10", + "xunit": "2.1.0" + }, + "compile": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + }, + "runtime": { + "lib/dotnet/Xunit.NetCore.Extensions.dll": {} + } + } + } + }, + "libraries": { + "System.Collections/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "ux6ilcZZjV/Gp7JEZpe+2V1eTueq6NuoGRM3eZCFuPM25hLVVgCRuea6STW8hvqreIOE59irJk5/ovpA5xQipw==", + "files": [ + "lib/DNXCore50/System.Collections.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Collections.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Collections.xml", + "ref/dotnet/es/System.Collections.xml", + "ref/dotnet/fr/System.Collections.xml", + "ref/dotnet/it/System.Collections.xml", + "ref/dotnet/ja/System.Collections.xml", + "ref/dotnet/ko/System.Collections.xml", + "ref/dotnet/ru/System.Collections.xml", + "ref/dotnet/System.Collections.dll", + "ref/dotnet/System.Collections.xml", + "ref/dotnet/zh-hans/System.Collections.xml", + "ref/dotnet/zh-hant/System.Collections.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Collections.dll", + "System.Collections.4.0.10.nupkg", + "System.Collections.4.0.10.nupkg.sha512", + "System.Collections.nuspec" + ] + }, + "System.Diagnostics.Debug/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "pi2KthuvI2LWV2c2V+fwReDsDiKpNl040h6DcwFOb59SafsPT/V1fCy0z66OKwysurJkBMmp5j5CBe3Um+ub0g==", + "files": [ + "lib/DNXCore50/System.Diagnostics.Debug.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Diagnostics.Debug.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Diagnostics.Debug.xml", + "ref/dotnet/es/System.Diagnostics.Debug.xml", + "ref/dotnet/fr/System.Diagnostics.Debug.xml", + "ref/dotnet/it/System.Diagnostics.Debug.xml", + "ref/dotnet/ja/System.Diagnostics.Debug.xml", + "ref/dotnet/ko/System.Diagnostics.Debug.xml", + "ref/dotnet/ru/System.Diagnostics.Debug.xml", + "ref/dotnet/System.Diagnostics.Debug.dll", + "ref/dotnet/System.Diagnostics.Debug.xml", + "ref/dotnet/zh-hans/System.Diagnostics.Debug.xml", + "ref/dotnet/zh-hant/System.Diagnostics.Debug.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll", + "System.Diagnostics.Debug.4.0.10.nupkg", + "System.Diagnostics.Debug.4.0.10.nupkg.sha512", + "System.Diagnostics.Debug.nuspec" + ] + }, + "System.Globalization/4.0.0": { + "type": "package", + "sha512": "IBJyTo1y7ZtzzoJUA60T1XPvNTyw/wfFmjFoBFtlYfkekIOtD/AzDDIg0YdUa7eNtFEfliED2R7HdppTdU4t5A==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Globalization.xml", + "ref/dotnet/es/System.Globalization.xml", + "ref/dotnet/fr/System.Globalization.xml", + "ref/dotnet/it/System.Globalization.xml", + "ref/dotnet/ja/System.Globalization.xml", + "ref/dotnet/ko/System.Globalization.xml", + "ref/dotnet/ru/System.Globalization.xml", + "ref/dotnet/System.Globalization.dll", + "ref/dotnet/System.Globalization.xml", + "ref/dotnet/zh-hans/System.Globalization.xml", + "ref/dotnet/zh-hant/System.Globalization.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Globalization.4.0.0.nupkg", + "System.Globalization.4.0.0.nupkg.sha512", + "System.Globalization.nuspec" + ] + }, + "System.IO/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "kghf1CeYT+W2lw8a50/GxFz5HR9t6RkL4BvjxtTp1NxtEFWywnMA9W8FH/KYXiDNThcw9u/GOViDON4iJFGXIQ==", + "files": [ + "lib/DNXCore50/System.IO.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.IO.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.IO.xml", + "ref/dotnet/es/System.IO.xml", + "ref/dotnet/fr/System.IO.xml", + "ref/dotnet/it/System.IO.xml", + "ref/dotnet/ja/System.IO.xml", + "ref/dotnet/ko/System.IO.xml", + "ref/dotnet/ru/System.IO.xml", + "ref/dotnet/System.IO.dll", + "ref/dotnet/System.IO.xml", + "ref/dotnet/zh-hans/System.IO.xml", + "ref/dotnet/zh-hant/System.IO.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.IO.dll", + "System.IO.4.0.10.nupkg", + "System.IO.4.0.10.nupkg.sha512", + "System.IO.nuspec" + ] + }, + "System.Linq/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "r6Hlc+ytE6m/9UBr+nNRRdoJEWjoeQiT3L3lXYFDHoXk3VYsRBCDNXrawcexw7KPLaH0zamQLiAb6avhZ50cGg==", + "files": [ + "lib/dotnet/System.Linq.dll", + "lib/net45/_._", + "lib/netcore50/System.Linq.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/dotnet/de/System.Linq.xml", + "ref/dotnet/es/System.Linq.xml", + "ref/dotnet/fr/System.Linq.xml", + "ref/dotnet/it/System.Linq.xml", + "ref/dotnet/ja/System.Linq.xml", + "ref/dotnet/ko/System.Linq.xml", + "ref/dotnet/ru/System.Linq.xml", + "ref/dotnet/System.Linq.dll", + "ref/dotnet/System.Linq.xml", + "ref/dotnet/zh-hans/System.Linq.xml", + "ref/dotnet/zh-hant/System.Linq.xml", + "ref/net45/_._", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "System.Linq.4.0.0.nupkg", + "System.Linq.4.0.0.nupkg.sha512", + "System.Linq.nuspec" + ] + }, + "System.Linq.Expressions/4.0.0": { + "type": "package", + "sha512": "wlfVllrKi+evu4Hi8yoJP1dSOVXbvsy7Hs1+oz4Cykfdf6MQTPlD3LI4WKWhprn8FpU5MS3spPSbcMX5sAoJSw==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Linq.Expressions.xml", + "ref/dotnet/es/System.Linq.Expressions.xml", + "ref/dotnet/fr/System.Linq.Expressions.xml", + "ref/dotnet/it/System.Linq.Expressions.xml", + "ref/dotnet/ja/System.Linq.Expressions.xml", + "ref/dotnet/ko/System.Linq.Expressions.xml", + "ref/dotnet/ru/System.Linq.Expressions.xml", + "ref/dotnet/System.Linq.Expressions.dll", + "ref/dotnet/System.Linq.Expressions.xml", + "ref/dotnet/zh-hans/System.Linq.Expressions.xml", + "ref/dotnet/zh-hant/System.Linq.Expressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Linq.Expressions.4.0.0.nupkg", + "System.Linq.Expressions.4.0.0.nupkg.sha512", + "System.Linq.Expressions.nuspec" + ] + }, + "System.ObjectModel/4.0.0": { + "type": "package", + "sha512": "+3j/n+5SlF7PKb0/s5kdord+5RyW3uUscB+0WPuYvfAvEgyx6yPdPXU9tXdDZImRohMuWnQTAG2rFojFPfoGbA==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.ObjectModel.xml", + "ref/dotnet/es/System.ObjectModel.xml", + "ref/dotnet/fr/System.ObjectModel.xml", + "ref/dotnet/it/System.ObjectModel.xml", + "ref/dotnet/ja/System.ObjectModel.xml", + "ref/dotnet/ko/System.ObjectModel.xml", + "ref/dotnet/ru/System.ObjectModel.xml", + "ref/dotnet/System.ObjectModel.dll", + "ref/dotnet/System.ObjectModel.xml", + "ref/dotnet/zh-hans/System.ObjectModel.xml", + "ref/dotnet/zh-hant/System.ObjectModel.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.ObjectModel.4.0.0.nupkg", + "System.ObjectModel.4.0.0.nupkg.sha512", + "System.ObjectModel.nuspec" + ] + }, + "System.Private.Uri/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "CtuxaCKcRIvPcsqquVl3mPp79EDZPMr2UogfiFCxCs+t2z1VjbpQsKNs1GHZ8VQetqbk1mr0V1yAfMe6y8CHDA==", + "files": [ + "lib/DNXCore50/System.Private.Uri.dll", + "lib/netcore50/System.Private.Uri.dll", + "ref/dnxcore50/_._", + "ref/netcore50/_._", + "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll", + "System.Private.Uri.4.0.0.nupkg", + "System.Private.Uri.4.0.0.nupkg.sha512", + "System.Private.Uri.nuspec" + ] + }, + "System.Reflection/4.0.10": { + "type": "package", + "sha512": "WZ+4lEE4gqGx6mrqLhSiW4oi6QLPWwdNjzhhTONmhELOrW8Cw9phlO9tltgvRUuQUqYtBiliFwhO5S5fCJElVw==", + "files": [ + "lib/DNXCore50/System.Reflection.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Reflection.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Reflection.xml", + "ref/dotnet/es/System.Reflection.xml", + "ref/dotnet/fr/System.Reflection.xml", + "ref/dotnet/it/System.Reflection.xml", + "ref/dotnet/ja/System.Reflection.xml", + "ref/dotnet/ko/System.Reflection.xml", + "ref/dotnet/ru/System.Reflection.xml", + "ref/dotnet/System.Reflection.dll", + "ref/dotnet/System.Reflection.xml", + "ref/dotnet/zh-hans/System.Reflection.xml", + "ref/dotnet/zh-hant/System.Reflection.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Reflection.dll", + "System.Reflection.4.0.10.nupkg", + "System.Reflection.4.0.10.nupkg.sha512", + "System.Reflection.nuspec" + ] + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "dbYaZWCyFAu1TGYUqR2n+Q+1casSHPR2vVW0WVNkXpZbrd2BXcZ7cpvpu9C98CTHtNmyfMWCLpCclDqly23t6A==", + "files": [ + "lib/DNXCore50/System.Reflection.Extensions.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Extensions.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/dotnet/de/System.Reflection.Extensions.xml", + "ref/dotnet/es/System.Reflection.Extensions.xml", + "ref/dotnet/fr/System.Reflection.Extensions.xml", + "ref/dotnet/it/System.Reflection.Extensions.xml", + "ref/dotnet/ja/System.Reflection.Extensions.xml", + "ref/dotnet/ko/System.Reflection.Extensions.xml", + "ref/dotnet/ru/System.Reflection.Extensions.xml", + "ref/dotnet/System.Reflection.Extensions.dll", + "ref/dotnet/System.Reflection.Extensions.xml", + "ref/dotnet/zh-hans/System.Reflection.Extensions.xml", + "ref/dotnet/zh-hant/System.Reflection.Extensions.xml", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll", + "System.Reflection.Extensions.4.0.0.nupkg", + "System.Reflection.Extensions.4.0.0.nupkg.sha512", + "System.Reflection.Extensions.nuspec" + ] + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "n9S0XpKv2ruc17FSnaiX6nV47VfHTZ1wLjKZlAirUZCvDQCH71mVp+Ohabn0xXLh5pK2PKp45HCxkqu5Fxn/lA==", + "files": [ + "lib/DNXCore50/System.Reflection.Primitives.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Primitives.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/dotnet/de/System.Reflection.Primitives.xml", + "ref/dotnet/es/System.Reflection.Primitives.xml", + "ref/dotnet/fr/System.Reflection.Primitives.xml", + "ref/dotnet/it/System.Reflection.Primitives.xml", + "ref/dotnet/ja/System.Reflection.Primitives.xml", + "ref/dotnet/ko/System.Reflection.Primitives.xml", + "ref/dotnet/ru/System.Reflection.Primitives.xml", + "ref/dotnet/System.Reflection.Primitives.dll", + "ref/dotnet/System.Reflection.Primitives.xml", + "ref/dotnet/zh-hans/System.Reflection.Primitives.xml", + "ref/dotnet/zh-hant/System.Reflection.Primitives.xml", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll", + "System.Reflection.Primitives.4.0.0.nupkg", + "System.Reflection.Primitives.4.0.0.nupkg.sha512", + "System.Reflection.Primitives.nuspec" + ] + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "qmqeZ4BJgjfU+G2JbrZt4Dk1LsMxO4t+f/9HarNY6w8pBgweO6jT+cknUH7c3qIrGvyUqraBhU45Eo6UtA0fAw==", + "files": [ + "lib/DNXCore50/System.Resources.ResourceManager.dll", + "lib/net45/_._", + "lib/netcore50/System.Resources.ResourceManager.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/dotnet/de/System.Resources.ResourceManager.xml", + "ref/dotnet/es/System.Resources.ResourceManager.xml", + "ref/dotnet/fr/System.Resources.ResourceManager.xml", + "ref/dotnet/it/System.Resources.ResourceManager.xml", + "ref/dotnet/ja/System.Resources.ResourceManager.xml", + "ref/dotnet/ko/System.Resources.ResourceManager.xml", + "ref/dotnet/ru/System.Resources.ResourceManager.xml", + "ref/dotnet/System.Resources.ResourceManager.dll", + "ref/dotnet/System.Resources.ResourceManager.xml", + "ref/dotnet/zh-hans/System.Resources.ResourceManager.xml", + "ref/dotnet/zh-hant/System.Resources.ResourceManager.xml", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll", + "System.Resources.ResourceManager.4.0.0.nupkg", + "System.Resources.ResourceManager.4.0.0.nupkg.sha512", + "System.Resources.ResourceManager.nuspec" + ] + }, + "System.Runtime/4.0.20": { + "type": "package", + "serviceable": true, + "sha512": "X7N/9Bz7jVPorqdVFO86ns1sX6MlQM+WTxELtx+Z4VG45x9+LKmWH0GRqjgKprUnVuwmfB9EJ9DQng14Z7/zwg==", + "files": [ + "lib/DNXCore50/System.Runtime.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Runtime.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Runtime.xml", + "ref/dotnet/es/System.Runtime.xml", + "ref/dotnet/fr/System.Runtime.xml", + "ref/dotnet/it/System.Runtime.xml", + "ref/dotnet/ja/System.Runtime.xml", + "ref/dotnet/ko/System.Runtime.xml", + "ref/dotnet/ru/System.Runtime.xml", + "ref/dotnet/System.Runtime.dll", + "ref/dotnet/System.Runtime.xml", + "ref/dotnet/zh-hans/System.Runtime.xml", + "ref/dotnet/zh-hant/System.Runtime.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.dll", + "System.Runtime.4.0.20.nupkg", + "System.Runtime.4.0.20.nupkg.sha512", + "System.Runtime.nuspec" + ] + }, + "System.Runtime.Extensions/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "5dsEwf3Iml7d5OZeT20iyOjT+r+okWpN7xI2v+R4cgd3WSj4DeRPTvPFjDpacbVW4skCAZ8B9hxXJYgkCFKJ1A==", + "files": [ + "lib/DNXCore50/System.Runtime.Extensions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Runtime.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Runtime.Extensions.xml", + "ref/dotnet/es/System.Runtime.Extensions.xml", + "ref/dotnet/fr/System.Runtime.Extensions.xml", + "ref/dotnet/it/System.Runtime.Extensions.xml", + "ref/dotnet/ja/System.Runtime.Extensions.xml", + "ref/dotnet/ko/System.Runtime.Extensions.xml", + "ref/dotnet/ru/System.Runtime.Extensions.xml", + "ref/dotnet/System.Runtime.Extensions.dll", + "ref/dotnet/System.Runtime.Extensions.xml", + "ref/dotnet/zh-hans/System.Runtime.Extensions.xml", + "ref/dotnet/zh-hant/System.Runtime.Extensions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll", + "System.Runtime.Extensions.4.0.10.nupkg", + "System.Runtime.Extensions.4.0.10.nupkg.sha512", + "System.Runtime.Extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "638VhpRq63tVcQ6HDb3um3R/J2BtR1Sa96toHo6PcJGPXEPEsleCuqhBgX2gFCz0y0qkutANwW6VPPY5wQu1XQ==", + "files": [ + "lib/DNXCore50/System.Runtime.Handles.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Runtime.Handles.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Runtime.Handles.xml", + "ref/dotnet/es/System.Runtime.Handles.xml", + "ref/dotnet/fr/System.Runtime.Handles.xml", + "ref/dotnet/it/System.Runtime.Handles.xml", + "ref/dotnet/ja/System.Runtime.Handles.xml", + "ref/dotnet/ko/System.Runtime.Handles.xml", + "ref/dotnet/ru/System.Runtime.Handles.xml", + "ref/dotnet/System.Runtime.Handles.dll", + "ref/dotnet/System.Runtime.Handles.xml", + "ref/dotnet/zh-hans/System.Runtime.Handles.xml", + "ref/dotnet/zh-hant/System.Runtime.Handles.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll", + "System.Runtime.Handles.4.0.0.nupkg", + "System.Runtime.Handles.4.0.0.nupkg.sha512", + "System.Runtime.Handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.0.20": { + "type": "package", + "serviceable": true, + "sha512": "ZgDyBYfEnjWoz/viS6VOswA6XOkDSH2DzgbpczbW50RywhnCgTl+w3JEvtAiOGyIh8cyx1NJq80jsNBSUr8Pig==", + "files": [ + "lib/DNXCore50/System.Runtime.InteropServices.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Runtime.InteropServices.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Runtime.InteropServices.xml", + "ref/dotnet/es/System.Runtime.InteropServices.xml", + "ref/dotnet/fr/System.Runtime.InteropServices.xml", + "ref/dotnet/it/System.Runtime.InteropServices.xml", + "ref/dotnet/ja/System.Runtime.InteropServices.xml", + "ref/dotnet/ko/System.Runtime.InteropServices.xml", + "ref/dotnet/ru/System.Runtime.InteropServices.xml", + "ref/dotnet/System.Runtime.InteropServices.dll", + "ref/dotnet/System.Runtime.InteropServices.xml", + "ref/dotnet/zh-hans/System.Runtime.InteropServices.xml", + "ref/dotnet/zh-hant/System.Runtime.InteropServices.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll", + "System.Runtime.InteropServices.4.0.20.nupkg", + "System.Runtime.InteropServices.4.0.20.nupkg.sha512", + "System.Runtime.InteropServices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.0.0-beta-23213": { + "type": "package", + "serviceable": true, + "sha512": "yzVJM7dF6XqnGTkv2IRufKs8AiqDpfdfBvMT5sVgY2fCtUXdkcjxiIWzaVIau8IYrJUlQDmSpeQ8NV6l1vz0Lg==", + "files": [ + "lib/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Runtime.InteropServices.RuntimeInformation.4.0.0-beta-23213.nupkg", + "System.Runtime.InteropServices.RuntimeInformation.4.0.0-beta-23213.nupkg.sha512", + "System.Runtime.InteropServices.RuntimeInformation.nuspec" + ] + }, + "System.Text.Encoding/4.0.10": { + "type": "package", + "sha512": "fNlSFgy4OuDlJrP9SFFxMlaLazq6ipv15sU5TiEgg9UCVnA/OgoVUfymFp4AOk1jOkW5SVxWbeeIUptcM+m/Vw==", + "files": [ + "lib/DNXCore50/System.Text.Encoding.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Text.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Text.Encoding.xml", + "ref/dotnet/es/System.Text.Encoding.xml", + "ref/dotnet/fr/System.Text.Encoding.xml", + "ref/dotnet/it/System.Text.Encoding.xml", + "ref/dotnet/ja/System.Text.Encoding.xml", + "ref/dotnet/ko/System.Text.Encoding.xml", + "ref/dotnet/ru/System.Text.Encoding.xml", + "ref/dotnet/System.Text.Encoding.dll", + "ref/dotnet/System.Text.Encoding.xml", + "ref/dotnet/zh-hans/System.Text.Encoding.xml", + "ref/dotnet/zh-hant/System.Text.Encoding.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll", + "System.Text.Encoding.4.0.10.nupkg", + "System.Text.Encoding.4.0.10.nupkg.sha512", + "System.Text.Encoding.nuspec" + ] + }, + "System.Text.RegularExpressions/4.0.0": { + "type": "package", + "sha512": "D2CHm8LBIymJK9+1E3sn4cUEzMd6B+quQUrCGUluv9QFBNOdL3XqNu548QKeNplEXFOmF5aKXMxXbTrjbEUNMw==", + "files": [ + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "License.rtf", + "ref/dotnet/de/System.Text.RegularExpressions.xml", + "ref/dotnet/es/System.Text.RegularExpressions.xml", + "ref/dotnet/fr/System.Text.RegularExpressions.xml", + "ref/dotnet/it/System.Text.RegularExpressions.xml", + "ref/dotnet/ja/System.Text.RegularExpressions.xml", + "ref/dotnet/ko/System.Text.RegularExpressions.xml", + "ref/dotnet/ru/System.Text.RegularExpressions.xml", + "ref/dotnet/System.Text.RegularExpressions.dll", + "ref/dotnet/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "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/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Text.RegularExpressions.4.0.0.nupkg", + "System.Text.RegularExpressions.4.0.0.nupkg.sha512", + "System.Text.RegularExpressions.nuspec" + ] + }, + "System.Threading/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "0w6pRxIEE7wuiOJeKabkDgeIKmqf4ER1VNrs6qFwHnooEE78yHwi/bKkg5Jo8/pzGLm0xQJw0nEmPXt1QBAIUA==", + "files": [ + "lib/DNXCore50/System.Threading.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Threading.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Threading.xml", + "ref/dotnet/es/System.Threading.xml", + "ref/dotnet/fr/System.Threading.xml", + "ref/dotnet/it/System.Threading.xml", + "ref/dotnet/ja/System.Threading.xml", + "ref/dotnet/ko/System.Threading.xml", + "ref/dotnet/ru/System.Threading.xml", + "ref/dotnet/System.Threading.dll", + "ref/dotnet/System.Threading.xml", + "ref/dotnet/zh-hans/System.Threading.xml", + "ref/dotnet/zh-hant/System.Threading.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Threading.dll", + "System.Threading.4.0.10.nupkg", + "System.Threading.4.0.10.nupkg.sha512", + "System.Threading.nuspec" + ] + }, + "System.Threading.Tasks/4.0.10": { + "type": "package", + "serviceable": true, + "sha512": "NOwJGDfk79jR0bnzosbXLVD/PdI8KzBeESoa3CofEM5v9R5EBfcI0Jyf18stx+0IYV9okmDIDxVtxq9TbnR9bQ==", + "files": [ + "lib/DNXCore50/System.Threading.Tasks.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Threading.Tasks.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "ref/dotnet/de/System.Threading.Tasks.xml", + "ref/dotnet/es/System.Threading.Tasks.xml", + "ref/dotnet/fr/System.Threading.Tasks.xml", + "ref/dotnet/it/System.Threading.Tasks.xml", + "ref/dotnet/ja/System.Threading.Tasks.xml", + "ref/dotnet/ko/System.Threading.Tasks.xml", + "ref/dotnet/ru/System.Threading.Tasks.xml", + "ref/dotnet/System.Threading.Tasks.dll", + "ref/dotnet/System.Threading.Tasks.xml", + "ref/dotnet/zh-hans/System.Threading.Tasks.xml", + "ref/dotnet/zh-hant/System.Threading.Tasks.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll", + "System.Threading.Tasks.4.0.10.nupkg", + "System.Threading.Tasks.4.0.10.nupkg.sha512", + "System.Threading.Tasks.nuspec" + ] + }, + "xunit/2.1.0": { + "type": "package", + "sha512": "u/7VQSOSXa7kSG4iK6Lcn7RqKZQ3hk7cnyMNVMpXHSP0RI5VQEtc44hvkG3LyWOVsx1dhUDD3rPAHAxyOUDQJw==", + "files": [ + "xunit.2.1.0.nupkg", + "xunit.2.1.0.nupkg.sha512", + "xunit.nuspec" + ] + }, + "xunit.abstractions/2.0.0": { + "type": "package", + "sha512": "NAdxKQRzuLnCZ0g++x6i87/8rMBpQoRiRlRNLAqfODm2zJPbteHRoSER3DXfxnqrHXyBJT8rFaZ8uveBeQyaMA==", + "files": [ + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll", + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.xml", + "xunit.abstractions.2.0.0.nupkg", + "xunit.abstractions.2.0.0.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.assert/2.1.0": { + "type": "package", + "sha512": "Hhhw+YaTe+BGhbr57dxVE+6VJk8BfThqFFii1XIsSZ4qx+SSCixprJC10JkiLRVSTfWyT8W/4nAf6NQgIrmBxA==", + "files": [ + "lib/dotnet/xunit.assert.dll", + "lib/dotnet/xunit.assert.pdb", + "lib/dotnet/xunit.assert.xml", + "lib/portable-net45+win8+wp8+wpa81/xunit.assert.dll", + "lib/portable-net45+win8+wp8+wpa81/xunit.assert.pdb", + "lib/portable-net45+win8+wp8+wpa81/xunit.assert.xml", + "xunit.assert.2.1.0.nupkg", + "xunit.assert.2.1.0.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.core/2.1.0": { + "type": "package", + "sha512": "jlbYdPbnkPIRwJllcT/tQZCNsSElVDEymdpJfH79uTUrPARkELVYw9o/zhAjKZXmeikGqGK5C2Yny4gTNoEu0Q==", + "files": [ + "build/_desktop/xunit.execution.desktop.dll", + "build/dnx451/_._", + "build/monoandroid/_._", + "build/monotouch/_._", + "build/net45/_._", + "build/portable-net45+win8+wp8+wpa81/xunit.core.props", + "build/win8/_._", + "build/win81/xunit.core.props", + "build/wp8/_._", + "build/wpa81/xunit.core.props", + "build/xamarinios/_._", + "xunit.core.2.1.0.nupkg", + "xunit.core.2.1.0.nupkg.sha512", + "xunit.core.nuspec" + ] + }, + "xunit.extensibility.core/2.1.0": { + "type": "package", + "sha512": "ANWM3WxeaeHjACLRlmrv+xOc0WAcr3cvIiJE+gqbdzTv1NCH4p1VDyT+8WmmdCc9db0WFiJLaDy4YTYsL1wWXw==", + "files": [ + "lib/dotnet/xunit.core.dll", + "lib/dotnet/xunit.core.dll.tdnet", + "lib/dotnet/xunit.core.pdb", + "lib/dotnet/xunit.core.xml", + "lib/dotnet/xunit.runner.tdnet.dll", + "lib/dotnet/xunit.runner.utility.desktop.dll", + "lib/portable-net45+win8+wp8+wpa81/xunit.core.dll", + "lib/portable-net45+win8+wp8+wpa81/xunit.core.dll.tdnet", + "lib/portable-net45+win8+wp8+wpa81/xunit.core.pdb", + "lib/portable-net45+win8+wp8+wpa81/xunit.core.xml", + "lib/portable-net45+win8+wp8+wpa81/xunit.runner.tdnet.dll", + "lib/portable-net45+win8+wp8+wpa81/xunit.runner.utility.desktop.dll", + "xunit.extensibility.core.2.1.0.nupkg", + "xunit.extensibility.core.2.1.0.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] + }, + "xunit.extensibility.execution/2.1.0": { + "type": "package", + "sha512": "tAoNafoVknKa3sZJPMvtZRnhOSk3gasEGeceSm7w/gyGwsR/OXFxndWJB1xSHeoy33d3Z6jFqn4A3j+pWCF0Ew==", + "files": [ + "lib/dnx451/xunit.execution.dotnet.dll", + "lib/dnx451/xunit.execution.dotnet.pdb", + "lib/dnx451/xunit.execution.dotnet.xml", + "lib/dotnet/xunit.execution.dotnet.dll", + "lib/dotnet/xunit.execution.dotnet.pdb", + "lib/dotnet/xunit.execution.dotnet.xml", + "lib/monoandroid/xunit.execution.dotnet.dll", + "lib/monoandroid/xunit.execution.dotnet.pdb", + "lib/monoandroid/xunit.execution.dotnet.xml", + "lib/monotouch/xunit.execution.dotnet.dll", + "lib/monotouch/xunit.execution.dotnet.pdb", + "lib/monotouch/xunit.execution.dotnet.xml", + "lib/net45/xunit.execution.desktop.dll", + "lib/net45/xunit.execution.desktop.pdb", + "lib/net45/xunit.execution.desktop.xml", + "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.dll", + "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.pdb", + "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.xml", + "lib/win8/xunit.execution.dotnet.dll", + "lib/win8/xunit.execution.dotnet.pdb", + "lib/win8/xunit.execution.dotnet.xml", + "lib/wp8/xunit.execution.dotnet.dll", + "lib/wp8/xunit.execution.dotnet.pdb", + "lib/wp8/xunit.execution.dotnet.xml", + "lib/wpa81/xunit.execution.dotnet.dll", + "lib/wpa81/xunit.execution.dotnet.pdb", + "lib/wpa81/xunit.execution.dotnet.xml", + "lib/xamarinios/xunit.execution.dotnet.dll", + "lib/xamarinios/xunit.execution.dotnet.pdb", + "lib/xamarinios/xunit.execution.dotnet.xml", + "xunit.extensibility.execution.2.1.0.nupkg", + "xunit.extensibility.execution.2.1.0.nupkg.sha512", + "xunit.extensibility.execution.nuspec" + ] + }, + "xunit.netcore.extensions/1.0.0-prerelease-00122": { + "type": "package", + "serviceable": true, + "sha512": "eSQ1Jo09hXNAFL+JfcqiiN7+GuOO78RZoXd0darX4V0xYopw0sbe/wxTy54fXE2TvlQj9l7943j5FN2Psz9TWA==", + "files": [ + "lib/dotnet/Xunit.NetCore.Extensions.dll", + "xunit.netcore.extensions.1.0.0-prerelease-00122.nupkg", + "xunit.netcore.extensions.1.0.0-prerelease-00122.nupkg.sha512", + "xunit.netcore.extensions.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "": [ + "System.Runtime >= 4.0.20", + "System.Threading.Tasks >= 4.0.10", + "xunit >= 2.1.0", + "xunit.netcore.extensions >= 1.0.0-prerelease-*" + ], + "DNXCore,Version=v5.0": [] + } +} \ No newline at end of file