diff --git a/.gitignore b/.gitignore index 27b4eabd..cae98aa3 100644 --- a/.gitignore +++ b/.gitignore @@ -178,3 +178,4 @@ pip-log.txt xpkg *.xam +.idea/ diff --git a/Mindscape.Raygun4Net.AspNetCore.sln b/Mindscape.Raygun4Net.AspNetCore.sln index 09b41336..24f5c7a6 100644 --- a/Mindscape.Raygun4Net.AspNetCore.sln +++ b/Mindscape.Raygun4Net.AspNetCore.sln @@ -1,20 +1,88 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.26114.2 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Mindscape.Raygun4Net.AspNetCore", "Mindscape.Raygun4Net.AspNetCore\Mindscape.Raygun4Net.AspNetCore.xproj", "{30672B20-E007-4FDF-81A3-BCF60EF023C2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.AspNetCore", "Mindscape.Raygun4Net.AspNetCore\Mindscape.Raygun4Net.AspNetCore.csproj", "{F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.AspNetCore2.Tests", "Mindscape.Raygun4Net.AspNetCore2.Tests\Mindscape.Raygun4Net.AspNetCore2.Tests.csproj", "{1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.NetCore.Common", "Mindscape.Raygun4Net.NetCore.Common\Mindscape.Raygun4Net.NetCore.Common.csproj", "{A069590F-1E39-4EFF-AEB3-437E4538DA8E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib", "Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib\Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib.csproj", "{875F0C37-F15E-4E0D-979E-218D0DD8509D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.NetCore", "Mindscape.Raygun4Net.NetCore\Mindscape.Raygun4Net.NetCore.csproj", "{B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {30672B20-E007-4FDF-81A3-BCF60EF023C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30672B20-E007-4FDF-81A3-BCF60EF023C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30672B20-E007-4FDF-81A3-BCF60EF023C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30672B20-E007-4FDF-81A3-BCF60EF023C2}.Release|Any CPU.Build.0 = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|Any CPU.Build.0 = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|x64.ActiveCfg = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|x64.Build.0 = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|x86.ActiveCfg = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Debug|x86.Build.0 = Debug|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|x64.ActiveCfg = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|x64.Build.0 = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|x86.ActiveCfg = Release|Any CPU + {F0EFD4AB-961E-4A70-9F5E-BA18671EE13E}.Release|x86.Build.0 = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|Any CPU.Build.0 = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|x64.ActiveCfg = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|x64.Build.0 = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|x86.ActiveCfg = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Debug|x86.Build.0 = Debug|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|x64.ActiveCfg = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|x64.Build.0 = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|x86.ActiveCfg = Release|Any CPU + {1B8F6225-7D9C-4D4A-A2AD-8F78F8FA8B8B}.Release|x86.Build.0 = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|Any CPU.Build.0 = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|x64.ActiveCfg = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|x64.Build.0 = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|x86.ActiveCfg = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Debug|x86.Build.0 = Debug|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|x64.ActiveCfg = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|x64.Build.0 = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|x86.ActiveCfg = Release|Any CPU + {A069590F-1E39-4EFF-AEB3-437E4538DA8E}.Release|x86.Build.0 = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|Any CPU.Build.0 = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|x64.ActiveCfg = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|x64.Build.0 = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|x86.ActiveCfg = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Debug|x86.Build.0 = Debug|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|x64.ActiveCfg = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|x64.Build.0 = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|x86.ActiveCfg = Release|Any CPU + {875F0C37-F15E-4E0D-979E-218D0DD8509D}.Release|x86.Build.0 = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|Any CPU.Build.0 = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|x64.ActiveCfg = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|x64.Build.0 = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|x86.ActiveCfg = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Debug|x86.Build.0 = Debug|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|x64.ActiveCfg = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|x64.Build.0 = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|x86.ActiveCfg = Release|Any CPU + {B2981FA2-77DB-46EC-BE3A-FE31ADFE1851}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreMessageBuilder.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreMessageBuilder.cs deleted file mode 100644 index e10f5b12..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreMessageBuilder.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using Mindscape.Raygun4Net.Builders; -using Mindscape.Raygun4Net.Messages; - -namespace Mindscape.Raygun4Net.Builders -{ - public class RaygunAspNetCoreMessageBuilder : IRaygunMessageBuilder - { - public static RaygunAspNetCoreMessageBuilder New(RaygunSettings settings) - { - return new RaygunAspNetCoreMessageBuilder(settings); - } - - private readonly RaygunMessage _raygunMessage; - private readonly RaygunSettings _settings; - - private RaygunAspNetCoreMessageBuilder(RaygunSettings settings) - { - _raygunMessage = new RaygunMessage(); - _settings = settings; - } - - public RaygunMessage Build() - { - return _raygunMessage; - } - - public IRaygunMessageBuilder SetMachineName(string machineName) - { - _raygunMessage.Details.MachineName = machineName; - return this; - } - - public IRaygunMessageBuilder SetEnvironmentDetails() - { - _raygunMessage.Details.Environment = RaygunEnvironmentMessageBuilder.Build(_settings); - return this; - } - - public IRaygunMessageBuilder SetExceptionDetails(Exception exception) - { - if (exception != null) - { - _raygunMessage.Details.Error = RaygunErrorMessageBuilder.Build(exception); - } - - return this; - } - - public IRaygunMessageBuilder SetClientDetails() - { - _raygunMessage.Details.Client = new RaygunClientMessage(); - return this; - } - - public IRaygunMessageBuilder SetUserCustomData(IDictionary userCustomData) - { - _raygunMessage.Details.UserCustomData = userCustomData; - return this; - } - - public IRaygunMessageBuilder SetTags(IList tags) - { - _raygunMessage.Details.Tags = tags; - return this; - } - - public IRaygunMessageBuilder SetUser(RaygunIdentifierMessage user) - { - _raygunMessage.Details.User = user; - return this; - } - - public RaygunAspNetCoreMessageBuilder SetRequestDetails(RaygunRequestMessage message) - { - _raygunMessage.Details.Request = message; - return this; - } - - public RaygunAspNetCoreMessageBuilder SetResponseDetails(RaygunResponseMessage message) - { - _raygunMessage.Details.Response = message; - return this; - } - - public IRaygunMessageBuilder SetVersion(string version) - { - if (!String.IsNullOrEmpty(version)) - { - _raygunMessage.Details.Version = version; - } - else if (!String.IsNullOrEmpty(_settings.ApplicationVersion)) - { - _raygunMessage.Details.Version = _settings.ApplicationVersion; - } - else - { - _raygunMessage.Details.Version = "Not supplied"; - - // Requires something equivalent to GetEntryAssembly to exist in DNXCORE50. - /* - var entryAssembly = Assembly.GetEntryAssembly(); - if (entryAssembly != null) - { - _raygunMessage.Details.Version = entryAssembly.GetName().Version.ToString(); - } - else - { - _raygunMessage.Details.Version = "Not supplied"; - } - */ - } - return this; - } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreRequestMessageBuilder.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreRequestMessageBuilder.cs index b2b5c327..bc326070 100644 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreRequestMessageBuilder.cs +++ b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreRequestMessageBuilder.cs @@ -4,13 +4,12 @@ using System.Globalization; using System.IO; using System.Linq; +using System.Text; using System.Threading.Tasks; -using Mindscape.Raygun4Net.Messages; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; -using System.Text; -namespace Mindscape.Raygun4Net.Builders +namespace Mindscape.Raygun4Net.AspNetCore.Builders { public class RaygunAspNetCoreRequestMessageBuilder { diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreResponseMessageBuilder.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreResponseMessageBuilder.cs index 6dd958fb..c4f096e9 100644 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreResponseMessageBuilder.cs +++ b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunAspNetCoreResponseMessageBuilder.cs @@ -1,9 +1,7 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Features; -using Mindscape.Raygun4Net.Messages; -namespace Mindscape.Raygun4Net.Builders +namespace Mindscape.Raygun4Net.AspNetCore.Builders { public class RaygunAspNetCoreResponseMessageBuilder { diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunEnvironmentMessageBuilder.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunEnvironmentMessageBuilder.cs deleted file mode 100644 index f91ee086..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunEnvironmentMessageBuilder.cs +++ /dev/null @@ -1,176 +0,0 @@ -using System; -using System.Globalization; - -#if NET451 -using System.Collections.Generic; -using System.IO; -using System.Management; -using System.Security; -using System.Security.Permissions; -using System.Windows.Forms; -using Microsoft.VisualBasic.Devices; -#endif - -using Mindscape.Raygun4Net.Messages; - -namespace Mindscape.Raygun4Net.Builders -{ - internal class RaygunEnvironmentMessageBuilder - { - public static RaygunEnvironmentMessage Build(RaygunSettings settings) - { - RaygunEnvironmentMessage message = new RaygunEnvironmentMessage(); - - try - { - DateTime now = DateTime.Now; - message.UtcOffset = TimeZoneInfo.Local.GetUtcOffset(now).TotalHours; - message.Locale = CultureInfo.CurrentCulture.DisplayName; - } - catch { } - - // The cross platform APIs for getting this information don't exist right now. - // In the mean time, chuck conditionals around the whole thing. - -#if NET451 - // Different environments can fail to load the environment details. - // For now if they fail to load for whatever reason then just - // swallow the exception. A good addition would be to handle - // these cases and load them correctly depending on where its running. - // see http://raygun.io/forums/thread/3655 - - try - { - message.WindowBoundsWidth = SystemInformation.VirtualScreen.Width; - message.WindowBoundsHeight = SystemInformation.VirtualScreen.Height; - } - catch (Exception ex) - { - System.Diagnostics.Trace.WriteLine("Error retrieving window dimensions: {0}", ex.Message); - } - - try - { - ComputerInfo info = new ComputerInfo(); - message.OSVersion = info.OSVersion; - - bool mediumTrust = settings.MediumTrust || !HasUnrestrictedFeatureSet; - - if (!mediumTrust) - { - // ProcessorCount cannot run in medium trust under net35, once we have - // moved to net40 minimum we can move this out of here - message.ProcessorCount = Environment.ProcessorCount; - message.Architecture = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); - message.TotalPhysicalMemory = (ulong)info.TotalPhysicalMemory / 0x100000; // in MB - message.AvailablePhysicalMemory = (ulong)info.AvailablePhysicalMemory / 0x100000; - message.TotalVirtualMemory = info.TotalVirtualMemory / 0x100000; - message.AvailableVirtualMemory = info.AvailableVirtualMemory / 0x100000; - message.DiskSpaceFree = GetDiskSpace(); - message.Cpu = GetCpu(); - message.OSVersion = GetOSVersion(); - } - } - catch (SecurityException) - { - System.Diagnostics.Trace.WriteLine("RaygunClient error: couldn't access environment variables. If you are running in Medium Trust, in web.config in RaygunSettings set mediumtrust=\"true\""); - } - catch (Exception ex) - { - System.Diagnostics.Trace.WriteLine("Error retrieving environment info: {0}", ex.Message); - } -#endif - return message; - } - -#if NET451 - private static string GetCpu() - { - ManagementObjectSearcher wmiProcessorSearcher = new ManagementObjectSearcher("SELECT Name FROM Win32_Processor"); - ManagementObjectCollection wmiProcessorCollection = wmiProcessorSearcher.Get(); - - foreach (ManagementObject wmiProcessorObject in wmiProcessorCollection) - { - try - { - var name = wmiProcessorObject["Name"].ToString(); - return name; - } - catch (ManagementException ex) - { - System.Diagnostics.Trace.WriteLine("Error retrieving CPU {0}", ex.Message); - } - } - return Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER"); - } - - private static string GetOSVersion() - { - ManagementObjectSearcher wmiOperatingSystemSearcher = new ManagementObjectSearcher("SELECT Version FROM Win32_OperatingSystem"); - ManagementObjectCollection wmiOperatingSystemCollection = wmiOperatingSystemSearcher.Get(); - - foreach (ManagementObject wmiOperatingSystemObject in wmiOperatingSystemCollection) - { - try - { - var version = wmiOperatingSystemObject["Version"].ToString(); - return version; - } - catch (ManagementException ex) - { - System.Diagnostics.Trace.WriteLine("Error retrieving OSVersion {0}", ex.Message); - } - } - return Environment.OSVersion.Version.ToString(3); - } - - private static List GetDiskSpace() - { - List diskSpaceFree = new List(); - foreach (DriveInfo drive in DriveInfo.GetDrives()) - { - if (drive.IsReady) - { - diskSpaceFree.Add((double)drive.AvailableFreeSpace / 0x40000000); // in GB - } - } - return diskSpaceFree; - } - - private static volatile bool _unrestrictedFeatureSet = false; - private static volatile bool _determinedUnrestrictedFeatureSet = false; - private static readonly object _threadLock = new object(); - - private static bool HasUnrestrictedFeatureSet - { - get - { - if (!_determinedUnrestrictedFeatureSet) - { - lock (_threadLock) - { - if (!_determinedUnrestrictedFeatureSet) - { - // This seems to crash if not in full trust: - //_unrestrictedFeatureSet = AppDomain.CurrentDomain.ApplicationTrust == null;// || AppDomain.CurrentDomain.ApplicationTrust.DefaultGrantSet.PermissionSet.IsUnrestricted(); - try - { - // See if we're running in full trust: - new PermissionSet(PermissionState.Unrestricted).Demand(); - _unrestrictedFeatureSet = true; - } - catch (SecurityException) - { - _unrestrictedFeatureSet = false; - } - - _determinedUnrestrictedFeatureSet = true; - } - } - } - return _unrestrictedFeatureSet; - } - } -#endif - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilder.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilder.cs deleted file mode 100644 index cedbcb51..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilder.cs +++ /dev/null @@ -1,106 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using System.Reflection; -using Mindscape.Raygun4Net; -using Mindscape.Raygun4Net.Messages; - -namespace Mindscape.Raygun4Net.Builders -{ - public class RaygunErrorMessageBuilder : RaygunErrorMessageBuilderBase - { - public static RaygunErrorMessage Build(Exception exception) - { - RaygunErrorMessage message = new RaygunErrorMessage(); - - var exceptionType = exception.GetType(); - - message.Message = exception.Message; - message.ClassName = exceptionType.FullName; - - message.StackTrace = BuildStackTrace(exception); - - if (exception.Data != null) - { - IDictionary data = new Dictionary(); - foreach (object key in exception.Data.Keys) - { - if (!RaygunClient.SentKey.Equals(key)) - { - data[key] = exception.Data[key]; - } - } - message.Data = data; - } - - AggregateException ae = exception as AggregateException; - if (ae != null && ae.InnerExceptions != null) - { - message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count]; - int index = 0; - foreach (Exception e in ae.InnerExceptions) - { - message.InnerErrors[index] = Build(e); - index++; - } - } - else if (exception.InnerException != null) - { - message.InnerError = Build(exception.InnerException); - } - - return message; - } - - - private static RaygunErrorStackTraceLineMessage[] BuildStackTrace(Exception exception) - { - var lines = new List(); - - var stackTrace = new StackTrace(exception, true); - var frames = stackTrace.GetFrames(); - - if (frames == null || frames.Length == 0) - { - var line = new RaygunErrorStackTraceLineMessage { FileName = "none", LineNumber = 0 }; - lines.Add(line); - return lines.ToArray(); - } - - foreach (StackFrame frame in frames) - { - MethodBase method = frame.GetMethod(); - - if (method != null) - { - int lineNumber = frame.GetFileLineNumber(); - - if (lineNumber == 0) - { - lineNumber = frame.GetILOffset(); - } - - var methodName = GenerateMethodName(method); - - string file = frame.GetFileName(); - - string className = method.DeclaringType != null ? method.DeclaringType.FullName : "(unknown)"; - - var line = new RaygunErrorStackTraceLineMessage - { - FileName = file, - LineNumber = lineNumber, - MethodName = methodName, - ClassName = className - }; - - lines.Add(line); - } - } - - return lines.ToArray(); - } - - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilderBase.cs b/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilderBase.cs deleted file mode 100644 index 320241f4..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Builders/RaygunErrorMessageBuilderBase.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Reflection; -using System.Text; - -namespace Mindscape.Raygun4Net.Builders -{ - public abstract class RaygunErrorMessageBuilderBase - { - protected static string GenerateMethodName(MethodBase method) - { - var stringBuilder = new StringBuilder(); - - stringBuilder.Append(method.Name); - - bool first = true; - if (method is MethodInfo && method.IsGenericMethod) - { - Type[] genericArguments = method.GetGenericArguments(); - stringBuilder.Append("["); - for (int i = 0; i < genericArguments.Length; i++) - { - if (!first) - { - stringBuilder.Append(","); - } - else - { - first = false; - } - stringBuilder.Append(genericArguments[i].Name); - } - stringBuilder.Append("]"); - } - stringBuilder.Append("("); - ParameterInfo[] parameters = method.GetParameters(); - first = true; - for (int i = 0; i < parameters.Length; ++i) - { - if (!first) - { - stringBuilder.Append(", "); - } - else - { - first = false; - } - string type = ""; - if (parameters[i].ParameterType != null) - { - type = parameters[i].ParameterType.Name; - } - stringBuilder.Append(type + " " + parameters[i].Name); - } - stringBuilder.Append(")"); - - return stringBuilder.ToString(); - } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunClientMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunClientMessage.cs deleted file mode 100644 index d318737a..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunClientMessage.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Reflection; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunClientMessage - { - public RaygunClientMessage() - { - Name = ((AssemblyTitleAttribute)GetType().GetTypeInfo().Assembly.GetCustomAttribute(typeof(AssemblyTitleAttribute))).Title; - Version = new AssemblyName(GetType().GetTypeInfo().Assembly.FullName).Version.ToString(); - ClientUrl = @"https://github.com/MindscapeHQ/raygun4net"; - } - - public string Name { get; set; } - - public string Version { get; set; } - - public string ClientUrl { get; set; } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunEnvironmentMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunEnvironmentMessage.cs deleted file mode 100644 index f9781fa4..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunEnvironmentMessage.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections.Generic; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunEnvironmentMessage - { - public int ProcessorCount { get; set; } - - public string OSVersion { get; set; } - - public double WindowBoundsWidth { get; set; } - - public double WindowBoundsHeight { get; set; } - - public string Cpu { get; set; } - - public string Architecture { get; set; } - - public ulong TotalVirtualMemory { get; set; } - - public ulong AvailableVirtualMemory { get; set; } - - public List DiskSpaceFree { get; set; } - - public ulong TotalPhysicalMemory { get; set; } - - public ulong AvailablePhysicalMemory { get; set; } - - public double UtcOffset { get; set; } - - public string Locale { get; set; } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorMessage.cs deleted file mode 100644 index a4b85a03..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorMessage.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunErrorMessage - { - public RaygunErrorMessage InnerError { get; set; } - - public RaygunErrorMessage[] InnerErrors { get; set; } - - public IDictionary Data { get; set; } - - public string ClassName { get; set; } - - public string Message { get; set; } - - public RaygunErrorStackTraceLineMessage[] StackTrace { get; set; } - - public override string ToString() - { - // This exists because Reflection in Xamarin can't seem to obtain the Getter methods unless the getter is used somewhere in the code. - // The getter of all properties is required to serialize the Raygun messages to JSON. - return string.Format("[RaygunErrorMessage: InnerError={0}, InnerErrors={1}, Data={2}, ClassName={3}, Message={4}, StackTrace={5}]", InnerError, InnerErrors, Data, ClassName, Message, StackTrace); - } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorStackTraceLineMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorStackTraceLineMessage.cs deleted file mode 100644 index 41609fdf..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunErrorStackTraceLineMessage.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunErrorStackTraceLineMessage - { - public int LineNumber { get; set; } - - public string ClassName { get; set; } - - public string FileName { get; set; } - - public string MethodName { get; set; } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunIdentifierMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunIdentifierMessage.cs deleted file mode 100644 index e7a81750..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunIdentifierMessage.cs +++ /dev/null @@ -1,50 +0,0 @@ -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunIdentifierMessage - { - public RaygunIdentifierMessage(string user) - { - Identifier = user; - } - - /// - /// Unique Identifier for this user. Set this to the identifier you use internally to look up users, - /// or a correlation id for anonymous users if you have one. It doesn't have to be unique, but we will - /// treat any duplicated values as the same user. If you use the user's email address as the identifier, - /// enter it here as well as the Email field. - /// - public string Identifier { get; set; } - - /// - /// Flag indicating whether a user is anonymous or not. - /// - public bool IsAnonymous { get; set; } - - /// - /// User's email address - /// - public string Email { get; set; } - - /// - /// User's full name. If you are going to set any names, you should probably set this one too. - /// - public string FullName { get; set; } - - /// - /// User's first name. - /// - public string FirstName { get; set; } - - /// - /// Device Identifier. Could be used to identify users across apps. - /// - public string UUID { get; set; } - - public override string ToString() - { - // This exists because Reflection in Xamarin can't seem to obtain the Getter methods unless the getter is used somewhere in the code. - // The getter of all properties is required to serialize the Raygun messages to JSON. - return string.Format("[RaygunIdentifierMessage: Identifier={0}, IsAnonymous={1}, Email={2}, FullName={3}, FirstName={4}, UUID={5}]", Identifier, IsAnonymous, Email, FullName, FirstName, UUID); - } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessage.cs deleted file mode 100644 index 3b8737ec..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessage.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunMessage - { - public RaygunMessage() - { - OccurredOn = DateTime.UtcNow; - Details = new RaygunMessageDetails(); - } - - public DateTime OccurredOn { get; set; } - - public RaygunMessageDetails Details { get; set; } - - public override string ToString() - { - // This exists because Reflection in Xamarin can't seem to obtain the Getter methods unless the getter is used somewhere in the code. - // The getter of all properties is required to serialize the Raygun messages to JSON. - return string.Format("[RaygunMessage: OccurredOn={0}, Details={1}]", OccurredOn, Details); - } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessageDetails.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessageDetails.cs deleted file mode 100644 index ce158b5f..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunMessageDetails.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Collections; -using System.Collections.Generic; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunMessageDetails - { - public string MachineName { get; set; } - - public string GroupingKey { get; set; } - - public string Version { get; set; } - - public RaygunErrorMessage Error { get; set; } - - public RaygunEnvironmentMessage Environment { get; set; } - - public RaygunClientMessage Client { get; set; } - - public IList Tags { get; set; } - - public IDictionary UserCustomData { get; set; } - - public RaygunIdentifierMessage User { get; set; } - - public RaygunRequestMessage Request { get; set; } - - public RaygunResponseMessage Response { get; set; } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunRequestMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunRequestMessage.cs deleted file mode 100644 index be1d5d1a..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunRequestMessage.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Collections; - -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunRequestMessage - { - public class Cookie - { - public Cookie(string name, string value) - { - Name = name; - Value = value; - } - - public string Name { get; set; } - public string Value { get; set; } - } - - public string HostName { get; set; } - - public string Url { get; set; } - - public string HttpMethod { get; set; } - - public string IPAddress { get; set; } - - public IDictionary QueryString { get; set; } - - public IList Cookies { get; set; } - - public IDictionary Data { get; set; } - - public IDictionary Form { get; set; } - - public string RawData { get; set; } - - public IDictionary Headers { get; set; } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunResponseMessage.cs b/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunResponseMessage.cs deleted file mode 100644 index 12435559..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Messages/RaygunResponseMessage.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Mindscape.Raygun4Net.Messages -{ - public class RaygunResponseMessage - { - public int StatusCode { get; set; } - - public string StatusDescription { get; set; } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.csproj b/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.csproj new file mode 100644 index 00000000..c76ed172 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.csproj @@ -0,0 +1,22 @@ + + + netstandard1.6;netstandard2.0 + false + + + Raygun + .NetStandard library for targeting ASP.Net Core applications + Mindscape.Raygun4Net.AspNetCore + 6.0.0 + false + https://github.com/MindscapeHQ/raygun4net/blob/master/LICENSE + https://github.com/MindscapeHQ/raygun4net + https://app.raygun.com/Content/Images/nuget-icon.png + + + + + + + + \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.xproj b/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.xproj deleted file mode 100644 index a963ca4f..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/Mindscape.Raygun4Net.AspNetCore.xproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 30672b20-e007-4fdf-81a3-bcf60ef023c2 - Mindscape.Raygun4Net - .\obj - .\bin\ - - - 2.0 - - - \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyInfo.cs b/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyInfo.cs index 07baaf6d..61fc996d 100644 --- a/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyInfo.cs +++ b/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyInfo.cs @@ -6,11 +6,11 @@ // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Raygun4Net.AspNetCore")] -[assembly: AssemblyDescription("Raygun provider for .NET Core projects")] +[assembly: AssemblyDescription("Raygun provider for ASP.NET Core projects")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Raygun")] [assembly: AssemblyProduct("Raygun4Net")] -[assembly: AssemblyCopyright("Copyright © Raygun 2016-2017")] +[assembly: AssemblyCopyright("Copyright © Raygun 2016-2018")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyVersionInfo.cs b/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyVersionInfo.cs index 04ab9b59..6f61c6c8 100644 --- a/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyVersionInfo.cs +++ b/Mindscape.Raygun4Net.AspNetCore/Properties/AssemblyVersionInfo.cs @@ -12,5 +12,5 @@ // 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("5.5.0.0")] -[assembly: AssemblyFileVersion("5.5.0.0")] +[assembly: AssemblyVersion("6.0.0")] +[assembly: AssemblyFileVersion("6.0.0")] diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunAspNetMiddleware.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunAspNetMiddleware.cs index c8efc719..069e85f4 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunAspNetMiddleware.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunAspNetMiddleware.cs @@ -1,16 +1,16 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using System; +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; using System.Net; using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Options; using Microsoft.Extensions.DependencyInjection; -using System.IO; -using System.Globalization; -using System.Diagnostics; +using Microsoft.Extensions.Options; -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { public class RaygunAspNetMiddleware { @@ -92,14 +92,14 @@ public async Task Invoke(HttpContext httpContext) } } - public static class IApplicationBuilderExtensions + public static class ApplicationBuilderExtensions { public static IApplicationBuilder UseRaygun(this IApplicationBuilder app) { return app.UseMiddleware(); } - public static IServiceCollection AddRaygun(this IServiceCollection services, IConfigurationRoot configuration) + public static IServiceCollection AddRaygun(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection("RaygunSettings")); diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunClient.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunClient.cs index 3d5df2bf..d1fd48cb 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunClient.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunClient.cs @@ -1,60 +1,30 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; -using System.Net.Http; -using System.Reflection; -using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; -using Mindscape.Raygun4Net.Builders; -using Mindscape.Raygun4Net.Messages; +using Mindscape.Raygun4Net.AspNetCore.Builders; -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { - public class RaygunClient + public class RaygunClient : RaygunClientBase { - private readonly string _apiKey; protected readonly RaygunRequestMessageOptions _requestMessageOptions = new RaygunRequestMessageOptions(); - private readonly List _wrapperExceptions = new List(); - + private readonly ThreadLocal _currentHttpContext = new ThreadLocal(() => null); private readonly ThreadLocal _currentRequestMessage = new ThreadLocal(() => null); private readonly ThreadLocal _currentResponseMessage = new ThreadLocal(() => null); - private readonly RaygunSettings _settings; - - - protected internal const string SentKey = "AlreadySentByRaygun"; - - /// - /// Gets or sets the user identity string. - /// - public virtual string User { get; set; } - - /// - /// Gets or sets information about the user including the identity string. - /// - public virtual RaygunIdentifierMessage UserInfo { get; set; } - - /// - /// Gets or sets a custom application version identifier for all error messages sent to the Raygun endpoint. - /// - public string ApplicationVersion { get; set; } - + public RaygunClient(string apiKey) : this(new RaygunSettings {ApiKey = apiKey}) { } public RaygunClient(RaygunSettings settings, HttpContext context = null) + : base(settings) { - _settings = settings; - _apiKey = settings.ApiKey; - - _wrapperExceptions.Add(typeof(TargetInvocationException)); - if (settings.IgnoreFormFieldNames != null) { var ignoredNames = settings.IgnoreFormFieldNames; @@ -87,129 +57,9 @@ public RaygunClient(RaygunSettings settings, HttpContext context = null) } } - /// - /// Adds a list of outer exceptions that will be stripped, leaving only the valuable inner exception. - /// This can be used when a wrapper exception, e.g. TargetInvocationException or HttpUnhandledException, - /// contains the actual exception as the InnerException. The message and stack trace of the inner exception will then - /// be used by Raygun for grouping and display. The above two do not need to be added manually, - /// but if you have other wrapper exceptions that you want stripped you can pass them in here. - /// - /// Exception types that you want removed and replaced with their inner exception. - public void AddWrapperExceptions(params Type[] wrapperExceptions) - { - foreach (Type wrapper in wrapperExceptions) - { - if (!_wrapperExceptions.Contains(wrapper)) - { - _wrapperExceptions.Add(wrapper); - } - } - } - - /// - /// Specifies types of wrapper exceptions that Raygun should send rather than stripping out and sending the inner exception. - /// This can be used to remove the default wrapper exceptions (TargetInvocationException and HttpUnhandledException). - /// - /// Exception types that should no longer be stripped away. - public void RemoveWrapperExceptions(params Type[] wrapperExceptions) + RaygunSettings GetSettings() { - foreach (Type wrapper in wrapperExceptions) - { - _wrapperExceptions.Remove(wrapper); - } - } - - protected virtual bool CanSend(Exception exception) - { - return exception == null || exception.Data == null || !exception.Data.Contains(SentKey) || false.Equals(exception.Data[SentKey]); - } - - protected void FlagAsSent(Exception exception) - { - if (exception != null && exception.Data != null) - { - try - { - Type[] genericTypes = exception.Data.GetType().GetTypeInfo().GenericTypeArguments; - if (genericTypes.Length == 0 || genericTypes[0].IsAssignableFrom(typeof(string))) - { - exception.Data[SentKey] = true; - } - } - catch (Exception ex) - { - Debug.WriteLine(String.Format("Failed to flag exception as sent: {0}", ex.Message)); - } - } - } - - /// - /// Raised just before a message is sent. This can be used to make final adjustments to the , or to cancel the send. - /// - public event EventHandler SendingMessage; - - private bool _handlingRecursiveErrorSending; - - // Returns true if the message can be sent, false if the sending is canceled. - protected bool OnSendingMessage(RaygunMessage raygunMessage) - { - bool result = true; - - if (!_handlingRecursiveErrorSending) - { - EventHandler handler = SendingMessage; - if (handler != null) - { - RaygunSendingMessageEventArgs args = new RaygunSendingMessageEventArgs(raygunMessage); - try - { - handler(this, args); - } - catch (Exception e) - { - // Catch and send exceptions that occur in the SendingMessage event handler. - // Set the _handlingRecursiveErrorSending flag to prevent infinite errors. - _handlingRecursiveErrorSending = true; - Send(e); - _handlingRecursiveErrorSending = false; - } - result = !args.Cancel; - } - } - - return result; - } - - - /// - /// Raised before a message is sent. This can be used to add a custom grouping key to a RaygunMessage before sending it to the Raygun service. - /// - public event EventHandler CustomGroupingKey; - - private bool _handlingRecursiveGrouping; - protected async Task OnCustomGroupingKey(Exception exception, RaygunMessage message) - { - string result = null; - if (!_handlingRecursiveGrouping) - { - var handler = CustomGroupingKey; - if (handler != null) - { - var args = new RaygunCustomGroupingKeyEventArgs(exception, message); - try - { - handler(this, args); - } - catch (Exception e) - { - _handlingRecursiveGrouping = true; - await SendAsync(e, null, null, null); - _handlingRecursiveGrouping = false; - } - result = args.CustomGroupingKey; - } - } - return result; + return (RaygunSettings) _settings; } /// @@ -268,108 +118,23 @@ public bool IsRawDataIgnored _requestMessageOptions.IsRawDataIgnored = value; } } - protected bool ValidateApiKey() - { - if (string.IsNullOrEmpty(_apiKey)) - { - Debug.WriteLine("ApiKey has not been provided, exception will not be logged"); - return false; - } - return true; - } - protected bool CanSend(RaygunMessage message) + + protected override bool CanSend(RaygunMessage message) { if (message != null && message.Details != null && message.Details.Response != null) { - return !_settings.ExcludedStatusCodes.Contains(message.Details.Response.StatusCode); + return !GetSettings().ExcludedStatusCodes.Contains(message.Details.Response.StatusCode); } return true; } - /// - /// Transmits an exception to Raygun synchronously. - /// - /// The exception to deliver. - public void Send(Exception exception) - { - Send(exception, null, null); - } - - /// - /// Transmits an exception to Raygun synchronously specifying a list of string tags associated - /// with the message for identification. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - public void Send(Exception exception, IList tags) - { - Send(exception, tags, null); - } - - /// - /// Transmits an exception to Raygun synchronously specifying a list of string tags associated - /// with the message for identification, as well as sending a key-value collection of custom data. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - /// A key-value collection of custom data that will be added to the payload. - public void Send(Exception exception, IList tags, IDictionary userCustomData) - { - Send(exception, tags, userCustomData, null); - } - - /// - /// Transmits an exception to Raygun synchronously specifying a list of string tags associated - /// with the message for identification, as well as sending a key-value collection of custom data. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - /// A key-value collection of custom data that will be added to the payload. - /// The current web HttpContext - public void Send(Exception exception, IList tags, IDictionary userCustomData, HttpContext context) - { - SendAsync(exception, tags, userCustomData, context).Wait(); - } - - private async Task SendAsync(Exception exception, IList tags, IDictionary userCustomData, HttpContext context) - { - if (CanSend(exception)) - { - _currentHttpContext.Value = context; - _currentRequestMessage.Value = await BuildRequestMessage(); - _currentResponseMessage.Value = BuildResponseMessage(); - - await StripAndSend(exception, tags, userCustomData); - FlagAsSent(exception); - } - } - - /// - /// Asynchronously transmits a message to Raygun. - /// - /// The exception to deliver. - public Task SendInBackground(Exception exception) - { - return SendInBackground(exception, null, null); - } - - /// - /// Asynchronously transmits an exception to Raygun. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - public Task SendInBackground(Exception exception, IList tags) - { - return SendInBackground(exception, tags, null); - } - /// /// Asynchronously transmits an exception to Raygun. /// /// The exception to deliver. /// A list of strings associated with the message. /// A key-value collection of custom data that will be added to the payload. - public async Task SendInBackground(Exception exception, IList tags, IDictionary userCustomData) + public override async Task SendInBackground(Exception exception, IList tags, IDictionary userCustomData) { if (CanSend(exception)) { @@ -389,21 +154,6 @@ public async Task SendInBackground(Exception exception, IList tags, IDic } } - /// - /// Asynchronously transmits a message to Raygun. - /// - /// The RaygunMessage to send. This needs its OccurredOn property - /// set to a valid DateTime and as much of the Details property as is available. - public Task SendInBackground(RaygunMessage raygunMessage) - { - return Task.Run(() => Send(raygunMessage)); - } - - internal void FlagExceptionAsSent(Exception exception) - { - FlagAsSent(exception); - } - private async Task BuildRequestMessage() { var message = _currentHttpContext.Value != null ? await RaygunAspNetCoreRequestMessageBuilder.Build(_currentHttpContext.Value, _requestMessageOptions) : null; @@ -424,9 +174,9 @@ public RaygunClient SetCurrentContext(HttpContext request) return this; } - protected async Task BuildMessage(Exception exception, IList tags, IDictionary userCustomData) + protected override async Task BuildMessage(Exception exception, IList tags, IDictionary userCustomData) { - var message = RaygunAspNetCoreMessageBuilder.New(_settings) + var message = RaygunMessageBuilder.New(GetSettings()) .SetResponseDetails(_currentResponseMessage.Value) .SetRequestDetails(_currentRequestMessage.Value) .SetEnvironmentDetails() @@ -447,90 +197,6 @@ protected async Task BuildMessage(Exception exception, IList tags, IDictionary userCustomData) - { - foreach (Exception e in StripWrapperExceptions(exception)) - { - await Send(await BuildMessage(e, tags, userCustomData)); - } - } - - protected IEnumerable StripWrapperExceptions(Exception exception) - { - if (exception != null && _wrapperExceptions.Any(wrapperException => exception.GetType() == wrapperException && exception.InnerException != null)) - { - AggregateException aggregate = exception as AggregateException; - if (aggregate != null) - { - foreach (Exception e in aggregate.InnerExceptions) - { - foreach (Exception ex in StripWrapperExceptions(e)) - { - yield return ex; - } - } - } - else - { - foreach (Exception e in StripWrapperExceptions(exception.InnerException)) - { - yield return e; - } - } - } - else - { - yield return exception; - } - } - - /// - /// Posts a RaygunMessage to the Raygun api endpoint. - /// - /// The RaygunMessage to send. This needs its OccurredOn property - /// set to a valid DateTime and as much of the Details property as is available. - public async Task Send(RaygunMessage raygunMessage) - { - if (ValidateApiKey()) - { - bool canSend = OnSendingMessage(raygunMessage) && CanSend(raygunMessage); - if (canSend) - { - using (var client = new HttpClient()) - { - HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, _settings.ApiEndpoint); - - requestMessage.Headers.Add("X-ApiKey", _apiKey); - - try - { - var message = SimpleJson.SerializeObject(raygunMessage); - requestMessage.Content = new StringContent(message, Encoding.UTF8, "application/json"); - var result = await client.SendAsync(requestMessage); - if(!result.IsSuccessStatusCode) - { - Debug.WriteLine($"Error Logging Exception to Raygun {result.ReasonPhrase}"); - - if (_settings.ThrowOnError) - { - throw new Exception("Could not log to Raygun"); - } - } - } - catch (Exception ex) - { - Debug.WriteLine(string.Format("Error Logging Exception to Raygun {0}", ex.Message)); - - if (_settings.ThrowOnError) - { - throw; - } - } - } - } - } - } } } diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunClientProvider.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunClientProvider.cs index 0bcbd068..6d2016fb 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunClientProvider.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunClientProvider.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Http; -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { public interface IRaygunAspNetCoreClientProvider { diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunCustomGroupingKeyEventArgs.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunCustomGroupingKeyEventArgs.cs deleted file mode 100644 index aed6bb7c..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunCustomGroupingKeyEventArgs.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using Mindscape.Raygun4Net.Messages; - -namespace Mindscape.Raygun4Net -{ - /// - /// Can be used to create a custom grouping key for exceptions - /// - public class RaygunCustomGroupingKeyEventArgs : EventArgs - { - public RaygunCustomGroupingKeyEventArgs(Exception exception, RaygunMessage message) - { - Exception = exception; - Message = message; - } - - public Exception Exception { get; private set; } - public RaygunMessage Message { get; private set; } - - public string CustomGroupingKey { get; set; } - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunMiddlewareSettings.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunMiddlewareSettings.cs index dfa6d5b6..3b0ed08d 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunMiddlewareSettings.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunMiddlewareSettings.cs @@ -1,4 +1,4 @@ -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { public class RaygunMiddlewareSettings { diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunRequestMessageOptions.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunRequestMessageOptions.cs index 207740a2..43446c2b 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunRequestMessageOptions.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunRequestMessageOptions.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { public class RaygunRequestMessageOptions { diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunSendingMessageEventArgs.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunSendingMessageEventArgs.cs deleted file mode 100644 index f28e83e6..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunSendingMessageEventArgs.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.ComponentModel; -using Mindscape.Raygun4Net.Messages; - -namespace Mindscape.Raygun4Net -{ - /// - /// Can be used to modify the message before sending, or to cancel the send operation. - /// - public class RaygunSendingMessageEventArgs : CancelEventArgs - { - public RaygunSendingMessageEventArgs(RaygunMessage message) - { - Message = message; - } - - public RaygunMessage Message { get; private set; } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/RaygunSettings.cs b/Mindscape.Raygun4Net.AspNetCore/RaygunSettings.cs index 7866ba44..a0013135 100644 --- a/Mindscape.Raygun4Net.AspNetCore/RaygunSettings.cs +++ b/Mindscape.Raygun4Net.AspNetCore/RaygunSettings.cs @@ -1,24 +1,9 @@ -using System; - -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net.AspNetCore { - public class RaygunSettings + public class RaygunSettings : RaygunSettingsBase { - private const string DefaultApiEndPoint = "https://api.raygun.com/entries"; - - public RaygunSettings() - { - ApiEndpoint = new Uri(DefaultApiEndPoint); - } - - public string ApiKey { get; set; } - - public Uri ApiEndpoint { get; set; } - public bool MediumTrust { get; set; } - public bool ThrowOnError { get; set; } - public int[] ExcludedStatusCodes { get; set; } public bool ExcludeErrorsFromLocal { get; set; } @@ -32,8 +17,6 @@ public RaygunSettings() public string[] IgnoreServerVariableNames { get; set; } public bool IsRawDataIgnored { get; set; } - - public string ApplicationVersion { get; set; } public bool ReplaceUnseekableRequestStreams { get; set; } } diff --git a/Mindscape.Raygun4Net.AspNetCore/SimpleJson.cs b/Mindscape.Raygun4Net.AspNetCore/SimpleJson.cs deleted file mode 100644 index d7cea332..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/SimpleJson.cs +++ /dev/null @@ -1,2225 +0,0 @@ -//----------------------------------------------------------------------- -// -// Copyright (c) 2011, The Outercurve Foundation. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.opensource.org/licenses/mit-license.php -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me) -// https://github.com/facebook-csharp-sdk/simple-json -//----------------------------------------------------------------------- - -// VERSION: 0.38.0 - -// NOTE: uncomment the following line to make SimpleJson class internal. -//#define SIMPLE_JSON_INTERNAL - -// NOTE: uncomment the following line to make JsonArray and JsonObject class internal. -//#define SIMPLE_JSON_OBJARRAYINTERNAL - -// NOTE: uncomment the following line to enable dynamic support. -//#define SIMPLE_JSON_DYNAMIC - -// NOTE: uncomment the following line to enable DataContract support. -//#define SIMPLE_JSON_DATACONTRACT - -// NOTE: uncomment the following line to enable IReadOnlyCollection and IReadOnlyList support. -//#define SIMPLE_JSON_READONLY_COLLECTIONS - -// NOTE: uncomment the following line to disable linq expressions/compiled lambda (better performance) instead of method.invoke(). -// define if you are using .net framework <= 3.0 or < WP7.5 -//#define SIMPLE_JSON_NO_LINQ_EXPRESSION - -// NOTE: uncomment the following line if you are compiling under Window Metro style application/library. -// usually already defined in properties -//#define NETFX_CORE; - -// If you are targetting WinStore, WP8, NET4.5+ PCL, or .NET Core make sure to #define SIMPLE_JSON_TYPEINFO; - -#define SIMPLE_JSON_TYPEINFO - -// original json parsing code from http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html - -#if NETFX_CORE -#define SIMPLE_JSON_TYPEINFO -#endif - -using System; -using System.CodeDom.Compiler; -using System.Collections; -using System.Collections.Generic; -#if !SIMPLE_JSON_NO_LINQ_EXPRESSION -using System.Linq.Expressions; -#endif -using System.ComponentModel; -using System.Diagnostics.CodeAnalysis; -#if SIMPLE_JSON_DYNAMIC -using System.Dynamic; -#endif -using System.Globalization; -using System.Reflection; -using System.Runtime.Serialization; -using System.Text; -using Mindscape.Raygun4Net.Reflection; - -// ReSharper disable LoopCanBeConvertedToQuery -// ReSharper disable RedundantExplicitArrayCreation -// ReSharper disable SuggestUseVarKeywordEvident -namespace Mindscape.Raygun4Net -{ - /// - /// Represents the json array. - /// - [GeneratedCode("simple-json", "1.0.0")] - [EditorBrowsable(EditorBrowsableState.Never)] - [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] -#if SIMPLE_JSON_OBJARRAYINTERNAL - internal -#else - public -#endif - class JsonArray : List - { - /// - /// Initializes a new instance of the class. - /// - public JsonArray() { } - - /// - /// Initializes a new instance of the class. - /// - /// The capacity of the json array. - public JsonArray(int capacity) : base(capacity) { } - - /// - /// The json representation of the array. - /// - /// The json representation of the array. - public override string ToString() - { - return SimpleJson.SerializeObject(this) ?? string.Empty; - } - } - - /// - /// Represents the json object. - /// - [GeneratedCode("simple-json", "1.0.0")] - [EditorBrowsable(EditorBrowsableState.Never)] - [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] -#if SIMPLE_JSON_OBJARRAYINTERNAL - internal -#else - public -#endif - class JsonObject : -#if SIMPLE_JSON_DYNAMIC - DynamicObject, -#endif - IDictionary - { - /// - /// The internal member dictionary. - /// - private readonly Dictionary _members; - - /// - /// Initializes a new instance of . - /// - public JsonObject() - { - _members = new Dictionary(); - } - - /// - /// Initializes a new instance of . - /// - /// The implementation to use when comparing keys, or null to use the default for the type of the key. - public JsonObject(IEqualityComparer comparer) - { - _members = new Dictionary(comparer); - } - - /// - /// Gets the at the specified index. - /// - /// - public object this[int index] - { - get { return GetAtIndex(_members, index); } - } - - internal static object GetAtIndex(IDictionary obj, int index) - { - if (obj == null) - throw new ArgumentNullException("obj"); - if (index >= obj.Count) - throw new ArgumentOutOfRangeException("index"); - int i = 0; - foreach (KeyValuePair o in obj) - if (i++ == index) return o.Value; - return null; - } - - /// - /// Adds the specified key. - /// - /// The key. - /// The value. - public void Add(string key, object value) - { - _members.Add(key, value); - } - - /// - /// Determines whether the specified key contains key. - /// - /// The key. - /// - /// true if the specified key contains key; otherwise, false. - /// - public bool ContainsKey(string key) - { - return _members.ContainsKey(key); - } - - /// - /// Gets the keys. - /// - /// The keys. - public ICollection Keys - { - get { return _members.Keys; } - } - - /// - /// Removes the specified key. - /// - /// The key. - /// - public bool Remove(string key) - { - return _members.Remove(key); - } - - /// - /// Tries the get value. - /// - /// The key. - /// The value. - /// - public bool TryGetValue(string key, out object value) - { - return _members.TryGetValue(key, out value); - } - - /// - /// Gets the values. - /// - /// The values. - public ICollection Values - { - get { return _members.Values; } - } - - /// - /// Gets or sets the with the specified key. - /// - /// - public object this[string key] - { - get { return _members[key]; } - set { _members[key] = value; } - } - - /// - /// Adds the specified item. - /// - /// The item. - public void Add(KeyValuePair item) - { - _members.Add(item.Key, item.Value); - } - - /// - /// Clears this instance. - /// - public void Clear() - { - _members.Clear(); - } - - /// - /// Determines whether [contains] [the specified item]. - /// - /// The item. - /// - /// true if [contains] [the specified item]; otherwise, false. - /// - public bool Contains(KeyValuePair item) - { - return _members.ContainsKey(item.Key) && _members[item.Key] == item.Value; - } - - /// - /// Copies to. - /// - /// The array. - /// Index of the array. - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - if (array == null) throw new ArgumentNullException("array"); - int num = Count; - foreach (KeyValuePair kvp in this) - { - array[arrayIndex++] = kvp; - if (--num <= 0) - return; - } - } - - /// - /// Gets the count. - /// - /// The count. - public int Count - { - get { return _members.Count; } - } - - /// - /// Gets a value indicating whether this instance is read only. - /// - /// - /// true if this instance is read only; otherwise, false. - /// - public bool IsReadOnly - { - get { return false; } - } - - /// - /// Removes the specified item. - /// - /// The item. - /// - public bool Remove(KeyValuePair item) - { - return _members.Remove(item.Key); - } - - /// - /// Gets the enumerator. - /// - /// - public IEnumerator> GetEnumerator() - { - return _members.GetEnumerator(); - } - - /// - /// Returns an enumerator that iterates through a collection. - /// - /// - /// An object that can be used to iterate through the collection. - /// - IEnumerator IEnumerable.GetEnumerator() - { - return _members.GetEnumerator(); - } - - /// - /// Returns a json that represents the current . - /// - /// - /// A json that represents the current . - /// - public override string ToString() - { - return SimpleJson.SerializeObject(this); - } - -#if SIMPLE_JSON_DYNAMIC - /// - /// Provides implementation for type conversion operations. Classes derived from the class can override this method to specify dynamic behavior for operations that convert an object from one type to another. - /// - /// Provides information about the conversion operation. The binder.Type property provides the type to which the object must be converted. For example, for the statement (String)sampleObject in C# (CType(sampleObject, Type) in Visual Basic), where sampleObject is an instance of the class derived from the class, binder.Type returns the type. The binder.Explicit property provides information about the kind of conversion that occurs. It returns true for explicit conversion and false for implicit conversion. - /// The result of the type conversion operation. - /// - /// Alwasy returns true. - /// - public override bool TryConvert(ConvertBinder binder, out object result) - { - // - if (binder == null) - throw new ArgumentNullException("binder"); - // - Type targetType = binder.Type; - - if ((targetType == typeof(IEnumerable)) || - (targetType == typeof(IEnumerable>)) || - (targetType == typeof(IDictionary)) || - (targetType == typeof(IDictionary))) - { - result = this; - return true; - } - - return base.TryConvert(binder, out result); - } - - /// - /// Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. - /// - /// Provides information about the deletion. - /// - /// Alwasy returns true. - /// - public override bool TryDeleteMember(DeleteMemberBinder binder) - { - // - if (binder == null) - throw new ArgumentNullException("binder"); - // - return _members.Remove(binder.Name); - } - - /// - /// Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. - /// - /// Provides information about the operation. - /// The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, is equal to 3. - /// The result of the index operation. - /// - /// Alwasy returns true. - /// - public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) - { - if (indexes == null) throw new ArgumentNullException("indexes"); - if (indexes.Length == 1) - { - result = ((IDictionary)this)[(string)indexes[0]]; - return true; - } - result = null; - return true; - } - - /// - /// Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. - /// - /// Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. - /// The result of the get operation. For example, if the method is called for a property, you can assign the property value to . - /// - /// Alwasy returns true. - /// - public override bool TryGetMember(GetMemberBinder binder, out object result) - { - object value; - if (_members.TryGetValue(binder.Name, out value)) - { - result = value; - return true; - } - result = null; - return true; - } - - /// - /// Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. - /// - /// Provides information about the operation. - /// The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 3. - /// The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. - /// - /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. - /// - public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value) - { - if (indexes == null) throw new ArgumentNullException("indexes"); - if (indexes.Length == 1) - { - ((IDictionary)this)[(string)indexes[0]] = value; - return true; - } - return base.TrySetIndex(binder, indexes, value); - } - - /// - /// Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. - /// - /// Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. - /// The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". - /// - /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) - /// - public override bool TrySetMember(SetMemberBinder binder, object value) - { - // - if (binder == null) - throw new ArgumentNullException("binder"); - // - _members[binder.Name] = value; - return true; - } - - /// - /// Returns the enumeration of all dynamic member names. - /// - /// - /// A sequence that contains dynamic member names. - /// - public override IEnumerable GetDynamicMemberNames() - { - foreach (var key in Keys) - yield return key; - } -#endif - } - - public class JsonSerializationException : Exception - { - public JsonSerializationException(string message) : base(message) - { - } - } -} - -namespace Mindscape.Raygun4Net -{ - /// - /// This class encodes and decodes JSON strings. - /// Spec. details, see http://www.json.org/ - /// - /// JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>). - /// All numbers are parsed to doubles. - /// - [GeneratedCode("simple-json", "1.0.0")] -#if SIMPLE_JSON_INTERNAL - internal -#else - public -#endif - static class SimpleJson - { - private const int TOKEN_NONE = 0; - private const int TOKEN_CURLY_OPEN = 1; - private const int TOKEN_CURLY_CLOSE = 2; - private const int TOKEN_SQUARED_OPEN = 3; - private const int TOKEN_SQUARED_CLOSE = 4; - private const int TOKEN_COLON = 5; - private const int TOKEN_COMMA = 6; - private const int TOKEN_STRING = 7; - private const int TOKEN_NUMBER = 8; - private const int TOKEN_TRUE = 9; - private const int TOKEN_FALSE = 10; - private const int TOKEN_NULL = 11; - private const int BUILDER_CAPACITY = 2000; - - private static readonly char[] EscapeTable; - private static readonly char[] EscapeCharacters = new char[] { '"', '\\', '\b', '\f', '\n', '\r', '\t' }; - private static readonly string EscapeCharactersString = new string(EscapeCharacters); - - public const string CYCLIC_MESSAGE = "[Circular reference detected, object not serialized]"; - - static SimpleJson() - { - EscapeTable = new char[93]; - EscapeTable['"'] = '"'; - EscapeTable['\\'] = '\\'; - EscapeTable['\b'] = 'b'; - EscapeTable['\f'] = 'f'; - EscapeTable['\n'] = 'n'; - EscapeTable['\r'] = 'r'; - EscapeTable['\t'] = 't'; - } - - /// - /// Parses the string json into a value - /// - /// A JSON string. - /// An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false - public static object DeserializeObject(string json) - { - object obj; - if (TryDeserializeObject(json, out obj)) - return obj; - throw new JsonSerializationException("Invalid JSON string"); - } - - /// - /// Try parsing the json string into a value. - /// - /// - /// A JSON string. - /// - /// - /// The object. - /// - /// - /// Returns true if successfull otherwise false. - /// - [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] - public static bool TryDeserializeObject(string json, out object obj) - { - bool success = true; - if (json != null) - { - char[] charArray = json.ToCharArray(); - int index = 0; - obj = ParseValue(charArray, ref index, ref success); - } - else - obj = null; - - return success; - } - - public static object DeserializeObject(string json, Type type, IJsonSerializerStrategy jsonSerializerStrategy) - { - object jsonObject = DeserializeObject(json); - return type == null || jsonObject != null && ReflectionUtils.IsAssignableFrom(jsonObject.GetType(), type) - ? jsonObject - : (jsonSerializerStrategy ?? CurrentJsonSerializerStrategy).DeserializeObject(jsonObject, type); - } - - public static object DeserializeObject(string json, Type type) - { - return DeserializeObject(json, type, null); - } - - public static T DeserializeObject(string json, IJsonSerializerStrategy jsonSerializerStrategy) - { - return (T)DeserializeObject(json, typeof(T), jsonSerializerStrategy); - } - - public static T DeserializeObject(string json) - { - return (T)DeserializeObject(json, typeof(T), null); - } - - /// - /// Converts a IDictionary<string,object> / IList<object> object into a JSON string - /// - /// A IDictionary<string,object> / IList<object> - /// Serializer strategy to use - /// A JSON encoded string, or null if object 'json' is not serializable - public static string SerializeObject(object json, IJsonSerializerStrategy jsonSerializerStrategy) - { - StringBuilder builder = new StringBuilder(BUILDER_CAPACITY); - bool success = SerializeValue(jsonSerializerStrategy, json, builder); - return (success ? builder.ToString() : null); - } - - public static string SerializeObject(object json) - { - return SerializeObject(json, CurrentJsonSerializerStrategy); - } - - public static string EscapeToJavascriptString(string jsonString) - { - if (string.IsNullOrEmpty(jsonString)) - return jsonString; - - StringBuilder sb = new StringBuilder(); - char c; - - for (int i = 0; i < jsonString.Length; ) - { - c = jsonString[i++]; - - if (c == '\\') - { - int remainingLength = jsonString.Length - i; - if (remainingLength >= 2) - { - char lookahead = jsonString[i]; - if (lookahead == '\\') - { - sb.Append('\\'); - ++i; - } - else if (lookahead == '"') - { - sb.Append("\""); - ++i; - } - else if (lookahead == 't') - { - sb.Append('\t'); - ++i; - } - else if (lookahead == 'b') - { - sb.Append('\b'); - ++i; - } - else if (lookahead == 'n') - { - sb.Append('\n'); - ++i; - } - else if (lookahead == 'r') - { - sb.Append('\r'); - ++i; - } - } - } - else - { - sb.Append(c); - } - } - return sb.ToString(); - } - - static IDictionary ParseObject(char[] json, ref int index, ref bool success) - { - IDictionary table = new JsonObject(); - int token; - - // { - NextToken(json, ref index); - - bool done = false; - while (!done) - { - token = LookAhead(json, index); - if (token == TOKEN_NONE) - { - success = false; - return null; - } - else if (token == TOKEN_COMMA) - NextToken(json, ref index); - else if (token == TOKEN_CURLY_CLOSE) - { - NextToken(json, ref index); - return table; - } - else - { - // name - string name = ParseString(json, ref index, ref success); - if (!success) - { - success = false; - return null; - } - // : - token = NextToken(json, ref index); - if (token != TOKEN_COLON) - { - success = false; - return null; - } - // value - object value = ParseValue(json, ref index, ref success); - if (!success) - { - success = false; - return null; - } - table[name] = value; - } - } - return table; - } - - static JsonArray ParseArray(char[] json, ref int index, ref bool success) - { - JsonArray array = new JsonArray(); - - // [ - NextToken(json, ref index); - - bool done = false; - while (!done) - { - int token = LookAhead(json, index); - if (token == TOKEN_NONE) - { - success = false; - return null; - } - else if (token == TOKEN_COMMA) - NextToken(json, ref index); - else if (token == TOKEN_SQUARED_CLOSE) - { - NextToken(json, ref index); - break; - } - else - { - object value = ParseValue(json, ref index, ref success); - if (!success) - return null; - array.Add(value); - } - } - return array; - } - - static object ParseValue(char[] json, ref int index, ref bool success) - { - switch (LookAhead(json, index)) - { - case TOKEN_STRING: - return ParseString(json, ref index, ref success); - case TOKEN_NUMBER: - return ParseNumber(json, ref index, ref success); - case TOKEN_CURLY_OPEN: - return ParseObject(json, ref index, ref success); - case TOKEN_SQUARED_OPEN: - return ParseArray(json, ref index, ref success); - case TOKEN_TRUE: - NextToken(json, ref index); - return true; - case TOKEN_FALSE: - NextToken(json, ref index); - return false; - case TOKEN_NULL: - NextToken(json, ref index); - return null; - case TOKEN_NONE: - break; - } - success = false; - return null; - } - - static string ParseString(char[] json, ref int index, ref bool success) - { - StringBuilder s = new StringBuilder(BUILDER_CAPACITY); - char c; - - EatWhitespace(json, ref index); - - // " - c = json[index++]; - bool complete = false; - while (!complete) - { - if (index == json.Length) - break; - - c = json[index++]; - if (c == '"') - { - complete = true; - break; - } - else if (c == '\\') - { - if (index == json.Length) - break; - c = json[index++]; - if (c == '"') - s.Append('"'); - else if (c == '\\') - s.Append('\\'); - else if (c == '/') - s.Append('/'); - else if (c == 'b') - s.Append('\b'); - else if (c == 'f') - s.Append('\f'); - else if (c == 'n') - s.Append('\n'); - else if (c == 'r') - s.Append('\r'); - else if (c == 't') - s.Append('\t'); - else if (c == 'u') - { - int remainingLength = json.Length - index; - if (remainingLength >= 4) - { - // parse the 32 bit hex into an integer codepoint - uint codePoint; - if (!(success = UInt32.TryParse(new string(json, index, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out codePoint))) - return ""; - - // convert the integer codepoint to a unicode char and add to string - if (0xD800 <= codePoint && codePoint <= 0xDBFF) // if high surrogate - { - index += 4; // skip 4 chars - remainingLength = json.Length - index; - if (remainingLength >= 6) - { - uint lowCodePoint; - if (new string(json, index, 2) == "\\u" && UInt32.TryParse(new string(json, index + 2, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out lowCodePoint)) - { - if (0xDC00 <= lowCodePoint && lowCodePoint <= 0xDFFF) // if low surrogate - { - s.Append((char)codePoint); - s.Append((char)lowCodePoint); - index += 6; // skip 6 chars - continue; - } - } - } - success = false; // invalid surrogate pair - return ""; - } - s.Append(ConvertFromUtf32((int)codePoint)); - // skip 4 chars - index += 4; - } - else - break; - } - } - else - s.Append(c); - } - if (!complete) - { - success = false; - return null; - } - return s.ToString(); - } - - private static string ConvertFromUtf32(int utf32) - { - // http://www.java2s.com/Open-Source/CSharp/2.6.4-mono-.net-core/System/System/Char.cs.htm - if (utf32 < 0 || utf32 > 0x10FFFF) - throw new ArgumentOutOfRangeException("utf32", "The argument must be from 0 to 0x10FFFF."); - if (0xD800 <= utf32 && utf32 <= 0xDFFF) - throw new ArgumentOutOfRangeException("utf32", "The argument must not be in surrogate pair range."); - if (utf32 < 0x10000) - return new string((char)utf32, 1); - utf32 -= 0x10000; - return new string(new char[] { (char)((utf32 >> 10) + 0xD800), (char)(utf32 % 0x0400 + 0xDC00) }); - } - - static object ParseNumber(char[] json, ref int index, ref bool success) - { - EatWhitespace(json, ref index); - int lastIndex = GetLastIndexOfNumber(json, index); - int charLength = (lastIndex - index) + 1; - object returnNumber; - string str = new string(json, index, charLength); - if (str.IndexOf(".", StringComparison.OrdinalIgnoreCase) != -1 || str.IndexOf("e", StringComparison.OrdinalIgnoreCase) != -1) - { - double number; - success = double.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number); - returnNumber = number; - } - else - { - long number; - success = long.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number); - returnNumber = number; - } - index = lastIndex + 1; - return returnNumber; - } - - static int GetLastIndexOfNumber(char[] json, int index) - { - int lastIndex; - for (lastIndex = index; lastIndex < json.Length; lastIndex++) - if ("0123456789+-.eE".IndexOf(json[lastIndex]) == -1) break; - return lastIndex - 1; - } - - static void EatWhitespace(char[] json, ref int index) - { - for (; index < json.Length; index++) - if (" \t\n\r\b\f".IndexOf(json[index]) == -1) break; - } - - static int LookAhead(char[] json, int index) - { - int saveIndex = index; - return NextToken(json, ref saveIndex); - } - - [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - static int NextToken(char[] json, ref int index) - { - EatWhitespace(json, ref index); - if (index == json.Length) - return TOKEN_NONE; - char c = json[index]; - index++; - switch (c) - { - case '{': - return TOKEN_CURLY_OPEN; - case '}': - return TOKEN_CURLY_CLOSE; - case '[': - return TOKEN_SQUARED_OPEN; - case ']': - return TOKEN_SQUARED_CLOSE; - case ',': - return TOKEN_COMMA; - case '"': - return TOKEN_STRING; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - return TOKEN_NUMBER; - case ':': - return TOKEN_COLON; - } - index--; - int remainingLength = json.Length - index; - // false - if (remainingLength >= 5) - { - if (json[index] == 'f' && json[index + 1] == 'a' && json[index + 2] == 'l' && json[index + 3] == 's' && json[index + 4] == 'e') - { - index += 5; - return TOKEN_FALSE; - } - } - // true - if (remainingLength >= 4) - { - if (json[index] == 't' && json[index + 1] == 'r' && json[index + 2] == 'u' && json[index + 3] == 'e') - { - index += 4; - return TOKEN_TRUE; - } - } - // null - if (remainingLength >= 4) - { - if (json[index] == 'n' && json[index + 1] == 'u' && json[index + 2] == 'l' && json[index + 3] == 'l') - { - index += 4; - return TOKEN_NULL; - } - } - return TOKEN_NONE; - } - - static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, StringBuilder builder) - { - return SerializeValue(jsonSerializerStrategy, value, builder, new Stack()); - } - - static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, StringBuilder builder, Stack visited) - { - if (value == null) - { - return false; - } - - if (visited.Contains(value)) - { - visited.Pop(); - return SerializeString(CYCLIC_MESSAGE, builder); ; - } - - visited.Push(value); - - bool success = true; - string stringValue = value as string; - if (stringValue != null) - success = SerializeString(stringValue, builder); - else - { - IDictionary dict = value as IDictionary; - if (dict != null) - { - success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, builder, visited); - } - else - { - IDictionary stringObjectDictionary = value as IDictionary; - if (stringObjectDictionary != null) - { - success = SerializeObject(jsonSerializerStrategy, stringObjectDictionary.Keys, stringObjectDictionary.Values, builder, visited); - } - else - { - IDictionary stringDictionary = value as IDictionary; - if (stringDictionary != null) - { - success = SerializeObject(jsonSerializerStrategy, stringDictionary.Keys, stringDictionary.Values, builder, visited); - } - else - { - IEnumerable enumerableValue = value as IEnumerable; - if (enumerableValue != null) - success = SerializeArray(jsonSerializerStrategy, enumerableValue, builder, visited); - else if (IsNumeric (value)) - success = SerializeNumber(value, builder); - else if (value is bool) - builder.Append ((bool)value ? "true" : "false"); - else if (value == null) - builder.Append("null"); - else { - object serializedObject; - success = jsonSerializerStrategy.TrySerializeNonPrimitiveObject(value, out serializedObject); - if (success) - SerializeValue(jsonSerializerStrategy, serializedObject, builder, visited); - } - } - } - } - } - - if (visited.Count > 0) // Just to be safe - { - visited.Pop(); - } - - return success; - } - - static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable keys, IEnumerable values, StringBuilder builder, Stack visited) - { - builder.Append("{"); - IEnumerator ke = keys.GetEnumerator(); - IEnumerator ve = values.GetEnumerator(); - bool first = true; - while (ke.MoveNext() && ve.MoveNext()) - { - object key = ke.Current; - object value = ve.Current; - if (value != null) - { - if (!first) - builder.Append(","); - string stringKey = key as string; - if (stringKey != null) - SerializeString (stringKey, builder); - else if (key != null) - SerializeString (key.ToString(), builder); - else - if (!SerializeValue(jsonSerializerStrategy, value, builder, visited)) return false; - builder.Append(":"); - if (!SerializeValue(jsonSerializerStrategy, value, builder, visited)) - return false; - first = false; - } - } - builder.Append("}"); - return true; - } - - static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable anArray, StringBuilder builder, Stack visited) - { - builder.Append("["); - bool first = true; - foreach (object value in anArray) - { - if (!first) - builder.Append(","); - if (value == null) - builder.Append("null"); - else if (!SerializeValue(jsonSerializerStrategy, value, builder, visited)) - return false; - first = false; - } - builder.Append("]"); - return true; - } - - static bool SerializeString(string aString, StringBuilder builder) - { - // Happy path if there's nothing to be escaped. IndexOfAny is highly optimized (and unmanaged) - // Commented out to handle all control-characters. - /*if (aString.IndexOfAny(EscapeCharacters) == -1) - { - builder.Append('"'); - builder.Append(aString); - builder.Append('"'); - - return true; - }*/ - - builder.Append('"'); - int safeCharacterCount = 0; - char[] charArray = aString.ToCharArray(); - char[] hexSeqBuffer = new char[4]; - for (int i = 0; i < charArray.Length; i++) - { - char c = charArray[i]; - - // Non ascii characters are fine, buffer them up and send them to the builder - // in larger chunks if possible. The escape table is a 1:1 translation table - // with \0 [default(char)] denoting a safe character. - if (c >= EscapeTable.Length || EscapeTable[c] == default(char)) - { - if (char.IsControl(c)) - { - if (safeCharacterCount > 0) - { - builder.Append(charArray, i - safeCharacterCount, safeCharacterCount); - safeCharacterCount = 0; - } - - IntToHex(c, hexSeqBuffer); - builder.Append("\\u"); - builder.Append(hexSeqBuffer); - } - else - { - safeCharacterCount++; - } - } - else - { - if (safeCharacterCount > 0) - { - builder.Append(charArray, i - safeCharacterCount, safeCharacterCount); - safeCharacterCount = 0; - } - - builder.Append('\\'); - builder.Append(EscapeTable[c]); - } - } - - if (safeCharacterCount > 0) - { - builder.Append(charArray, charArray.Length - safeCharacterCount, safeCharacterCount); - } - - builder.Append('"'); - return true; - } - - static void IntToHex(int intValue, char[] hex) - { - for (int i = 0; i < 4; i++) - { - int num = intValue % 16; - if (num < 10) - hex[3 - i] = (char)('0' + num); - else - hex[3 - i] = (char)('A' + (num - 10)); - intValue >>= 4; - } - } - - static bool SerializeNumber(object number, StringBuilder builder) - { - if (number is long) - builder.Append(((long)number).ToString(CultureInfo.InvariantCulture)); - else if (number is ulong) - builder.Append(((ulong)number).ToString(CultureInfo.InvariantCulture)); - else if (number is int) - builder.Append(((int)number).ToString(CultureInfo.InvariantCulture)); - else if (number is uint) - builder.Append(((uint)number).ToString(CultureInfo.InvariantCulture)); - else if (number is decimal) - builder.Append(((decimal)number).ToString(CultureInfo.InvariantCulture)); - else if (number is float) - builder.Append(((float)number).ToString(CultureInfo.InvariantCulture)); - else - builder.Append(Convert.ToDouble(number, CultureInfo.InvariantCulture).ToString("r", CultureInfo.InvariantCulture)); - return true; - } - - /// - /// Determines if a given object is numeric in any way - /// (can be integer, double, null, etc). - /// - static bool IsNumeric(object value) - { - if (value is sbyte) return true; - if (value is byte) return true; - if (value is short) return true; - if (value is ushort) return true; - if (value is int) return true; - if (value is uint) return true; - if (value is long) return true; - if (value is ulong) return true; - if (value is float) return true; - if (value is double) return true; - if (value is decimal) return true; - return false; - } - - private static IJsonSerializerStrategy _currentJsonSerializerStrategy; - public static IJsonSerializerStrategy CurrentJsonSerializerStrategy - { - get - { - return _currentJsonSerializerStrategy ?? - (_currentJsonSerializerStrategy = -#if SIMPLE_JSON_DATACONTRACT - DataContractJsonSerializerStrategy -#else - PocoJsonSerializerStrategy -#endif -); - } - set - { - _currentJsonSerializerStrategy = value; - } - } - - private static PocoJsonSerializerStrategy _pocoJsonSerializerStrategy; - [EditorBrowsable(EditorBrowsableState.Advanced)] - public static PocoJsonSerializerStrategy PocoJsonSerializerStrategy - { - get - { - return _pocoJsonSerializerStrategy ?? (_pocoJsonSerializerStrategy = new PocoJsonSerializerStrategy()); - } - } - -#if SIMPLE_JSON_DATACONTRACT - - private static DataContractJsonSerializerStrategy _dataContractJsonSerializerStrategy; - [System.ComponentModel.EditorBrowsable(EditorBrowsableState.Advanced)] - public static DataContractJsonSerializerStrategy DataContractJsonSerializerStrategy - { - get - { - return _dataContractJsonSerializerStrategy ?? (_dataContractJsonSerializerStrategy = new DataContractJsonSerializerStrategy()); - } - } - -#endif - } - - [GeneratedCode("simple-json", "1.0.0")] -#if SIMPLE_JSON_INTERNAL - internal -#else - public -#endif - interface IJsonSerializerStrategy - { - [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] - bool TrySerializeNonPrimitiveObject(object input, out object output); - object DeserializeObject(object value, Type type); - } - - [GeneratedCode("simple-json", "1.0.0")] -#if SIMPLE_JSON_INTERNAL - internal -#else - public -#endif - class PocoJsonSerializerStrategy : IJsonSerializerStrategy - { - internal IDictionary ConstructorCache; - internal IDictionary> GetCache; - internal IDictionary>> SetCache; - - internal static readonly Type[] EmptyTypes = new Type[0]; - internal static readonly Type[] ArrayConstructorParameterTypes = new Type[] { typeof(int) }; - - private static readonly string[] Iso8601Format = new string[] - { - @"yyyy-MM-dd\THH:mm:ss.FFFFFFF\Z", - @"yyyy-MM-dd\THH:mm:ss\Z", - @"yyyy-MM-dd\THH:mm:ssK" - }; - - public PocoJsonSerializerStrategy() - { - ConstructorCache = new ReflectionUtils.ThreadSafeDictionary(ContructorDelegateFactory); - GetCache = new ReflectionUtils.ThreadSafeDictionary>(GetterValueFactory); - SetCache = new ReflectionUtils.ThreadSafeDictionary>>(SetterValueFactory); - } - - protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName) - { - return clrPropertyName; - } - - internal virtual ReflectionUtils.ConstructorDelegate ContructorDelegateFactory(Type key) - { - return ReflectionUtils.GetContructor(key, key.IsArray ? ArrayConstructorParameterTypes : EmptyTypes); - } - - internal virtual IDictionary GetterValueFactory(Type type) - { - IDictionary result = new Dictionary(); - foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) - { - if (propertyInfo.CanRead) - { - MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo); - if (getMethod.IsStatic || !getMethod.IsPublic) - continue; - result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = ReflectionUtils.GetGetMethod(propertyInfo); - } - } - foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) - { - if (fieldInfo.IsStatic || !fieldInfo.IsPublic) - continue; - result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = ReflectionUtils.GetGetMethod(fieldInfo); - } - return result; - } - - internal virtual IDictionary> SetterValueFactory(Type type) - { - IDictionary> result = new Dictionary>(); - foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) - { - if (propertyInfo.CanWrite) - { - MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo); - if (setMethod.IsStatic || !setMethod.IsPublic) - continue; - result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = new KeyValuePair(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo)); - } - } - foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) - { - if (fieldInfo.IsInitOnly || fieldInfo.IsStatic || !fieldInfo.IsPublic) - continue; - result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = new KeyValuePair(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo)); - } - return result; - } - - public virtual bool TrySerializeNonPrimitiveObject(object input, out object output) - { - return TrySerializeKnownTypes(input, out output) || TrySerializeUnknownTypes(input, out output); - } - - [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - public virtual object DeserializeObject(object value, Type type) - { - if (type == null) throw new ArgumentNullException("type"); - string str = value as string; - - if (type == typeof(Guid) && string.IsNullOrEmpty(str)) - return default(Guid); - - if (value == null) - return null; - - object obj = null; - - if (str != null) - { - if (str.Length != 0) // We know it can't be null now. - { - if (type == typeof(DateTime) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTime))) - return DateTime.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal); - if (type == typeof(DateTimeOffset) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTimeOffset))) - return DateTimeOffset.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal); - if (type == typeof(Guid) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid))) - return new Guid(str); - if (type == typeof(Uri)) - { - bool isValid = Uri.IsWellFormedUriString(str, UriKind.RelativeOrAbsolute); - - Uri result; - if (isValid && Uri.TryCreate(str, UriKind.RelativeOrAbsolute, out result)) - return result; - - return null; - } - - if (type == typeof(string)) - return str; - - return Convert.ChangeType(str, type, CultureInfo.InvariantCulture); - } - else - { - if (type == typeof(Guid)) - obj = default(Guid); - else if (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid)) - obj = null; - else - obj = str; - } - // Empty string case - if (!ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid)) - return str; - } - else if (value is bool) - return value; - - bool valueIsLong = value is long; - bool valueIsDouble = value is double; - if ((valueIsLong && type == typeof(long)) || (valueIsDouble && type == typeof(double))) - return value; - if ((valueIsDouble && type != typeof(double)) || (valueIsLong && type != typeof(long))) - { - obj = type == typeof(int) || type == typeof(long) || type == typeof(double) || type == typeof(float) || type == typeof(bool) || type == typeof(decimal) || type == typeof(byte) || type == typeof(short) - ? Convert.ChangeType(value, type, CultureInfo.InvariantCulture) - : value; - } - else - { - IDictionary objects = value as IDictionary; - if (objects != null) - { - IDictionary jsonObject = objects; - - if (ReflectionUtils.IsTypeDictionary(type)) - { - // if dictionary then - Type[] types = ReflectionUtils.GetGenericTypeArguments(type); - Type keyType = types[0]; - Type valueType = types[1]; - - Type genericType = typeof(Dictionary<,>).MakeGenericType(keyType, valueType); - - IDictionary dict = (IDictionary)ConstructorCache[genericType](); - - foreach (KeyValuePair kvp in jsonObject) - dict.Add(kvp.Key, DeserializeObject(kvp.Value, valueType)); - - obj = dict; - } - else - { - if (type == typeof(object)) - obj = value; - else - { - obj = ConstructorCache[type](); - foreach (KeyValuePair> setter in SetCache[type]) - { - object jsonValue; - if (jsonObject.TryGetValue(setter.Key, out jsonValue)) - { - jsonValue = DeserializeObject(jsonValue, setter.Value.Key); - setter.Value.Value(obj, jsonValue); - } - } - } - } - } - else - { - IList valueAsList = value as IList; - if (valueAsList != null) - { - IList jsonObject = valueAsList; - IList list = null; - - if (type.IsArray) - { - list = (IList)ConstructorCache[type](jsonObject.Count); - int i = 0; - foreach (object o in jsonObject) - list[i++] = DeserializeObject(o, type.GetElementType()); - } - else if (ReflectionUtils.IsTypeGenericeCollectionInterface(type) || ReflectionUtils.IsAssignableFrom(typeof(IList), type)) - { - Type innerType = ReflectionUtils.GetGenericListElementType(type); - list = (IList)(ConstructorCache[type] ?? ConstructorCache[typeof(List<>).MakeGenericType(innerType)])(jsonObject.Count); - foreach (object o in jsonObject) - list.Add(DeserializeObject(o, innerType)); - } - obj = list; - } - } - return obj; - } - if (ReflectionUtils.IsNullableType(type)) - return ReflectionUtils.ToNullableType(obj, type); - return obj; - } - - protected virtual object SerializeEnum(Enum p) - { - return Convert.ToDouble(p, CultureInfo.InvariantCulture); - } - - [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] - protected virtual bool TrySerializeKnownTypes(object input, out object output) - { - bool returnValue = true; - if (input is DateTime) - output = ((DateTime)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture); - else if (input is DateTimeOffset) - output = ((DateTimeOffset)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture); - else if (input is Guid) - output = ((Guid)input).ToString("D"); - else if (input is Uri) - output = input.ToString(); - else - { - Enum inputEnum = input as Enum; - if (inputEnum != null) - output = SerializeEnum(inputEnum); - else - { - returnValue = false; - output = null; - } - } - return returnValue; - } - [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] - protected virtual bool TrySerializeUnknownTypes(object input, out object output) - { - if (input == null) throw new ArgumentNullException("input"); - output = null; - Type type = input.GetType(); - if (type.FullName == null) - return false; - IDictionary obj = new JsonObject(); - IDictionary getters = GetCache[type]; - foreach (KeyValuePair getter in getters) - { - if (getter.Value != null) - obj.Add(MapClrMemberNameToJsonFieldName(getter.Key), getter.Value(input)); - } - output = obj; - return true; - } - } - -#if SIMPLE_JSON_DATACONTRACT - [GeneratedCode("simple-json", "1.0.0")] -#if SIMPLE_JSON_INTERNAL - internal -#else - public -#endif - class DataContractJsonSerializerStrategy : PocoJsonSerializerStrategy - { - public DataContractJsonSerializerStrategy() - { - GetCache = new ReflectionUtils.ThreadSafeDictionary>(GetterValueFactory); - SetCache = new ReflectionUtils.ThreadSafeDictionary>>(SetterValueFactory); - } - - internal override IDictionary GetterValueFactory(Type type) - { - bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null; - if (!hasDataContract) - return base.GetterValueFactory(type); - string jsonKey; - IDictionary result = new Dictionary(); - foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) - { - if (propertyInfo.CanRead) - { - MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo); - if (!getMethod.IsStatic && CanAdd(propertyInfo, out jsonKey)) - result[jsonKey] = ReflectionUtils.GetGetMethod(propertyInfo); - } - } - foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) - { - if (!fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey)) - result[jsonKey] = ReflectionUtils.GetGetMethod(fieldInfo); - } - return result; - } - - internal override IDictionary> SetterValueFactory(Type type) - { - bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null; - if (!hasDataContract) - return base.SetterValueFactory(type); - string jsonKey; - IDictionary> result = new Dictionary>(); - foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) - { - if (propertyInfo.CanWrite) - { - MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo); - if (!setMethod.IsStatic && CanAdd(propertyInfo, out jsonKey)) - result[jsonKey] = new KeyValuePair(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo)); - } - } - foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) - { - if (!fieldInfo.IsInitOnly && !fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey)) - result[jsonKey] = new KeyValuePair(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo)); - } - // todo implement sorting for DATACONTRACT. - return result; - } - - private static bool CanAdd(MemberInfo info, out string jsonKey) - { - jsonKey = null; - if (ReflectionUtils.GetAttribute(info, typeof(IgnoreDataMemberAttribute)) != null) - return false; - DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)ReflectionUtils.GetAttribute(info, typeof(DataMemberAttribute)); - if (dataMemberAttribute == null) - return false; - jsonKey = string.IsNullOrEmpty(dataMemberAttribute.Name) ? info.Name : dataMemberAttribute.Name; - return true; - } - } - -#endif - - namespace Reflection - { - // This class is meant to be copied into other libraries. So we want to exclude it from Code Analysis rules - // that might be in place in the target project. - [GeneratedCode("reflection-utils", "1.0.0")] -#if SIMPLE_JSON_REFLECTION_UTILS_PUBLIC - public -#else - internal -#endif - class ReflectionUtils - { - private static readonly object[] EmptyObjects = new object[] { }; - - public delegate object GetDelegate(object source); - public delegate void SetDelegate(object source, object value); - public delegate object ConstructorDelegate(params object[] args); - - public delegate TValue ThreadSafeDictionaryValueFactory(TKey key); - -#if SIMPLE_JSON_TYPEINFO - public static TypeInfo GetTypeInfo(Type type) - { - return type.GetTypeInfo(); - } -#else - public static Type GetTypeInfo(Type type) - { - return type; - } -#endif - - public static Attribute GetAttribute(MemberInfo info, Type type) - { -#if SIMPLE_JSON_TYPEINFO - if (info == null || type == null || !info.IsDefined(type)) - return null; - return info.GetCustomAttribute(type); -#else - if (info == null || type == null || !Attribute.IsDefined(info, type)) - return null; - return Attribute.GetCustomAttribute(info, type); -#endif - } - - public static Type GetGenericListElementType(Type type) - { - IEnumerable interfaces; -#if SIMPLE_JSON_TYPEINFO - interfaces = type.GetTypeInfo().ImplementedInterfaces; -#else - interfaces = type.GetInterfaces(); -#endif - foreach (Type implementedInterface in interfaces) - { - if (IsTypeGeneric(implementedInterface) && - implementedInterface.GetGenericTypeDefinition() == typeof(IList<>)) - { - return GetGenericTypeArguments(implementedInterface)[0]; - } - } - return GetGenericTypeArguments(type)[0]; - } - - public static Attribute GetAttribute(Type objectType, Type attributeType) - { - -#if SIMPLE_JSON_TYPEINFO - if (objectType == null || attributeType == null || !objectType.GetTypeInfo().IsDefined(attributeType)) - return null; - return objectType.GetTypeInfo().GetCustomAttribute(attributeType); -#else - if (objectType == null || attributeType == null || !Attribute.IsDefined(objectType, attributeType)) - return null; - return Attribute.GetCustomAttribute(objectType, attributeType); -#endif - } - - public static Type[] GetGenericTypeArguments(Type type) - { -#if SIMPLE_JSON_TYPEINFO - return type.GetTypeInfo().GenericTypeArguments; -#else - return type.GetGenericArguments(); -#endif - } - - public static bool IsTypeGeneric(Type type) - { - return GetTypeInfo(type).IsGenericType; - } - - public static bool IsTypeGenericeCollectionInterface(Type type) - { - if (!IsTypeGeneric(type)) - return false; - - Type genericDefinition = type.GetGenericTypeDefinition(); - - return (genericDefinition == typeof(IList<>) - || genericDefinition == typeof(ICollection<>) - || genericDefinition == typeof(IEnumerable<>) -#if SIMPLE_JSON_READONLY_COLLECTIONS - || genericDefinition == typeof(IReadOnlyCollection<>) - || genericDefinition == typeof(IReadOnlyList<>) -#endif -); - } - - public static bool IsAssignableFrom(Type type1, Type type2) - { - return GetTypeInfo(type1).IsAssignableFrom(GetTypeInfo(type2)); - } - - public static bool IsTypeDictionary(Type type) - { -#if SIMPLE_JSON_TYPEINFO - if (typeof(IDictionary<,>).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo())) - return true; -#else - if (typeof(System.Collections.IDictionary).IsAssignableFrom(type)) - return true; -#endif - if (!GetTypeInfo(type).IsGenericType) - return false; - - Type genericDefinition = type.GetGenericTypeDefinition(); - return genericDefinition == typeof(IDictionary<,>); - } - - public static bool IsNullableType(Type type) - { - return GetTypeInfo(type).IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>); - } - - public static object ToNullableType(object obj, Type nullableType) - { - return obj == null ? null : Convert.ChangeType(obj, Nullable.GetUnderlyingType(nullableType), CultureInfo.InvariantCulture); - } - - public static bool IsValueType(Type type) - { - return GetTypeInfo(type).IsValueType; - } - - public static IEnumerable GetConstructors(Type type) - { -#if SIMPLE_JSON_TYPEINFO - return type.GetTypeInfo().DeclaredConstructors; -#else - return type.GetConstructors(); -#endif - } - - public static ConstructorInfo GetConstructorInfo(Type type, params Type[] argsType) - { - IEnumerable constructorInfos = GetConstructors(type); - int i; - bool matches; - foreach (ConstructorInfo constructorInfo in constructorInfos) - { - ParameterInfo[] parameters = constructorInfo.GetParameters(); - if (argsType.Length != parameters.Length) - continue; - - i = 0; - matches = true; - foreach (ParameterInfo parameterInfo in constructorInfo.GetParameters()) - { - if (parameterInfo.ParameterType != argsType[i]) - { - matches = false; - break; - } - } - - if (matches) - return constructorInfo; - } - - return null; - } - - public static IEnumerable GetProperties(Type type) - { -#if SIMPLE_JSON_TYPEINFO - return type.GetRuntimeProperties(); -#else - return type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); -#endif - } - - public static IEnumerable GetFields(Type type) - { -#if SIMPLE_JSON_TYPEINFO - return type.GetRuntimeFields(); -#else - return type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); -#endif - } - - public static MethodInfo GetGetterMethodInfo(PropertyInfo propertyInfo) - { -#if SIMPLE_JSON_TYPEINFO - return propertyInfo.GetMethod; -#else - return propertyInfo.GetGetMethod(true); -#endif - } - - public static MethodInfo GetSetterMethodInfo(PropertyInfo propertyInfo) - { -#if SIMPLE_JSON_TYPEINFO - return propertyInfo.SetMethod; -#else - return propertyInfo.GetSetMethod(true); -#endif - } - - public static ConstructorDelegate GetContructor(ConstructorInfo constructorInfo) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetConstructorByReflection(constructorInfo); -#else - return GetConstructorByExpression(constructorInfo); -#endif - } - - public static ConstructorDelegate GetContructor(Type type, params Type[] argsType) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetConstructorByReflection(type, argsType); -#else - return GetConstructorByExpression(type, argsType); -#endif - } - - public static ConstructorDelegate GetConstructorByReflection(ConstructorInfo constructorInfo) - { - return delegate(object[] args) { return constructorInfo.Invoke(args); }; - } - - public static ConstructorDelegate GetConstructorByReflection(Type type, params Type[] argsType) - { - ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType); - return constructorInfo == null ? null : GetConstructorByReflection(constructorInfo); - } - -#if !SIMPLE_JSON_NO_LINQ_EXPRESSION - - public static ConstructorDelegate GetConstructorByExpression(ConstructorInfo constructorInfo) - { - ParameterInfo[] paramsInfo = constructorInfo.GetParameters(); - ParameterExpression param = Expression.Parameter(typeof(object[]), "args"); - Expression[] argsExp = new Expression[paramsInfo.Length]; - for (int i = 0; i < paramsInfo.Length; i++) - { - Expression index = Expression.Constant(i); - Type paramType = paramsInfo[i].ParameterType; - Expression paramAccessorExp = Expression.ArrayIndex(param, index); - Expression paramCastExp = Expression.Convert(paramAccessorExp, paramType); - argsExp[i] = paramCastExp; - } - NewExpression newExp = Expression.New(constructorInfo, argsExp); - Expression> lambda = Expression.Lambda>(newExp, param); - Func compiledLambda = lambda.Compile(); - return delegate(object[] args) { return compiledLambda(args); }; - } - - public static ConstructorDelegate GetConstructorByExpression(Type type, params Type[] argsType) - { - ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType); - return constructorInfo == null ? null : GetConstructorByExpression(constructorInfo); - } - -#endif - - public static GetDelegate GetGetMethod(PropertyInfo propertyInfo) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetGetMethodByReflection(propertyInfo); -#else - return GetGetMethodByExpression(propertyInfo); -#endif - } - - public static GetDelegate GetGetMethod(FieldInfo fieldInfo) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetGetMethodByReflection(fieldInfo); -#else - return GetGetMethodByExpression(fieldInfo); -#endif - } - - public static GetDelegate GetGetMethodByReflection(PropertyInfo propertyInfo) - { - MethodInfo methodInfo = GetGetterMethodInfo(propertyInfo); - return delegate(object source) { return methodInfo.Invoke(source, EmptyObjects); }; - } - - public static GetDelegate GetGetMethodByReflection(FieldInfo fieldInfo) - { - return delegate(object source) { return fieldInfo.GetValue(source); }; - } - -#if !SIMPLE_JSON_NO_LINQ_EXPRESSION - - public static GetDelegate GetGetMethodByExpression(PropertyInfo propertyInfo) - { - try - { - MethodInfo getMethodInfo = GetGetterMethodInfo(propertyInfo); - ParameterExpression instance = Expression.Parameter(typeof (object), "instance"); - UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType); - Func compiled = Expression.Lambda>(Expression.TypeAs(Expression.Call(instanceCast, getMethodInfo), typeof (object)), instance).Compile(); - return delegate(object source) - { - try - { - return compiled(source); - } - catch (Exception e) - { - return e.GetType().FullName + ": " + e.Message; - } - }; - } - catch (Exception e) - { - return delegate(object source) - { - return e.GetType().FullName + ": " + e.Message; - }; - } - } - - public static GetDelegate GetGetMethodByExpression(FieldInfo fieldInfo) - { - ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); - MemberExpression member = Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo); - GetDelegate compiled = Expression.Lambda(Expression.Convert(member, typeof(object)), instance).Compile(); - return delegate(object source) { return compiled(source); }; - } - -#endif - - public static SetDelegate GetSetMethod(PropertyInfo propertyInfo) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetSetMethodByReflection(propertyInfo); -#else - return GetSetMethodByExpression(propertyInfo); -#endif - } - - public static SetDelegate GetSetMethod(FieldInfo fieldInfo) - { -#if SIMPLE_JSON_NO_LINQ_EXPRESSION - return GetSetMethodByReflection(fieldInfo); -#else - return GetSetMethodByExpression(fieldInfo); -#endif - } - - public static SetDelegate GetSetMethodByReflection(PropertyInfo propertyInfo) - { - MethodInfo methodInfo = GetSetterMethodInfo(propertyInfo); - return delegate(object source, object value) { methodInfo.Invoke(source, new object[] { value }); }; - } - - public static SetDelegate GetSetMethodByReflection(FieldInfo fieldInfo) - { - return delegate(object source, object value) { fieldInfo.SetValue(source, value); }; - } - -#if !SIMPLE_JSON_NO_LINQ_EXPRESSION - - public static SetDelegate GetSetMethodByExpression(PropertyInfo propertyInfo) - { - MethodInfo setMethodInfo = GetSetterMethodInfo(propertyInfo); - ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); - ParameterExpression value = Expression.Parameter(typeof(object), "value"); - UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType); - UnaryExpression valueCast = (!IsValueType(propertyInfo.PropertyType)) ? Expression.TypeAs(value, propertyInfo.PropertyType) : Expression.Convert(value, propertyInfo.PropertyType); - Action compiled = Expression.Lambda>(Expression.Call(instanceCast, setMethodInfo, valueCast), new ParameterExpression[] { instance, value }).Compile(); - return delegate(object source, object val) { compiled(source, val); }; - } - - public static SetDelegate GetSetMethodByExpression(FieldInfo fieldInfo) - { - ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); - ParameterExpression value = Expression.Parameter(typeof(object), "value"); - Action compiled = Expression.Lambda>( - Assign(Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo), Expression.Convert(value, fieldInfo.FieldType)), instance, value).Compile(); - return delegate(object source, object val) { compiled(source, val); }; - } - - public static BinaryExpression Assign(Expression left, Expression right) - { -#if SIMPLE_JSON_TYPEINFO - return Expression.Assign(left, right); -#else - MethodInfo assign = typeof(Assigner<>).MakeGenericType(left.Type).GetMethod("Assign"); - BinaryExpression assignExpr = Expression.Add(left, right, assign); - return assignExpr; -#endif - } - - private static class Assigner - { - public static T Assign(ref T left, T right) - { - return (left = right); - } - } - -#endif - - public sealed class ThreadSafeDictionary : IDictionary - { - private readonly object _lock = new object(); - private readonly ThreadSafeDictionaryValueFactory _valueFactory; - private Dictionary _dictionary; - - public ThreadSafeDictionary(ThreadSafeDictionaryValueFactory valueFactory) - { - _valueFactory = valueFactory; - } - - private TValue Get(TKey key) - { - if (_dictionary == null) - return AddValue(key); - TValue value; - if (!_dictionary.TryGetValue(key, out value)) - return AddValue(key); - return value; - } - - private TValue AddValue(TKey key) - { - TValue value = _valueFactory(key); - lock (_lock) - { - if (_dictionary == null) - { - _dictionary = new Dictionary(); - _dictionary[key] = value; - } - else - { - TValue val; - if (_dictionary.TryGetValue(key, out val)) - return val; - Dictionary dict = new Dictionary(_dictionary); - dict[key] = value; - _dictionary = dict; - } - } - return value; - } - - public void Add(TKey key, TValue value) - { - throw new NotImplementedException(); - } - - public bool ContainsKey(TKey key) - { - return _dictionary.ContainsKey(key); - } - - public ICollection Keys - { - get { return _dictionary.Keys; } - } - - public bool Remove(TKey key) - { - throw new NotImplementedException(); - } - - public bool TryGetValue(TKey key, out TValue value) - { - value = this[key]; - return true; - } - - public ICollection Values - { - get { return _dictionary.Values; } - } - - public TValue this[TKey key] - { - get { return Get(key); } - set { throw new NotImplementedException(); } - } - - public void Add(KeyValuePair item) - { - throw new NotImplementedException(); - } - - public void Clear() - { - throw new NotImplementedException(); - } - - public bool Contains(KeyValuePair item) - { - throw new NotImplementedException(); - } - - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - throw new NotImplementedException(); - } - - public int Count - { - get { return _dictionary.Count; } - } - - public bool IsReadOnly - { - get { throw new NotImplementedException(); } - } - - public bool Remove(KeyValuePair item) - { - throw new NotImplementedException(); - } - - public IEnumerator> GetEnumerator() - { - return _dictionary.GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return _dictionary.GetEnumerator(); - } - } - - } - } -} -// ReSharper restore LoopCanBeConvertedToQuery -// ReSharper restore RedundantExplicitArrayCreation -// ReSharper restore SuggestUseVarKeywordEvident diff --git a/Mindscape.Raygun4Net.AspNetCore/project.json b/Mindscape.Raygun4Net.AspNetCore/project.json deleted file mode 100644 index 938b8a94..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/project.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "copyright": "Copyright (c) Raygun 2016-2017", - "version": "5.5.0", - "title": "Raygun4Net.AspNetCore", - "description": "Raygun provider for .NET Core projects", - "language": "en-US", - "packOptions": { - "iconUrl": "https://app.raygun.com/Content/Images/nuget-icon.png", - "licenseUrl": "https://raw.github.com/MindscapeHQ/raygun4net/master/LICENSE", - "requireLicenseAcceptance": false, - "tags": [ "raygun", "error", "tracking", "reporting", "logging", "crash", "exception" ], - "repository": { - "type": "git", - "url": "https://github.com/MindscapeHQ/raygun4net" - }, - "files": "readme.txt" - }, - - "dependencies": { - "NETStandard.Library": "1.6.0", - "Microsoft.AspNetCore.Http": "1.0.0", - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.AspNetCore.Http.Extensions": "1.0.0", - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "Microsoft.Extensions.Configuration.Json": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0" - }, - - "frameworks": { - "netstandard1.6": { - "imports": "dnxcore50", - "dependencies": { - "System.Diagnostics.StackTrace": "4.0.1" - } - }, - "net451": { - "frameworkAssemblies": { - "System.Windows.Forms": "4.0.0.0", - "Microsoft.VisualBasic": "10.0.0.0", - "System.Drawing": "4.0.0.0", - "System.Management": "4.0.0.0" - }, - "dependencies": { - "System.Net.Http": "4.0.0.0" - } - } - } -} diff --git a/Mindscape.Raygun4Net.AspNetCore/project.lock.json b/Mindscape.Raygun4Net.AspNetCore/project.lock.json deleted file mode 100644 index 21309eb7..00000000 --- a/Mindscape.Raygun4Net.AspNetCore/project.lock.json +++ /dev/null @@ -1,6471 +0,0 @@ -{ - "locked": false, - "version": 2, - "targets": { - ".NETFramework,Version=v4.5.1": { - "Microsoft.AspNetCore.Http/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.AspNetCore.WebUtilities": "1.0.0", - "Microsoft.Extensions.ObjectPool": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0", - "Microsoft.Net.Http.Headers": "1.0.0", - "System.Buffers": "4.0.0" - }, - "compile": { - "lib/net451/Microsoft.AspNetCore.Http.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.AspNetCore.Http.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Extensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Net.Http.Headers": "1.0.0", - "System.Buffers": "4.0.0" - }, - "compile": { - "lib/net451/Microsoft.AspNetCore.Http.Extensions.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.AspNetCore.Http.Extensions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0" - }, - "compile": { - "lib/net451/Microsoft.AspNetCore.Http.Features.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.AspNetCore.WebUtilities/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Buffers": "4.0.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/net451/Microsoft.AspNetCore.WebUtilities.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.AspNetCore.WebUtilities.dll": {} - } - }, - "Microsoft.Extensions.Configuration/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Binder/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "System.ComponentModel.TypeConverter": "4.1.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.dll": {} - } - }, - "Microsoft.Extensions.Configuration.FileExtensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "Microsoft.Extensions.FileProviders.Physical": "1.0.0" - }, - "compile": { - "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Json/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", - "Newtonsoft.Json": "9.0.1" - }, - "compile": { - "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Physical/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "1.0.0" - }, - "compile": { - "lib/net451/Microsoft.Extensions.FileProviders.Physical.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.Extensions.FileProviders.Physical.dll": {} - } - }, - "Microsoft.Extensions.FileSystemGlobbing/1.0.0": { - "type": "package", - "compile": { - "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} - } - }, - "Microsoft.Extensions.ObjectPool/1.0.0": { - "type": "package", - "compile": { - "lib/net451/Microsoft.Extensions.ObjectPool.dll": {} - }, - "runtime": { - "lib/net451/Microsoft.Extensions.ObjectPool.dll": {} - } - }, - "Microsoft.Extensions.Options/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Primitives": "1.0.0", - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "Microsoft.Extensions.Configuration.Binder": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.Net.Http.Headers/1.0.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Contracts": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Net.Http.Headers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Net.Http.Headers.dll": {} - } - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "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.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.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.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "Newtonsoft.Json/9.0.1": { - "type": "package", - "compile": { - "lib/net45/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/net45/Newtonsoft.Json.dll": {} - } - }, - "System.Buffers/4.0.0": { - "type": "package", - "compile": { - "lib/netstandard1.1/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Buffers.dll": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System", - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.ComponentModel.Primitives/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System", - "mscorlib" - ], - "compile": { - "ref/net45/System.ComponentModel.Primitives.dll": {} - }, - "runtime": { - "lib/net45/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "type": "package", - "dependencies": { - "System.ComponentModel.Primitives": "4.1.0" - }, - "frameworkAssemblies": [ - "System", - "mscorlib" - ], - "compile": { - "ref/net45/System.ComponentModel.TypeConverter.dll": {} - }, - "runtime": { - "lib/net45/System.ComponentModel.TypeConverter.dll": {} - } - }, - "System.Diagnostics.Contracts/4.0.1": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.IO/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System.IO.Compression" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Net.Http/4.0.0": { - "type": "package", - "frameworkAssemblies": [ - "System.Net.Http" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System", - "System.ComponentModel.Composition", - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System", - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtime": { - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "frameworkAssemblies": [ - "System.Numerics" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Text.Encodings.Web/4.0.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "frameworkAssemblies": [ - "System" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System", - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System.Core" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "compile": { - "ref/net451/_._": {} - }, - "runtime": { - "lib/net451/_._": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System.Xml" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "frameworkAssemblies": [ - "System.Xml.Linq" - ], - "compile": { - "ref/net45/_._": {} - }, - "runtime": { - "lib/net45/_._": {} - } - } - }, - ".NETStandard,Version=v1.6": { - "Microsoft.AspNetCore.Http/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.AspNetCore.WebUtilities": "1.0.0", - "Microsoft.Extensions.ObjectPool": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0", - "Microsoft.Net.Http.Headers": "1.0.0", - "System.Buffers": "4.0.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "System.Globalization.Extensions": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Extensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Net.Http.Headers": "1.0.0", - "System.Buffers": "4.0.0", - "System.IO.FileSystem": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Extensions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Extensions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Linq": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebSockets": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.AspNetCore.WebUtilities/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Buffers": "4.0.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.WebUtilities.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.WebUtilities.dll": {} - } - }, - "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.Extensions.Configuration/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Binder/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "System.ComponentModel.TypeConverter": "4.1.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.dll": {} - } - }, - "Microsoft.Extensions.Configuration.FileExtensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "Microsoft.Extensions.FileProviders.Physical": "1.0.0", - "System.AppContext": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Json/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "1.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", - "Newtonsoft.Json": "9.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.Configuration.Json.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.Configuration.Json.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Physical/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "1.0.0", - "System.Collections.Concurrent": "4.0.12", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.FileProviders.Physical.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.FileProviders.Physical.dll": {} - } - }, - "Microsoft.Extensions.FileSystemGlobbing/1.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.FileSystemGlobbing.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.FileSystemGlobbing.dll": {} - } - }, - "Microsoft.Extensions.ObjectPool/1.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.ObjectPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.ObjectPool.dll": {} - } - }, - "Microsoft.Extensions.Options/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Primitives": "1.0.0", - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "Microsoft.Extensions.Configuration.Binder": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.Net.Http.Headers/1.0.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Contracts": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Net.Http.Headers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Net.Http.Headers.dll": {} - } - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "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": {} - } - }, - "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.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.AppContext.dll": {} - } - }, - "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.Buffers.dll": {} - } - }, - "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.Concurrent.dll": {} - } - }, - "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/_._": {} - }, - "runtime": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - } - }, - "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.Collections.Specialized/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.NonGeneric": "4.0.1", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "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/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Specialized.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.dll": {} - } - }, - "System.ComponentModel.Primitives/4.1.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Collections.Specialized": "4.0.1", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Primitives": "4.1.0", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "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.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - } - }, - "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.Contracts/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Contracts.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Diagnostics.Contracts.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/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "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/System.Diagnostics.StackTrace.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": {} - } - }, - "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/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "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/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "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.Compression.ZipFile.dll": {} - } - }, - "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/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "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.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/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "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.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.WebSockets/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Win32.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebSockets.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Net.WebSockets.dll": {} - } - }, - "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.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/_._": {} - }, - "runtime": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - } - }, - "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.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/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "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.Numerics.dll": {} - } - }, - "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/System.Security.Claims.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Claims.dll": {} - } - }, - "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/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "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/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "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/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "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/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "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/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "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.Primitives.dll": {} - } - }, - "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/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "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.dll": {} - } - }, - "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.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.Encodings.Web/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "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.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Text.Encodings.Web.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/unix/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "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.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/_._": {} - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Thread.dll": {} - } - }, - "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": {} - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.Http/1.0.0": { - "sha512": "c/+eWVWQ8fX5hBHhL1BY4k2n4kVyUnqJLSCj0sTTXwRTU6IKoGbTOUqHT9as8C71Vk54YpAsi/VPmGW7T/ap3A==", - "type": "package", - "files": [ - "Microsoft.AspNetCore.Http.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.dll", - "lib/net451/Microsoft.AspNetCore.Http.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.xml" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "sha512": "OJHlqdJOWKKBfsiVdX4Z4KCNuqvBIu6+1MVKuejRDyHnGyMkNHNoP/dtVzhPqvJXaJg9N4HlD0XNc6GDCFVffg==", - "type": "package", - "files": [ - "Microsoft.AspNetCore.Http.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Extensions/1.0.0": { - "sha512": "GlvCPRpnw2jjHLdbGf/C28NQZLMeX1mugv5BS1a3FCQOJYyuwQZil4JwblR0frLyVrUVoJQ7UXRNZIzEVlO5XA==", - "type": "package", - "files": [ - "Microsoft.AspNetCore.Http.Extensions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Extensions.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Extensions.dll", - "lib/net451/Microsoft.AspNetCore.Http.Extensions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Extensions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Extensions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "sha512": "6x7zgfbTo1gL9xMEb7EMO2ES/48bqwnWyfH09z+ubWhnzxdhHls8rtqstPylu5FPD9nid6Vo2pgDm5vufRAy5Q==", - "type": "package", - "files": [ - "Microsoft.AspNetCore.Http.Features.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Features.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Features.dll", - "lib/net451/Microsoft.AspNetCore.Http.Features.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.xml" - ] - }, - "Microsoft.AspNetCore.WebUtilities/1.0.0": { - "sha512": "D0licSnS1JgqQ/gYlN41wXbeYG3dFIdjY781YzMHZ5gBB7kczacshW+H6plZkXRr/cCnAJWGa31o1R8c5GEy/A==", - "type": "package", - "files": [ - "Microsoft.AspNetCore.WebUtilities.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.WebUtilities.nuspec", - "lib/net451/Microsoft.AspNetCore.WebUtilities.dll", - "lib/net451/Microsoft.AspNetCore.WebUtilities.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.WebUtilities.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.WebUtilities.xml" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "type": "package", - "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.Extensions.Configuration/1.0.0": { - "sha512": "hR4yYebruRp6qyFnV3RW4qrnEb0J1LnMmQbj50AUA423V8dMs4E3YAohsyRyGBFnpbJ+KKzieSG/n2A6T0klZQ==", - "type": "package", - "files": [ - "Microsoft.Extensions.Configuration.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Configuration.dll", - "lib/netstandard1.1/Microsoft.Extensions.Configuration.xml" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "sha512": "nJ+Et/rnDMDmGhxvFAKdN3va7y+YDPICv1nUEP8I4IKgOkWwr/dCZHMqxVhJFrkbW9ux8Kd7erC4mvxfZh0WnA==", - "type": "package", - "files": [ - "Microsoft.Extensions.Configuration.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Configuration.Binder/1.0.0": { - "sha512": "kK8QuBcPQtmKJCkC9enc1uMRFa++mPTuVNm2K5jDVXcAYKRBcFSbdEBvIe1JIgA6dEsAQeqjfHfKSaUJ8f5NFQ==", - "type": "package", - "files": [ - "Microsoft.Extensions.Configuration.Binder.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.Binder.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netstandard1.1/Microsoft.Extensions.Configuration.Binder.xml" - ] - }, - "Microsoft.Extensions.Configuration.FileExtensions/1.0.0": { - "sha512": "MO7XtmLiqnpgVTX34uzFPvIS7jPmBUGLN0MP5MsYu6CqYTIs90ULjtrV5TegH5mTqKTXWjZRGXL26R6apTyc4w==", - "type": "package", - "files": [ - "Microsoft.Extensions.Configuration.FileExtensions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.FileExtensions.nuspec", - "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.xml", - "lib/netstandard1.3/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/netstandard1.3/Microsoft.Extensions.Configuration.FileExtensions.xml" - ] - }, - "Microsoft.Extensions.Configuration.Json/1.0.0": { - "sha512": "KRyEOe5/Xi3qyDMdEVh++e2pQRsI6C3wzINVExOcu9lOsFmXK/k4qOf244fyo59rnn6s5xKnIW3WbhxWS1hu2w==", - "type": "package", - "files": [ - "Microsoft.Extensions.Configuration.Json.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.Json.nuspec", - "lib/net451/Microsoft.Extensions.Configuration.Json.dll", - "lib/net451/Microsoft.Extensions.Configuration.Json.xml", - "lib/netstandard1.3/Microsoft.Extensions.Configuration.Json.dll", - "lib/netstandard1.3/Microsoft.Extensions.Configuration.Json.xml" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "sha512": "+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA==", - "type": "package", - "files": [ - "Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.DependencyInjection.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "sha512": "4jsqTxG3py/hYSsOtZMkNJ2/CQqPdpwyK7bDUkrwHgqowCFSmx/C+R4IzQ+2AK2Up1fVcu+ldC0gktwidL828A==", - "type": "package", - "files": [ - "Microsoft.Extensions.FileProviders.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.FileProviders.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.xml" - ] - }, - "Microsoft.Extensions.FileProviders.Physical/1.0.0": { - "sha512": "Ej5hGWtK3xM9YU+B2O8EdlMcJf5utbDQs9ecnfvwhENQeeNU7iI2jjnRB2d7V6o9SQZmNHPzdPvaNb3PlSMz+Q==", - "type": "package", - "files": [ - "Microsoft.Extensions.FileProviders.Physical.1.0.0.nupkg.sha512", - "Microsoft.Extensions.FileProviders.Physical.nuspec", - "lib/net451/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/net451/Microsoft.Extensions.FileProviders.Physical.xml", - "lib/netstandard1.3/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/netstandard1.3/Microsoft.Extensions.FileProviders.Physical.xml" - ] - }, - "Microsoft.Extensions.FileSystemGlobbing/1.0.0": { - "sha512": "scXp1Y+hmhQKLe57Z7cSjsAEFtE4zSHHydkg1SpvG56nWwWQVpVcRAbRZsv1qIBR5/vNB4LA9xiOKnvKO/Halg==", - "type": "package", - "files": [ - "Microsoft.Extensions.FileSystemGlobbing.1.0.0.nupkg.sha512", - "Microsoft.Extensions.FileSystemGlobbing.nuspec", - "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll", - "lib/net451/Microsoft.Extensions.FileSystemGlobbing.xml", - "lib/netstandard1.3/Microsoft.Extensions.FileSystemGlobbing.dll", - "lib/netstandard1.3/Microsoft.Extensions.FileSystemGlobbing.xml" - ] - }, - "Microsoft.Extensions.ObjectPool/1.0.0": { - "sha512": "BTXoWSTrv/saLlNSg8l41YOoSKeUUanQLykUqRTtiUJz2xxQOCgm4ckPzrdmSK6w0mdjR2h7IrUDGdBF78Z7yg==", - "type": "package", - "files": [ - "Microsoft.Extensions.ObjectPool.1.0.0.nupkg.sha512", - "Microsoft.Extensions.ObjectPool.nuspec", - "lib/net451/Microsoft.Extensions.ObjectPool.dll", - "lib/net451/Microsoft.Extensions.ObjectPool.xml", - "lib/netstandard1.3/Microsoft.Extensions.ObjectPool.dll", - "lib/netstandard1.3/Microsoft.Extensions.ObjectPool.xml" - ] - }, - "Microsoft.Extensions.Options/1.0.0": { - "sha512": "SdP3yPKF++JTkoa91pBDiE70uQkR/gdXWzOnMPbSj+eOqY1vgY+b8RVl+gh7TrJ2wlCK2QqnQtvCQlPPZRK36w==", - "type": "package", - "files": [ - "Microsoft.Extensions.Options.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Options.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Options.dll", - "lib/netstandard1.0/Microsoft.Extensions.Options.xml" - ] - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/1.0.0": { - "sha512": "ov+cv1w81/lVrjqorjSpUvTzJhRVFu2GSRyRQYcGfGWPwrCz6473YoiqK/XNbeBmmF9VVyGPHVMubAH+Atsr3g==", - "type": "package", - "files": [ - "Microsoft.Extensions.Options.ConfigurationExtensions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Options.ConfigurationExtensions.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll", - "lib/netstandard1.1/Microsoft.Extensions.Options.ConfigurationExtensions.xml" - ] - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "sha512": "3q2vzfKEDjL6JFkRpk5SFA3zarYsO6+ZYgoucNImrUMzDn0mFbEOL5p9oPoWiypwypbJVVjWTf557bXZ0YFLig==", - "type": "package", - "files": [ - "Microsoft.Extensions.Primitives.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Primitives.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.xml" - ] - }, - "Microsoft.Net.Http.Headers/1.0.0": { - "sha512": "1lr92itF1fKR2oEQ6gk1IUsuCgp7UMlf/b1sjlAyuDeUnttj39ra59GQHYpomglJX1UVNpi1/cSBbEsXoNeIhw==", - "type": "package", - "files": [ - "Microsoft.Net.Http.Headers.1.0.0.nupkg.sha512", - "Microsoft.Net.Http.Headers.nuspec", - "lib/netstandard1.1/Microsoft.Net.Http.Headers.dll", - "lib/netstandard1.1/Microsoft.Net.Http.Headers.xml" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==", - "type": "package", - "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.Targets/1.0.1": { - "sha512": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==", - "type": "package", - "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.Win32.Primitives/4.0.1": { - "sha512": "fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==", - "type": "package", - "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/_._" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==", - "type": "package", - "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", - "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": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==", - "type": "package", - "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": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==", - "type": "package", - "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": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==", - "type": "package", - "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.Security.Cryptography/4.0.0": { - "sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==", - "type": "package", - "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": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "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": "msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==", - "type": "package", - "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", - "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": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", - "type": "package", - "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": "Cma8cBW6di16ZLibL8LYQ+cLjGzoKxpOTu/faZfDcx94ZjAGq6Nv5RO7+T1YZXqEXTZP9rt1wLVEONVpURtUqw==", - "type": "package", - "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", - "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.Collections.Specialized/4.0.1": { - "sha512": "/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==", - "type": "package", - "files": [ - "System.Collections.Specialized.4.0.1.nupkg.sha512", - "System.Collections.Specialized.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.Specialized.dll", - "lib/netstandard1.3/System.Collections.Specialized.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.xml", - "ref/netstandard1.3/de/System.Collections.Specialized.xml", - "ref/netstandard1.3/es/System.Collections.Specialized.xml", - "ref/netstandard1.3/fr/System.Collections.Specialized.xml", - "ref/netstandard1.3/it/System.Collections.Specialized.xml", - "ref/netstandard1.3/ja/System.Collections.Specialized.xml", - "ref/netstandard1.3/ko/System.Collections.Specialized.xml", - "ref/netstandard1.3/ru/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "oBZFnm7seFiVfugsIyOvQCWobNZs7FzqDV/B7tx20Ep/l3UUFCPDkdTnCNaJZTU27zjeODmy2C/cP60u3D4c9w==", - "type": "package", - "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.Primitives/4.1.0": { - "sha512": "sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==", - "type": "package", - "files": [ - "System.ComponentModel.Primitives.4.1.0.nupkg.sha512", - "System.ComponentModel.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.Primitives.dll", - "lib/netstandard1.0/System.ComponentModel.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/de/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/es/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/fr/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/it/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ja/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ko/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ru/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "sha512": "MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==", - "type": "package", - "files": [ - "System.ComponentModel.TypeConverter.4.1.0.nupkg.sha512", - "System.ComponentModel.TypeConverter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.TypeConverter.dll", - "lib/net462/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.TypeConverter.dll", - "ref/net462/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Console/4.0.0": { - "sha512": "qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==", - "type": "package", - "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.Contracts/4.0.1": { - "sha512": "HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==", - "type": "package", - "files": [ - "System.Diagnostics.Contracts.4.0.1.nupkg.sha512", - "System.Diagnostics.Contracts.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Diagnostics.Contracts.dll", - "lib/netstandard1.0/System.Diagnostics.Contracts.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.Diagnostics.Contracts.dll", - "ref/netcore50/System.Diagnostics.Contracts.xml", - "ref/netcore50/de/System.Diagnostics.Contracts.xml", - "ref/netcore50/es/System.Diagnostics.Contracts.xml", - "ref/netcore50/fr/System.Diagnostics.Contracts.xml", - "ref/netcore50/it/System.Diagnostics.Contracts.xml", - "ref/netcore50/ja/System.Diagnostics.Contracts.xml", - "ref/netcore50/ko/System.Diagnostics.Contracts.xml", - "ref/netcore50/ru/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/System.Diagnostics.Contracts.dll", - "ref/netstandard1.0/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/de/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/es/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/it/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.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.Diagnostics.Contracts.dll" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "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": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==", - "type": "package", - "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.StackTrace/4.0.1": { - "sha512": "6i2EbRq0lgGfiZ+FDf0gVaw9qeEU+7IS2+wbZJmFVpvVzVOgZEt0ScZtyenuBvs6iDYbGiF51bMAa0oDP/tujQ==", - "type": "package", - "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": "xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==", - "type": "package", - "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": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", - "type": "package", - "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": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "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": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "type": "package", - "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": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==", - "type": "package", - "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": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==", - "type": "package", - "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": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==", - "type": "package", - "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": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==", - "type": "package", - "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": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==", - "type": "package", - "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": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "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": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "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": "qM4Wr3La+RYb/03B0mZZjbA7tHsGzDffnuXP8Sl48HW2JwCjn3kfD5qdw0sqyNNowUipcJMi9/q6sMUrOIJ6UQ==", - "type": "package", - "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.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "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": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "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.Net.Http/4.0.0": { - "sha512": "mZuAl7jw/mFY8jUq4ITKECxVBh9a8SJt9BC/+lJbmo7cRKspxE3PsITz+KiaCEsexN5WYPzwBOx0oJH/0HlPyQ==", - "type": "package", - "files": [ - "System.Net.Http.4.0.0.nupkg.sha512", - "System.Net.Http.nuspec", - "lib/DNXCore50/System.Net.Http.dll", - "lib/net45/_._", - "lib/netcore50/System.Net.Http.dll", - "lib/win8/_._", - "lib/wpa81/_._", - "ref/dotnet/System.Net.Http.dll", - "ref/dotnet/System.Net.Http.xml", - "ref/dotnet/de/System.Net.Http.xml", - "ref/dotnet/es/System.Net.Http.xml", - "ref/dotnet/fr/System.Net.Http.xml", - "ref/dotnet/it/System.Net.Http.xml", - "ref/dotnet/ja/System.Net.Http.xml", - "ref/dotnet/ko/System.Net.Http.xml", - "ref/dotnet/ru/System.Net.Http.xml", - "ref/dotnet/zh-hans/System.Net.Http.xml", - "ref/dotnet/zh-hant/System.Net.Http.xml", - "ref/net45/_._", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/win8/_._", - "ref/wpa81/_._" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==", - "type": "package", - "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.Primitives/4.0.11": { - "sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==", - "type": "package", - "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.Sockets/4.1.0": { - "sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==", - "type": "package", - "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.WebSockets/4.0.0": { - "sha512": "2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==", - "type": "package", - "files": [ - "System.Net.WebSockets.4.0.0.nupkg.sha512", - "System.Net.WebSockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.WebSockets.dll", - "lib/netstandard1.3/System.Net.WebSockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.xml", - "ref/netstandard1.3/de/System.Net.WebSockets.xml", - "ref/netstandard1.3/es/System.Net.WebSockets.xml", - "ref/netstandard1.3/fr/System.Net.WebSockets.xml", - "ref/netstandard1.3/it/System.Net.WebSockets.xml", - "ref/netstandard1.3/ja/System.Net.WebSockets.xml", - "ref/netstandard1.3/ko/System.Net.WebSockets.xml", - "ref/netstandard1.3/ru/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebSockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "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": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==", - "type": "package", - "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.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "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": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "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": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "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": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "type": "package", - "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": "jMSCxA4LSyKBGRDm/WtfkO03FkcgRzHxwvQRib1bm2GZ8ifKM1MX1al6breGCEQK280mdl9uQS7JNPXRYk90jw==", - "type": "package", - "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": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==", - "type": "package", - "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": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "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.ResourceManager/4.0.1": { - "sha512": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "type": "package", - "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": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==", - "type": "package", - "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": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "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": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", - "type": "package", - "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": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", - "type": "package", - "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": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", - "type": "package", - "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.Numerics/4.0.1": { - "sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==", - "type": "package", - "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", - "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": "4Jlp0OgJLS/Voj1kyFP6MJlIYp3crgfH8kNQk2p7+4JYfc1aAmh9PZyAMMbDhuoolGNtux9HqSOazsioRiDvCw==", - "type": "package", - "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": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==", - "type": "package", - "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": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==", - "type": "package", - "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": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==", - "type": "package", - "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": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==", - "type": "package", - "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": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==", - "type": "package", - "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": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==", - "type": "package", - "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": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==", - "type": "package", - "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": "On+SKhXY5rzxh/S8wlH1Rm0ogBlu7zyHNxeNBiXauNrhHRXAe9EuX8Yl5IOzLPGU5Z4kLWHMvORDOCG8iu9hww==", - "type": "package", - "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.Text.Encoding/4.0.11": { - "sha512": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==", - "type": "package", - "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.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "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.Encodings.Web/4.0.0": { - "sha512": "TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==", - "type": "package", - "files": [ - "System.Text.Encodings.Web.4.0.0.nupkg.sha512", - "System.Text.Encodings.Web.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "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": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "type": "package", - "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": "f7aLuLkBoCQM2kng7zqLFBXz9Gk48gDK8lk1ih9rH/1arJJzZK9gJwNvPDhL6Ps/l6rwOr8jw+4FCHL0KKWiEg==", - "type": "package", - "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": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==", - "type": "package", - "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.Extensions/4.0.0": { - "sha512": "pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==", - "type": "package", - "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.Thread/4.0.0": { - "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", - "type": "package", - "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.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "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": "ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==", - "type": "package", - "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": "Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==", - "type": "package", - "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/_._" - ] - } - }, - "projectFileDependencyGroups": { - "": [ - "Microsoft.AspNetCore.Http >= 1.0.0", - "Microsoft.AspNetCore.Http.Abstractions >= 1.0.0", - "Microsoft.AspNetCore.Http.Extensions >= 1.0.0", - "Microsoft.AspNetCore.Http.Features >= 1.0.0", - "Microsoft.Extensions.Configuration.Json >= 1.0.0", - "Microsoft.Extensions.Options >= 1.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions >= 1.0.0", - "NETStandard.Library >= 1.6.0" - ], - ".NETFramework,Version=v4.5.1": [ - "Microsoft.VisualBasic >= 10.0.0", - "System.Drawing >= 4.0.0", - "System.Management >= 4.0.0", - "System.Net.Http >= 4.0.0", - "System.Windows.Forms >= 4.0.0" - ], - ".NETStandard,Version=v1.6": [ - "System.Diagnostics.StackTrace >= 4.0.1" - ] - }, - "tools": {}, - "projectFileToolGroups": {} -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/readme.txt b/Mindscape.Raygun4Net.AspNetCore/readme.txt index b83d8e58..739dfb9b 100644 --- a/Mindscape.Raygun4Net.AspNetCore/readme.txt +++ b/Mindscape.Raygun4Net.AspNetCore/readme.txt @@ -13,7 +13,7 @@ The main classes can be found in the Mindscape.Raygun4Net namespace. Usage ====== -In your project.json file, add "Mindscape.Raygun4Net.AspNetCore": "5.5.0.0" to your dependencies. +In your project.json file, add "Mindscape.Raygun4Net.AspNetCore": "6.0.0" to your dependencies. Run dotnet.exe restore or restore packages within Visual Studio to download the package. diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib.csproj b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib.csproj new file mode 100644 index 00000000..940aedd4 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib.csproj @@ -0,0 +1,8 @@ + + + netstandard2.0 + + + + + \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/RaygunClientFactory.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/RaygunClientFactory.cs new file mode 100644 index 00000000..567cf96c --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/RaygunClientFactory.cs @@ -0,0 +1,17 @@ +namespace Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib +{ + public class RaygunClientFactory + { + private static string _apiKey; + + public static void Initialize(string apiKey) + { + _apiKey = apiKey; + } + + public static RaygunClient GetClient() + { + return new RaygunClient(_apiKey); + } + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/TestLib.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/TestLib.cs new file mode 100644 index 00000000..113f9a7e --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib/TestLib.cs @@ -0,0 +1,25 @@ +using System; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib +{ + public class TestLib + { + public void TestLibSendErrorUsingDotNetCore() + { + try + { + throw new LibException(); + } + catch (Exception e) + { + RaygunClientFactory.GetClient().Send(e); + } + + } + } + + public class LibException : Exception + { + + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/ExampleRaygunAspNetCoreClientProvider.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests/ExampleRaygunAspNetCoreClientProvider.cs new file mode 100644 index 00000000..7cf64fff --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/ExampleRaygunAspNetCoreClientProvider.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Http; +using Mindscape.Raygun4Net.AspNetCore; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests +{ + public class ExampleRaygunAspNetCoreClientProvider : DefaultRaygunAspNetCoreClientProvider + { + public override AspNetCore.RaygunClient GetClient(AspNetCore.RaygunSettings settings, HttpContext context) + { + var client = base.GetClient(settings, context); + + var email = "bob@raygun.com"; + + client.UserInfo = new RaygunIdentifierMessage(email) + { + IsAnonymous = false, + Email = email, + FullName = "Bob" + }; + + return client; + } + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Mindscape.Raygun4Net.AspNetCore2.Tests.csproj b/Mindscape.Raygun4Net.AspNetCore2.Tests/Mindscape.Raygun4Net.AspNetCore2.Tests.csproj new file mode 100644 index 00000000..3eac7b1b --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Mindscape.Raygun4Net.AspNetCore2.Tests.csproj @@ -0,0 +1,15 @@ + + + netcoreapp2.0 + + + + + + + + + + + + \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Boom.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Boom.cshtml new file mode 100644 index 00000000..67d00aa7 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Boom.cshtml @@ -0,0 +1,6 @@ +@page +@{ + ViewData["Title"] = "Contact"; + var x = 1; + var y = 1 / --x; +} diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml new file mode 100644 index 00000000..2c425af5 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml @@ -0,0 +1,17 @@ +@page +@using Mindscape.Raygun4Net.AspNetCore2.Tests.Pages +@model Mindscape.Raygun4Net.AspNetCore2.Tests.Pages.ErrorModel +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ But thats what we wanted right? Check your Raygun console to see if this error has shown up. If it's not there check that you've set the api key! +

+} + diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml.cs new file mode 100644 index 00000000..82bfce03 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Error.cshtml.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests.Pages +{ + public class ErrorModel : PageModel + { + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml new file mode 100644 index 00000000..bdbf6abe --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml @@ -0,0 +1,8 @@ +@page +@using Mindscape.Raygun4Net.AspNetCore2.Tests.Pages +@model Mindscape.Raygun4Net.AspNetCore2.Tests.Pages.IndexModel +@{ + ViewData["Title"] = "Home page"; +} + +Cause error Cause error in Lib diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml.cs new file mode 100644 index 00000000..69a6788b --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/Index.cshtml.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests.Pages +{ + public class IndexModel : PageModel + { + public void OnGet() + { + } + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/LibBoom.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/LibBoom.cshtml new file mode 100644 index 00000000..a3eb9914 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/LibBoom.cshtml @@ -0,0 +1,8 @@ +@page +@using Mindscape.Raygun4Net.AspNetCore2.Tests.TestLib +@{ + ViewData["Title"] = "Contact"; + new TestLib().TestLibSendErrorUsingDotNetCore(); +} + +Check the Raygun console. You should have received a "LibException" \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_Layout.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_Layout.cshtml new file mode 100644 index 00000000..9676fc4a --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_Layout.cshtml @@ -0,0 +1,17 @@ + + + + + + @ViewData["Title"] - Mindscape.Raygun4Net.AspNetCore2.Tests + + + + +
+ @RenderBody() + +
+
+ + diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewImports.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewImports.cshtml new file mode 100644 index 00000000..a1820dfb --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using Mindscape.Raygun4Net.AspNetCore2.Tests +@namespace Mindscape.Raygun4Net.AspNetCore2.Tests.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewStart.cshtml b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewStart.cshtml new file mode 100644 index 00000000..a5f10045 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Pages/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Program.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests/Program.cs new file mode 100644 index 00000000..dce5ca43 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Program.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/Startup.cs b/Mindscape.Raygun4Net.AspNetCore2.Tests/Startup.cs new file mode 100644 index 00000000..9abdeb8e --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/Startup.cs @@ -0,0 +1,49 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Mindscape.Raygun4Net.AspNetCore; + +namespace Mindscape.Raygun4Net.AspNetCore2.Tests +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + services.AddRaygun(Configuration, new RaygunMiddlewareSettings() + { + // adds an optional example of over riding the client provider + ClientProvider = new ExampleRaygunAspNetCoreClientProvider() + }); + + // because we're using a library that uses Raygun, we need to initalize that too + TestLib.RaygunClientFactory.Initialize(Configuration["RaygunSettings:ApiKey"]); + } + + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Error"); + } + + app.UseRaygun(); + + app.UseStaticFiles(); + + app.UseMvc(); + } + } +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.Development.json b/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.Development.json new file mode 100644 index 00000000..fa8ce71a --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.Development.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.json b/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.json new file mode 100644 index 00000000..d33c6fb1 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/appsettings.json @@ -0,0 +1,11 @@ +{ + "RaygunSettings": { + "ApiKey": "YOUR_APP_API_KEY" + }, + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Warning" + } + } +} diff --git a/Mindscape.Raygun4Net.AspNetCore2.Tests/bundleconfig.json b/Mindscape.Raygun4Net.AspNetCore2.Tests/bundleconfig.json new file mode 100644 index 00000000..6d3f9a57 --- /dev/null +++ b/Mindscape.Raygun4Net.AspNetCore2.Tests/bundleconfig.json @@ -0,0 +1,24 @@ +// Configure bundling and minification for the project. +// More info at https://go.microsoft.com/fwlink/?LinkId=808241 +[ + { + "outputFileName": "wwwroot/css/site.min.css", + // An array of relative input file paths. Globbing patterns supported + "inputFiles": [ + "wwwroot/css/site.css" + ] + }, + { + "outputFileName": "wwwroot/js/site.min.js", + "inputFiles": [ + "wwwroot/js/site.js" + ], + // Optionally specify minification options + "minify": { + "enabled": true, + "renameLocals": true + }, + // Optionally generate .map file + "sourceMap": false + } +] diff --git a/Mindscape.Raygun4Net.NetCore/Builders/RaygunEnvironmentMessageBuilder.cs b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunEnvironmentMessageBuilder.cs similarity index 79% rename from Mindscape.Raygun4Net.NetCore/Builders/RaygunEnvironmentMessageBuilder.cs rename to Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunEnvironmentMessageBuilder.cs index c4569b13..c7eb843a 100644 --- a/Mindscape.Raygun4Net.NetCore/Builders/RaygunEnvironmentMessageBuilder.cs +++ b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunEnvironmentMessageBuilder.cs @@ -1,13 +1,12 @@ using System; using System.Diagnostics; using System.Globalization; -using System.Runtime.InteropServices; namespace Mindscape.Raygun4Net { - internal class RaygunEnvironmentMessageBuilder + public class RaygunEnvironmentMessageBuilder { - public static RaygunEnvironmentMessage Build(RaygunSettings settings) + public static RaygunEnvironmentMessage Build(RaygunSettingsBase settings) { RaygunEnvironmentMessage message = new RaygunEnvironmentMessage(); diff --git a/Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilder.cs b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunErrorMessageBuilder.cs similarity index 53% rename from Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilder.cs rename to Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunErrorMessageBuilder.cs index da3dc599..b4e2a087 100644 --- a/Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilder.cs +++ b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunErrorMessageBuilder.cs @@ -3,59 +3,34 @@ using System.Collections.Generic; using System.Diagnostics; using System.Reflection; +using System.Text; namespace Mindscape.Raygun4Net { - public class RaygunErrorMessageBuilder : RaygunErrorMessageBuilderBase + public class RaygunErrorMessageBuilder { - public static RaygunErrorMessage Build(Exception exception) + protected static string FormatTypeName(Type type, bool fullName) { - RaygunErrorMessage message = new RaygunErrorMessage(); - - var exceptionType = exception.GetType(); - - message.Message = exception.Message; - message.ClassName = FormatTypeName(exceptionType, true); - - message.StackTrace = BuildStackTrace(exception); - - if (exception.Data != null) + string name = fullName ? type.FullName : type.Name; + if (!type.IsConstructedGenericType) { - IDictionary data = new Dictionary(); - - foreach (object key in exception.Data.Keys) - { - if (!RaygunClient.SentKey.Equals(key)) - { - data[key] = exception.Data[key]; - } - } - - message.Data = data; + return name; } - AggregateException ae = exception as AggregateException; - - if (ae != null && ae.InnerExceptions != null) - { - message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count]; - int index = 0; - - foreach (Exception e in ae.InnerExceptions) - { - message.InnerErrors[index] = Build(e); - index++; - } - } - else if (exception.InnerException != null) + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.Append(name.Substring(0, name.IndexOf("`"))); + stringBuilder.Append("<"); + foreach (Type t in type.GenericTypeArguments) { - message.InnerError = Build(exception.InnerException); + stringBuilder.Append(FormatTypeName(t, false)).Append(","); } + stringBuilder.Remove(stringBuilder.Length - 1, 1); + stringBuilder.Append(">"); - return message; + return stringBuilder.ToString(); } - - private static RaygunErrorStackTraceLineMessage[] BuildStackTrace(Exception exception) + + protected static RaygunErrorStackTraceLineMessage[] BuildStackTrace(Exception exception) { var lines = new List(); @@ -103,5 +78,114 @@ private static RaygunErrorStackTraceLineMessage[] BuildStackTrace(Exception exce return lines.ToArray(); } + + protected static string GenerateMethodName(MethodBase method) + { + var stringBuilder = new StringBuilder(); + + stringBuilder.Append(method.Name); + + bool first = true; + + if (method is MethodInfo && method.IsGenericMethod) + { + Type[] genericArguments = method.GetGenericArguments(); + stringBuilder.Append("["); + + for (int i = 0; i < genericArguments.Length; i++) + { + if (!first) + { + stringBuilder.Append(","); + } + else + { + first = false; + } + + stringBuilder.Append(genericArguments[i].Name); + } + + stringBuilder.Append("]"); + } + + stringBuilder.Append("("); + + ParameterInfo[] parameters = method.GetParameters(); + + first = true; + + for (int i = 0; i < parameters.Length; ++i) + { + if (!first) + { + stringBuilder.Append(", "); + } + else + { + first = false; + } + + string type = ""; + + if (parameters[i].ParameterType != null) + { + type = parameters[i].ParameterType.Name; + } + + stringBuilder.Append(type + " " + parameters[i].Name); + } + + stringBuilder.Append(")"); + + return stringBuilder.ToString(); + } + + public static RaygunErrorMessage Build(Exception exception) + { + RaygunErrorMessage message = new RaygunErrorMessage(); + + var exceptionType = exception.GetType(); + + message.Message = exception.Message; + message.ClassName = FormatTypeName(exceptionType, true); + + message.StackTrace = BuildStackTrace(exception); + + if (exception.Data != null) + { + IDictionary data = new Dictionary(); + + foreach (object key in exception.Data.Keys) + { + if (!RaygunClientBase.SentKey.Equals(key)) + { + data[key] = exception.Data[key]; + } + } + + message.Data = data; + } + + AggregateException ae = exception as AggregateException; + + if (ae != null && ae.InnerExceptions != null) + { + message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count]; + int index = 0; + + foreach (Exception e in ae.InnerExceptions) + { + message.InnerErrors[index] = Build(e); + index++; + } + } + else if (exception.InnerException != null) + { + message.InnerError = Build(exception.InnerException); + } + + return message; + } } } diff --git a/Mindscape.Raygun4Net.NetCore/Builders/RaygunMessageBuilder.cs b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunMessageBuilder.cs similarity index 82% rename from Mindscape.Raygun4Net.NetCore/Builders/RaygunMessageBuilder.cs rename to Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunMessageBuilder.cs index b6918baf..5be8141f 100644 --- a/Mindscape.Raygun4Net.NetCore/Builders/RaygunMessageBuilder.cs +++ b/Mindscape.Raygun4Net.NetCore.Common/Builders/RaygunMessageBuilder.cs @@ -7,14 +7,14 @@ namespace Mindscape.Raygun4Net public class RaygunMessageBuilder : IRaygunMessageBuilder { private readonly RaygunMessage _raygunMessage; - private readonly RaygunSettings _settings; + private readonly RaygunSettingsBase _settings; - public static RaygunMessageBuilder New(RaygunSettings settings) - { - return new RaygunMessageBuilder(settings); + public static RaygunMessageBuilder New(RaygunSettingsBase settings) + { + return new RaygunMessageBuilder(settings); } - - private RaygunMessageBuilder(RaygunSettings settings) + + private RaygunMessageBuilder(RaygunSettingsBase settings) { _raygunMessage = new RaygunMessage(); _settings = settings; @@ -110,5 +110,17 @@ public IRaygunMessageBuilder SetVersion(string version) return this; } + + public IRaygunMessageBuilder SetRequestDetails(RaygunRequestMessage message) + { + _raygunMessage.Details.Request = message; + return this; + } + + public IRaygunMessageBuilder SetResponseDetails(RaygunResponseMessage message) + { + _raygunMessage.Details.Response = message; + return this; + } } } \ No newline at end of file diff --git a/Mindscape.Raygun4Net.AspNetCore/IRaygunMessageBuilder.cs b/Mindscape.Raygun4Net.NetCore.Common/IRaygunMessageBuilder.cs similarity index 81% rename from Mindscape.Raygun4Net.AspNetCore/IRaygunMessageBuilder.cs rename to Mindscape.Raygun4Net.NetCore.Common/IRaygunMessageBuilder.cs index e831aa6c..e49f5f9f 100644 --- a/Mindscape.Raygun4Net.AspNetCore/IRaygunMessageBuilder.cs +++ b/Mindscape.Raygun4Net.NetCore.Common/IRaygunMessageBuilder.cs @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using Mindscape.Raygun4Net.Messages; namespace Mindscape.Raygun4Net { @@ -24,5 +23,9 @@ public interface IRaygunMessageBuilder IRaygunMessageBuilder SetTags(IList tags); IRaygunMessageBuilder SetUser(RaygunIdentifierMessage user); + + IRaygunMessageBuilder SetRequestDetails(RaygunRequestMessage message); + + IRaygunMessageBuilder SetResponseDetails(RaygunResponseMessage message); } } \ No newline at end of file diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunClientMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunClientMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunClientMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunClientMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunEnvironmentMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunEnvironmentMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunEnvironmentMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunEnvironmentMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunErrorMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunErrorMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunErrorMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunErrorMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunErrorStackTraceLineMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunErrorStackTraceLineMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunErrorStackTraceLineMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunErrorStackTraceLineMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunIdentifierMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunIdentifierMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunIdentifierMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunIdentifierMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunMessageDetails.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunMessageDetails.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunMessageDetails.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunMessageDetails.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunRequestMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunRequestMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunRequestMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunRequestMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore/Messages/RaygunResponseMessage.cs b/Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunResponseMessage.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/Messages/RaygunResponseMessage.cs rename to Mindscape.Raygun4Net.NetCore.Common/Messages/RaygunResponseMessage.cs diff --git a/Mindscape.Raygun4Net.NetCore.Common/Mindscape.Raygun4Net.NetCore.Common.csproj b/Mindscape.Raygun4Net.NetCore.Common/Mindscape.Raygun4Net.NetCore.Common.csproj new file mode 100644 index 00000000..0744fdba --- /dev/null +++ b/Mindscape.Raygun4Net.NetCore.Common/Mindscape.Raygun4Net.NetCore.Common.csproj @@ -0,0 +1,19 @@ + + + netstandard1.6;netstandard2.0 + + + Raygun + .NetStandard library .NetCore applications + Mindscape.Raygun4Net.NetCore.Common + 6.0.0 + false + https://github.com/MindscapeHQ/raygun4net/blob/master/LICENSE + https://github.com/MindscapeHQ/raygun4net + https://app.raygun.com/Content/Images/nuget-icon.png + + + + + + \ No newline at end of file diff --git a/Mindscape.Raygun4Net.NetCore.Common/RaygunClientBase.cs b/Mindscape.Raygun4Net.NetCore.Common/RaygunClientBase.cs new file mode 100644 index 00000000..5a154b9c --- /dev/null +++ b/Mindscape.Raygun4Net.NetCore.Common/RaygunClientBase.cs @@ -0,0 +1,410 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Net.Http; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Mindscape.Raygun4Net +{ + public abstract class RaygunClientBase + { + private readonly string _apiKey; + private readonly List _wrapperExceptions = new List(); + protected readonly RaygunSettingsBase _settings; + + protected internal const string SentKey = "AlreadySentByRaygun"; + + public RaygunClientBase(RaygunSettingsBase settings) + { + _settings = settings; + _apiKey = settings.ApiKey; + + _wrapperExceptions.Add(typeof(TargetInvocationException)); + + if (!string.IsNullOrEmpty(settings.ApplicationVersion)) + { + ApplicationVersion = settings.ApplicationVersion; + } + } + + /// + /// Gets or sets the user identity string. + /// + public virtual string User { get; set; } + + /// + /// Gets or sets information about the user including the identity string. + /// + public virtual RaygunIdentifierMessage UserInfo { get; set; } + + /// + /// Gets or sets a custom application version identifier for all error messages sent to the Raygun endpoint. + /// + public string ApplicationVersion { get; set; } + + /// + /// Adds a list of outer exceptions that will be stripped, leaving only the valuable inner exception. + /// This can be used when a wrapper exception, e.g. TargetInvocationException or HttpUnhandledException, + /// contains the actual exception as the InnerException. The message and stack trace of the inner exception will then + /// be used by Raygun for grouping and display. The above two do not need to be added manually, + /// but if you have other wrapper exceptions that you want stripped you can pass them in here. + /// + /// Exception types that you want removed and replaced with their inner exception. + public void AddWrapperExceptions(params Type[] wrapperExceptions) + { + foreach (Type wrapper in wrapperExceptions) + { + if (!_wrapperExceptions.Contains(wrapper)) + { + _wrapperExceptions.Add(wrapper); + } + } + } + + /// + /// Specifies types of wrapper exceptions that Raygun should send rather than stripping out and sending the inner exception. + /// This can be used to remove the default wrapper exceptions (TargetInvocationException and HttpUnhandledException). + /// + /// Exception types that should no longer be stripped away. + public void RemoveWrapperExceptions(params Type[] wrapperExceptions) + { + foreach (Type wrapper in wrapperExceptions) + { + _wrapperExceptions.Remove(wrapper); + } + } + + protected virtual bool CanSend(Exception exception) + { + return exception == null || exception.Data == null || !exception.Data.Contains(SentKey) || false.Equals(exception.Data[SentKey]); + } + + protected void FlagAsSent(Exception exception) + { + if (exception != null && exception.Data != null) + { + try + { + Type[] genericTypes = exception.Data.GetType().GetTypeInfo().GenericTypeArguments; + + if (genericTypes.Length == 0 || genericTypes[0].GetTypeInfo().IsAssignableFrom(typeof(string))) + { + exception.Data[SentKey] = true; + } + } + catch (Exception ex) + { + Debug.WriteLine($"Failed to flag exception as sent: {ex.Message}"); + } + } + } + + /// + /// Raised just before a message is sent. This can be used to make final adjustments to the , or to cancel the send. + /// + public event EventHandler SendingMessage; + + private bool _handlingRecursiveErrorSending; + + // Returns true if the message can be sent, false if the sending is canceled. + protected bool OnSendingMessage(RaygunMessage raygunMessage) + { + bool result = true; + + if (!_handlingRecursiveErrorSending) + { + EventHandler handler = SendingMessage; + + if (handler != null) + { + RaygunSendingMessageEventArgs args = new RaygunSendingMessageEventArgs(raygunMessage); + + try + { + handler(this, args); + } + catch (Exception e) + { + // Catch and send exceptions that occur in the SendingMessage event handler. + // Set the _handlingRecursiveErrorSending flag to prevent infinite errors. + _handlingRecursiveErrorSending = true; + + Send(e); + + _handlingRecursiveErrorSending = false; + } + + result = !args.Cancel; + } + } + + return result; + } + + /// + /// Raised before a message is sent. This can be used to add a custom grouping key to a RaygunMessage before sending it to the Raygun service. + /// + public event EventHandler CustomGroupingKey; + + private bool _handlingRecursiveGrouping; + + protected async Task OnCustomGroupingKey(Exception exception, RaygunMessage message) + { + string result = null; + + if (!_handlingRecursiveGrouping) + { + var handler = CustomGroupingKey; + + if (handler != null) + { + var args = new RaygunCustomGroupingKeyEventArgs(exception, message); + + try + { + handler(this, args); + } + catch (Exception e) + { + _handlingRecursiveGrouping = true; + + await SendAsync(e, null, null); + + _handlingRecursiveGrouping = false; + } + + result = args.CustomGroupingKey; + } + } + + return result; + } + + protected bool ValidateApiKey() + { + if (string.IsNullOrEmpty(_apiKey)) + { + Debug.WriteLine("ApiKey has not been provided, exception will not be logged"); + return false; + } + + return true; + } + + protected virtual bool CanSend(RaygunMessage message) + { + return true; + } + + /// + /// Transmits an exception to Raygun synchronously. + /// + /// The exception to deliver. + public void Send(Exception exception) + { + Send(exception, null, null); + } + + /// + /// Transmits an exception to Raygun synchronously specifying a list of string tags associated + /// with the message for identification. + /// + /// The exception to deliver. + /// A list of strings associated with the message. + public void Send(Exception exception, IList tags) + { + Send(exception, tags, null); + } + + /// + /// Transmits an exception to Raygun synchronously specifying a list of string tags associated + /// with the message for identification, as well as sending a key-value collection of custom data. + /// + /// The exception to deliver. + /// A list of strings associated with the message. + /// A key-value collection of custom data that will be added to the payload. + public void Send(Exception exception, IList tags, IDictionary userCustomData) + { + SendAsync(exception, tags, userCustomData).Wait(); + } + + protected virtual async Task SendAsync(Exception exception, IList tags, IDictionary userCustomData) + { + if (CanSend(exception)) + { + await StripAndSend(exception, tags, userCustomData); + FlagAsSent(exception); + } + } + + /// + /// Asynchronously transmits a message to Raygun. + /// + /// The exception to deliver. + public Task SendInBackground(Exception exception) + { + return SendInBackground(exception, null, null); + } + + /// + /// Asynchronously transmits an exception to Raygun. + /// + /// The exception to deliver. + /// A list of strings associated with the message. + public Task SendInBackground(Exception exception, IList tags) + { + return SendInBackground(exception, tags, null); + } + + /// + /// Asynchronously transmits an exception to Raygun. + /// + /// The exception to deliver. + /// A list of strings associated with the message. + /// A key-value collection of custom data that will be added to the payload. + public virtual async Task SendInBackground(Exception exception, IList tags, IDictionary userCustomData) + { + if (CanSend(exception)) + { + var task = Task.Run(async () => + { + await StripAndSend(exception, tags, userCustomData); + }); + + FlagAsSent(exception); + + await task; + } + } + + /// + /// Asynchronously transmits a message to Raygun. + /// + /// The RaygunMessage to send. This needs its OccurredOn property + /// set to a valid DateTime and as much of the Details property as is available. + public Task SendInBackground(RaygunMessage raygunMessage) + { + return Task.Run(() => Send(raygunMessage)); + } + + internal void FlagExceptionAsSent(Exception exception) + { + FlagAsSent(exception); + } + + protected virtual async Task BuildMessage(Exception exception, IList tags, IDictionary userCustomData) + { + var message = RaygunMessageBuilder.New(_settings) + .SetEnvironmentDetails() + .SetMachineName(Environment.MachineName) + .SetExceptionDetails(exception) + .SetClientDetails() + .SetVersion(ApplicationVersion) + .SetTags(tags) + .SetUserCustomData(userCustomData) + .SetUser(UserInfo ?? (!String.IsNullOrEmpty(User) ? new RaygunIdentifierMessage(User) : null)) + .Build(); + + var customGroupingKey = await OnCustomGroupingKey(exception, message); + + if (string.IsNullOrEmpty(customGroupingKey) == false) + { + message.Details.GroupingKey = customGroupingKey; + } + + return message; + } + + protected async Task StripAndSend(Exception exception, IList tags, IDictionary userCustomData) + { + foreach (Exception e in StripWrapperExceptions(exception)) + { + await Send(await BuildMessage(e, tags, userCustomData)); + } + } + + protected IEnumerable StripWrapperExceptions(Exception exception) + { + if (exception != null && _wrapperExceptions.Any(wrapperException => exception.GetType() == wrapperException && exception.InnerException != null)) + { + AggregateException aggregate = exception as AggregateException; + + if (aggregate != null) + { + foreach (Exception e in aggregate.InnerExceptions) + { + foreach (Exception ex in StripWrapperExceptions(e)) + { + yield return ex; + } + } + } + else + { + foreach (Exception e in StripWrapperExceptions(exception.InnerException)) + { + yield return e; + } + } + } + else + { + yield return exception; + } + } + + /// + /// Posts a RaygunMessage to the Raygun api endpoint. + /// + /// The RaygunMessage to send. This needs its OccurredOn property + /// set to a valid DateTime and as much of the Details property as is available. + public async Task Send(RaygunMessage raygunMessage) + { + if (ValidateApiKey()) + { + bool canSend = OnSendingMessage(raygunMessage) && CanSend(raygunMessage); + + if (canSend) + { + using (var client = new HttpClient()) + { + var requestMessage = new HttpRequestMessage(HttpMethod.Post, _settings.ApiEndpoint); + + requestMessage.Headers.Add("X-ApiKey", _apiKey); + + try + { + var message = SimpleJson.SerializeObject(raygunMessage); + requestMessage.Content = new StringContent(message, Encoding.UTF8, "application/json"); + + var result = await client.SendAsync(requestMessage); + + if (!result.IsSuccessStatusCode) + { + Debug.WriteLine($"Error Logging Exception to Raygun {result.ReasonPhrase}"); + + if (_settings.ThrowOnError) + { + throw new Exception("Could not log to Raygun"); + } + } + } + catch (Exception ex) + { + Debug.WriteLine($"Error Logging Exception to Raygun {ex.Message}"); + + if (_settings.ThrowOnError) + { + throw; + } + } + } + } + } + } + } +} diff --git a/Mindscape.Raygun4Net.NetCore/RaygunCustomGroupingKeyEventArgs.cs b/Mindscape.Raygun4Net.NetCore.Common/RaygunCustomGroupingKeyEventArgs.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/RaygunCustomGroupingKeyEventArgs.cs rename to Mindscape.Raygun4Net.NetCore.Common/RaygunCustomGroupingKeyEventArgs.cs diff --git a/Mindscape.Raygun4Net.NetCore/RaygunSendingMessageEventArgs.cs b/Mindscape.Raygun4Net.NetCore.Common/RaygunSendingMessageEventArgs.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/RaygunSendingMessageEventArgs.cs rename to Mindscape.Raygun4Net.NetCore.Common/RaygunSendingMessageEventArgs.cs diff --git a/Mindscape.Raygun4Net.NetCore.Common/RaygunSettings.cs b/Mindscape.Raygun4Net.NetCore.Common/RaygunSettings.cs new file mode 100644 index 00000000..6e280481 --- /dev/null +++ b/Mindscape.Raygun4Net.NetCore.Common/RaygunSettings.cs @@ -0,0 +1,22 @@ +using System; + +namespace Mindscape.Raygun4Net +{ + public abstract class RaygunSettingsBase + { + internal const string DefaultApiEndPoint = "https://api.raygun.com/entries"; + + public RaygunSettingsBase() + { + ApiEndpoint = new Uri(DefaultApiEndPoint); + } + + public string ApiKey { get; set; } + + public Uri ApiEndpoint { get; set; } + + public bool ThrowOnError { get; set; } + + public string ApplicationVersion { get; set; } + } +} diff --git a/Mindscape.Raygun4Net.NetCore/SimpleJson.cs b/Mindscape.Raygun4Net.NetCore.Common/SimpleJson.cs similarity index 100% rename from Mindscape.Raygun4Net.NetCore/SimpleJson.cs rename to Mindscape.Raygun4Net.NetCore.Common/SimpleJson.cs diff --git a/Mindscape.Raygun4Net.NetCore.sln b/Mindscape.Raygun4Net.NetCore.sln index 039510b8..353e3d1f 100644 --- a/Mindscape.Raygun4Net.NetCore.sln +++ b/Mindscape.Raygun4Net.NetCore.sln @@ -4,6 +4,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.NetCor EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.NetCore.Tests", "Mindscape.Raygun4Net.NetCore.Tests\Mindscape.Raygun4Net.NetCore.Tests.csproj", "{E4DF3C6D-3BCD-43A5-BA45-A37B9D0C6C24}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mindscape.Raygun4Net.NetCore.Common", "Mindscape.Raygun4Net.NetCore.Common\Mindscape.Raygun4Net.NetCore.Common.csproj", "{B271B8EB-A183-4227-945F-45A8D6F7E2C4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -18,5 +20,9 @@ Global {E4DF3C6D-3BCD-43A5-BA45-A37B9D0C6C24}.Debug|Any CPU.Build.0 = Debug|Any CPU {E4DF3C6D-3BCD-43A5-BA45-A37B9D0C6C24}.Release|Any CPU.ActiveCfg = Release|Any CPU {E4DF3C6D-3BCD-43A5-BA45-A37B9D0C6C24}.Release|Any CPU.Build.0 = Release|Any CPU + {B271B8EB-A183-4227-945F-45A8D6F7E2C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B271B8EB-A183-4227-945F-45A8D6F7E2C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B271B8EB-A183-4227-945F-45A8D6F7E2C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B271B8EB-A183-4227-945F-45A8D6F7E2C4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilderBase.cs b/Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilderBase.cs deleted file mode 100644 index 4e320f8c..00000000 --- a/Mindscape.Raygun4Net.NetCore/Builders/RaygunErrorMessageBuilderBase.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Reflection; -using System.Text; - -namespace Mindscape.Raygun4Net -{ - public abstract class RaygunErrorMessageBuilderBase - { - protected static string FormatTypeName(Type type, bool fullName) - { - string name = fullName ? type.FullName : type.Name; - if (!type.IsConstructedGenericType) - { - return name; - } - - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.Append(name.Substring(0, name.IndexOf("`"))); - stringBuilder.Append("<"); - foreach (Type t in type.GenericTypeArguments) - { - stringBuilder.Append(FormatTypeName(t, false)).Append(","); - } - stringBuilder.Remove(stringBuilder.Length - 1, 1); - stringBuilder.Append(">"); - - return stringBuilder.ToString(); - } - - protected static string GenerateMethodName(MethodBase method) - { - var stringBuilder = new StringBuilder(); - - stringBuilder.Append(method.Name); - - bool first = true; - - if (method is MethodInfo && method.IsGenericMethod) - { - Type[] genericArguments = method.GetGenericArguments(); - stringBuilder.Append("["); - - for (int i = 0; i < genericArguments.Length; i++) - { - if (!first) - { - stringBuilder.Append(","); - } - else - { - first = false; - } - - stringBuilder.Append(genericArguments[i].Name); - } - - stringBuilder.Append("]"); - } - - stringBuilder.Append("("); - - ParameterInfo[] parameters = method.GetParameters(); - - first = true; - - for (int i = 0; i < parameters.Length; ++i) - { - if (!first) - { - stringBuilder.Append(", "); - } - else - { - first = false; - } - - string type = ""; - - if (parameters[i].ParameterType != null) - { - type = parameters[i].ParameterType.Name; - } - - stringBuilder.Append(type + " " + parameters[i].Name); - } - - stringBuilder.Append(")"); - - return stringBuilder.ToString(); - } - } -} diff --git a/Mindscape.Raygun4Net.NetCore/IRaygunMessageBuilder.cs b/Mindscape.Raygun4Net.NetCore/IRaygunMessageBuilder.cs deleted file mode 100644 index 9a0118bb..00000000 --- a/Mindscape.Raygun4Net.NetCore/IRaygunMessageBuilder.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Mindscape.Raygun4Net -{ - public interface IRaygunMessageBuilder - { - RaygunMessage Build(); - - IRaygunMessageBuilder SetMachineName(string machineName); - - IRaygunMessageBuilder SetExceptionDetails(Exception exception); - - IRaygunMessageBuilder SetClientDetails(); - - IRaygunMessageBuilder SetEnvironmentDetails(); - - IRaygunMessageBuilder SetVersion(string version); - - IRaygunMessageBuilder SetUserCustomData(IDictionary userCustomData); - - IRaygunMessageBuilder SetTags(IList tags); - - IRaygunMessageBuilder SetUser(RaygunIdentifierMessage user); - } -} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.NetCore/Mindscape.Raygun4Net.NetCore.csproj b/Mindscape.Raygun4Net.NetCore/Mindscape.Raygun4Net.NetCore.csproj index c4bf7ed9..2c22b8c8 100644 --- a/Mindscape.Raygun4Net.NetCore/Mindscape.Raygun4Net.NetCore.csproj +++ b/Mindscape.Raygun4Net.NetCore/Mindscape.Raygun4Net.NetCore.csproj @@ -3,7 +3,7 @@ Mindscape.Raygun4Net.NetCore Mindscape.Raygun4Net.NetCore false - netstandard2.0;netstandard1.6 + netstandard1.6;netstandard2.0 .NETStandard false @@ -12,21 +12,15 @@ Raygun .NetStandard library for targeting .Net Core applications Mindscape.Raygun4Net.NetCore - 5.5.4 + 6.0.0 false https://github.com/MindscapeHQ/raygun4net/blob/master/LICENSE https://github.com/MindscapeHQ/raygun4net https://app.raygun.com/Content/Images/nuget-icon.png - - - - - - @@ -45,4 +39,7 @@ + + + \ No newline at end of file diff --git a/Mindscape.Raygun4Net.NetCore/Properties/AssemblyInfo.cs b/Mindscape.Raygun4Net.NetCore/Properties/AssemblyInfo.cs index 041eb30f..c68f4749 100644 --- a/Mindscape.Raygun4Net.NetCore/Properties/AssemblyInfo.cs +++ b/Mindscape.Raygun4Net.NetCore/Properties/AssemblyInfo.cs @@ -21,3 +21,5 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("a5a4b4f9-058f-489e-9bd2-2d540247ead8")] + +[assembly: InternalsVisibleTo("Mindscape.Raygun4Net.AspNetCore")] diff --git a/Mindscape.Raygun4Net.NetCore/Properties/AssemblyVersionInfo.cs b/Mindscape.Raygun4Net.NetCore/Properties/AssemblyVersionInfo.cs index 44562b7e..6f61c6c8 100644 --- a/Mindscape.Raygun4Net.NetCore/Properties/AssemblyVersionInfo.cs +++ b/Mindscape.Raygun4Net.NetCore/Properties/AssemblyVersionInfo.cs @@ -12,5 +12,5 @@ // 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("5.5.4")] -[assembly: AssemblyFileVersion("5.5.4")] +[assembly: AssemblyVersion("6.0.0")] +[assembly: AssemblyFileVersion("6.0.0")] diff --git a/Mindscape.Raygun4Net.NetCore/RaygunClient.cs b/Mindscape.Raygun4Net.NetCore/RaygunClient.cs index f03db482..19181b9f 100644 --- a/Mindscape.Raygun4Net.NetCore/RaygunClient.cs +++ b/Mindscape.Raygun4Net.NetCore/RaygunClient.cs @@ -1,415 +1,14 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Net.Http; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; - -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net { - public class RaygunClient - { - private readonly string _apiKey; - private readonly List _wrapperExceptions = new List(); - private readonly RaygunSettings _settings; - - protected internal const string SentKey = "AlreadySentByRaygun"; - - public RaygunClient(string apiKey) - : this(new RaygunSettings { ApiKey = apiKey }) + public class RaygunClient : RaygunClientBase { - } - - public RaygunClient(RaygunSettings settings) - { - _settings = settings; - _apiKey = settings.ApiKey; - - _wrapperExceptions.Add(typeof(TargetInvocationException)); - - if (!string.IsNullOrEmpty(settings.ApplicationVersion)) - { - ApplicationVersion = settings.ApplicationVersion; - } - } - - /// - /// Gets or sets the user identity string. - /// - public virtual string User { get; set; } - - /// - /// Gets or sets information about the user including the identity string. - /// - public virtual RaygunIdentifierMessage UserInfo { get; set; } - - /// - /// Gets or sets a custom application version identifier for all error messages sent to the Raygun endpoint. - /// - public string ApplicationVersion { get; set; } - - /// - /// Adds a list of outer exceptions that will be stripped, leaving only the valuable inner exception. - /// This can be used when a wrapper exception, e.g. TargetInvocationException or HttpUnhandledException, - /// contains the actual exception as the InnerException. The message and stack trace of the inner exception will then - /// be used by Raygun for grouping and display. The above two do not need to be added manually, - /// but if you have other wrapper exceptions that you want stripped you can pass them in here. - /// - /// Exception types that you want removed and replaced with their inner exception. - public void AddWrapperExceptions(params Type[] wrapperExceptions) - { - foreach (Type wrapper in wrapperExceptions) - { - if (!_wrapperExceptions.Contains(wrapper)) - { - _wrapperExceptions.Add(wrapper); - } - } - } - - /// - /// Specifies types of wrapper exceptions that Raygun should send rather than stripping out and sending the inner exception. - /// This can be used to remove the default wrapper exceptions (TargetInvocationException and HttpUnhandledException). - /// - /// Exception types that should no longer be stripped away. - public void RemoveWrapperExceptions(params Type[] wrapperExceptions) - { - foreach (Type wrapper in wrapperExceptions) - { - _wrapperExceptions.Remove(wrapper); - } - } - - protected virtual bool CanSend(Exception exception) - { - return exception == null || exception.Data == null || !exception.Data.Contains(SentKey) || false.Equals(exception.Data[SentKey]); - } - - protected void FlagAsSent(Exception exception) - { - if (exception != null && exception.Data != null) - { - try - { - Type[] genericTypes = exception.Data.GetType().GetTypeInfo().GenericTypeArguments; - - if (genericTypes.Length == 0 || genericTypes[0].GetTypeInfo().IsAssignableFrom(typeof(string))) - { - exception.Data[SentKey] = true; - } - } - catch (Exception ex) - { - Debug.WriteLine($"Failed to flag exception as sent: {ex.Message}"); - } - } - } - - /// - /// Raised just before a message is sent. This can be used to make final adjustments to the , or to cancel the send. - /// - public event EventHandler SendingMessage; - - private bool _handlingRecursiveErrorSending; - - // Returns true if the message can be sent, false if the sending is canceled. - protected bool OnSendingMessage(RaygunMessage raygunMessage) - { - bool result = true; - - if (!_handlingRecursiveErrorSending) - { - EventHandler handler = SendingMessage; - - if (handler != null) - { - RaygunSendingMessageEventArgs args = new RaygunSendingMessageEventArgs(raygunMessage); - - try - { - handler(this, args); - } - catch (Exception e) - { - // Catch and send exceptions that occur in the SendingMessage event handler. - // Set the _handlingRecursiveErrorSending flag to prevent infinite errors. - _handlingRecursiveErrorSending = true; - - Send(e); - - _handlingRecursiveErrorSending = false; - } - - result = !args.Cancel; - } - } - - return result; - } - - /// - /// Raised before a message is sent. This can be used to add a custom grouping key to a RaygunMessage before sending it to the Raygun service. - /// - public event EventHandler CustomGroupingKey; - - private bool _handlingRecursiveGrouping; - - protected async Task OnCustomGroupingKey(Exception exception, RaygunMessage message) - { - string result = null; - - if (!_handlingRecursiveGrouping) - { - var handler = CustomGroupingKey; - - if (handler != null) - { - var args = new RaygunCustomGroupingKeyEventArgs(exception, message); - - try - { - handler(this, args); - } - catch (Exception e) - { - _handlingRecursiveGrouping = true; - - await SendAsync(e, null, null); - - _handlingRecursiveGrouping = false; - } - - result = args.CustomGroupingKey; - } - } - - return result; - } - - protected bool ValidateApiKey() - { - if (string.IsNullOrEmpty(_apiKey)) - { - Debug.WriteLine("ApiKey has not been provided, exception will not be logged"); - return false; - } - - return true; - } - - protected bool CanSend(RaygunMessage message) - { - return true; - } - - /// - /// Transmits an exception to Raygun synchronously. - /// - /// The exception to deliver. - public void Send(Exception exception) - { - Send(exception, null, null); - } - - /// - /// Transmits an exception to Raygun synchronously specifying a list of string tags associated - /// with the message for identification. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - public void Send(Exception exception, IList tags) - { - Send(exception, tags, null); - } - - /// - /// Transmits an exception to Raygun synchronously specifying a list of string tags associated - /// with the message for identification, as well as sending a key-value collection of custom data. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - /// A key-value collection of custom data that will be added to the payload. - public void Send(Exception exception, IList tags, IDictionary userCustomData) - { - SendAsync(exception, tags, userCustomData).Wait(); - } - - private async Task SendAsync(Exception exception, IList tags, IDictionary userCustomData) - { - if (CanSend(exception)) - { - await StripAndSend(exception, tags, userCustomData); - FlagAsSent(exception); - } - } - - /// - /// Asynchronously transmits a message to Raygun. - /// - /// The exception to deliver. - public Task SendInBackground(Exception exception) - { - return SendInBackground(exception, null, null); - } - - /// - /// Asynchronously transmits an exception to Raygun. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - public Task SendInBackground(Exception exception, IList tags) - { - return SendInBackground(exception, tags, null); - } - - /// - /// Asynchronously transmits an exception to Raygun. - /// - /// The exception to deliver. - /// A list of strings associated with the message. - /// A key-value collection of custom data that will be added to the payload. - public async Task SendInBackground(Exception exception, IList tags, IDictionary userCustomData) - { - if (CanSend(exception)) - { - var task = Task.Run(async () => + public RaygunClient(string apiKey) + : this(new RaygunSettings { ApiKey = apiKey }) { - await StripAndSend(exception, tags, userCustomData); - }); - - FlagAsSent(exception); - - await task; - } - } - - /// - /// Asynchronously transmits a message to Raygun. - /// - /// The RaygunMessage to send. This needs its OccurredOn property - /// set to a valid DateTime and as much of the Details property as is available. - public Task SendInBackground(RaygunMessage raygunMessage) - { - return Task.Run(() => Send(raygunMessage)); - } - - internal void FlagExceptionAsSent(Exception exception) - { - FlagAsSent(exception); - } - - protected async Task BuildMessage(Exception exception, IList tags, IDictionary userCustomData) - { - var message = RaygunMessageBuilder.New(_settings) - .SetEnvironmentDetails() - .SetMachineName(Environment.MachineName) - .SetExceptionDetails(exception) - .SetClientDetails() - .SetVersion(ApplicationVersion) - .SetTags(tags) - .SetUserCustomData(userCustomData) - .SetUser(UserInfo ?? (!String.IsNullOrEmpty(User) ? new RaygunIdentifierMessage(User) : null)) - .Build(); - - var customGroupingKey = await OnCustomGroupingKey(exception, message); - - if (string.IsNullOrEmpty(customGroupingKey) == false) - { - message.Details.GroupingKey = customGroupingKey; - } - - return message; - } - - private async Task StripAndSend(Exception exception, IList tags, IDictionary userCustomData) - { - foreach (Exception e in StripWrapperExceptions(exception)) - { - await Send(await BuildMessage(e, tags, userCustomData)); - } - } - - protected IEnumerable StripWrapperExceptions(Exception exception) - { - if (exception != null && _wrapperExceptions.Any(wrapperException => exception.GetType() == wrapperException && exception.InnerException != null)) - { - AggregateException aggregate = exception as AggregateException; - - if (aggregate != null) - { - foreach (Exception e in aggregate.InnerExceptions) - { - foreach (Exception ex in StripWrapperExceptions(e)) - { - yield return ex; - } - } } - else - { - foreach (Exception e in StripWrapperExceptions(exception.InnerException)) - { - yield return e; - } - } - } - else - { - yield return exception; - } - } - - /// - /// Posts a RaygunMessage to the Raygun api endpoint. - /// - /// The RaygunMessage to send. This needs its OccurredOn property - /// set to a valid DateTime and as much of the Details property as is available. - public async Task Send(RaygunMessage raygunMessage) - { - if (ValidateApiKey()) - { - bool canSend = OnSendingMessage(raygunMessage) && CanSend(raygunMessage); - if (canSend) + public RaygunClient(RaygunSettingsBase settings) : base(settings) { - using (var client = new HttpClient()) - { - var requestMessage = new HttpRequestMessage(HttpMethod.Post, _settings.ApiEndpoint); - - requestMessage.Headers.Add("X-ApiKey", _apiKey); - - try - { - var message = SimpleJson.SerializeObject(raygunMessage); - requestMessage.Content = new StringContent(message, Encoding.UTF8, "application/json"); - - var result = await client.SendAsync(requestMessage); - - if (!result.IsSuccessStatusCode) - { - Debug.WriteLine($"Error Logging Exception to Raygun {result.ReasonPhrase}"); - - if (_settings.ThrowOnError) - { - throw new Exception("Could not log to Raygun"); - } - } - } - catch (Exception ex) - { - Debug.WriteLine($"Error Logging Exception to Raygun {ex.Message}"); - - if (_settings.ThrowOnError) - { - throw; - } - } - } } - } } - } -} +} \ No newline at end of file diff --git a/Mindscape.Raygun4Net.NetCore/RaygunSettings.cs b/Mindscape.Raygun4Net.NetCore/RaygunSettings.cs index baab733d..e18e130a 100644 --- a/Mindscape.Raygun4Net.NetCore/RaygunSettings.cs +++ b/Mindscape.Raygun4Net.NetCore/RaygunSettings.cs @@ -1,22 +1,7 @@ -using System; - -namespace Mindscape.Raygun4Net +namespace Mindscape.Raygun4Net { - public class RaygunSettings - { - private const string DefaultApiEndPoint = "https://api.raygun.com/entries"; - - public RaygunSettings() + public class RaygunSettings : RaygunSettingsBase { - ApiEndpoint = new Uri(DefaultApiEndPoint); + } - - public string ApiKey { get; set; } - - public Uri ApiEndpoint { get; set; } - - public bool ThrowOnError { get; set; } - - public string ApplicationVersion { get; set; } - } -} +} \ No newline at end of file diff --git a/buildAspNetCore.ps1 b/buildAspNetCore.ps1 index f6ac9102..08a42bce 100644 --- a/buildAspNetCore.ps1 +++ b/buildAspNetCore.ps1 @@ -1 +1,2 @@ dotnet pack .\Mindscape.Raygun4Net.AspNetCore\ --output build\AspNetCore --configuration Release +dotnet pack .\Mindscape.Raygun4Net.NetCore.Common\ --output build\NetCoreCommon --configuration Release \ No newline at end of file diff --git a/buildNetCore.ps1 b/buildNetCore.ps1 index 7a60b54b..5e21b982 100644 --- a/buildNetCore.ps1 +++ b/buildNetCore.ps1 @@ -3,6 +3,7 @@ properties { $configuration = "Release" $build_dir = "$root\build\" $build_dir_net_core = "$build_dir\NetCore" + $build_dir_net_core_common = "$build_dir\NetCoreCommon" $nunit_dir = "$root\packages\NUnit.Runners.2.6.2\tools\" $tools_dir = "$root\tools" $nuget_dir = "$root\.nuget" @@ -13,13 +14,18 @@ task default -depends Compile task Clean { remove-item -force -recurse $build_dir_net_core -ErrorAction SilentlyContinue | Out-Null + remove-item -force -recurse $build_dir_net_core_common -ErrorAction SilentlyContinue | Out-Null } task Init -depends Clean { new-item $build_dir_net_core -itemType directory | Out-Null + new-item $build_dir_net_core_common -itemType directory | Out-Null } task Compile -depends Init { - exec { dotnet pack .\Mindscape.Raygun4Net.NetCore\ --output build\NetCore --configuration Release } + exec { dotnet pack .\Mindscape.Raygun4Net.NetCore.Common\ --output build\NetCoreCommon --configuration Release } + move-item -Path $root\Mindscape.Raygun4Net.NetCore.Common\build\NetCoreCommon\* -Destination $build_dir_net_core_common + + exec { dotnet pack .\Mindscape.Raygun4Net.NetCore\ --output build\NetCore --configuration Release } move-item -Path $root\Mindscape.Raygun4Net.NetCore\build\NetCore\* -Destination $build_dir_net_core } \ No newline at end of file diff --git a/readme.txt b/readme.txt deleted file mode 100644 index 459d5a74..00000000 --- a/readme.txt +++ /dev/null @@ -1,360 +0,0 @@ -Raygun4Net - Raygun Provider for .NET Framework -=================== - -Using Raygun4Net in an Mvc or WebApi project? -==================== -If so, then this is not the NuGet package you are looking for. - -If you have an MVC project, please uninstall this package, and install the Raygun4Net.Mvc package instead. -The Raygun4Net.Mvc package includes all the functionality of this package + MVC specific support. - -If you have a WebApi project, please uninstall this package, and install the Raygun4Net.WebApi package instead. -The Raygun4Net.WebApi package only includes WebApi specific support and does not reference System.Web - -NOTE: the Mvc and WebApi packages can work side-by-side, so install both if you have an Mvc WebApi project. - -Where is my app API key? -==================== -When you create a new application in your Raygun dashboard, your app API key is displayed at the top of the instructions page. -You can also find the API key by clicking the "Application Settings" button in the side bar of the Raygun dashboard. - -Namespace -==================== -The main classes can be found in the Mindscape.Raygun4Net namespace. - -Supported platforms/frameworks -==================== - -Projects built with the following frameworks are supported: - -* .NET 2.0, 3.5, 4.0, 4.5 -* .NET 3.5 and 4.0 Client Profile -* .NET Core 1, 2 -* ASP.NET -* WinForms, WPF, console apps etc. -* Windows Store apps (universal) for Windows 8.1 and Windows Phone 8.1 -* Windows 8 -* Windows Phone 7.1 and 8 -* WinRT -* Xamarin.iOS and Xamarin.Mac (Both unified and classic) -* Xamarin.Android - -The NuGet package will select the appropriate dll to use for your project. - -Usage -==================== - -The Raygun4Net provider includes support for many .NET frameworks. -Scroll down to find information about using Raygun for your type of application. - -ASP.NET -==================== -Add a section to configSections: - -
- -Add the Raygun settings configuration block from above: - - - -Now you can either setup Raygun to send unhandled exceptions automatically or/and send exceptions manually. - -To send unhandled exceptions automatically, use the RaygunHttpModule in web.config in the appropriate way for your application: - -For system.web: - - - - - -For system.webServer: - - - - - -Anywhere in you code, you can also send exception reports manually simply by creating a new instance of the RaygunClient and call one of the Send or SendInBackground methods. -This is most commonly used to send exceptions caught in a try/catch block. - -try -{ - -} -catch (Exception e) -{ - new RaygunClient().SendInBackground(e); -} - -Or to send exceptions in your own handlers rather than using the http module described above. - -protected void Application_Error() -{ - var exception = Server.GetLastError(); - new RaygunClient().Send(exception); -} - -Additional ASP.NET configuration options -======================================== - -Exclude errors by HTTP status code ----------------------------------- - -If using the HTTP module then you can exclude errors by their HTTP status code by providing a comma separated list of status codes to ignore in the configuration. For example if you wanted to exclude errors that return the [I'm a teapot](http://tools.ietf.org/html/rfc2324) response code, you could use the configuration below. - - - -Exclude errors that originate from a local origin -------------------------------------------------- - -Toggle this boolean and the HTTP module will not send errors to Raygun if the request originated from a local origin. i.e. A way to prevent local debug/development from notifying Raygun without having to resort to Web.config transforms. - - - -Remove sensitive request data ------------------------------ - -If you have sensitive data in an HTTP request that you wish to prevent being transmitted to Raygun, you can provide lists of possible keys (names) to remove. -Keys to ignore can be specified on the RaygunSettings tag in web.config, (or you can use the equivalent methods on RaygunClient if you are setting things up in code). -The available options are: - -ignoreFormFieldNames -ignoreHeaderNames -ignoreCookieNames -ignoreServerVariableNames - -These can be set to be a comma separated list of keys to ignore. Setting an option as * will indicate that all the keys will not be sent to Raygun. -Placing * before, after or at both ends of a key will perform an ends-with, starts-with or contains operation respectively. -For example, ignoreFormFieldNames="*password*" will cause Raygun to ignore all form fields that contain "password" anywhere in the name. -These options are not case sensitive. - -Providing a custom RaygunClient to the http module --------------------------------------------------- - -Sometimes when setting up Raygun using the http module to send exceptions automatically, you may need to provide the http module with a custom RaygunClient instance in order to use some of the optional feature described at the end of this file. -To do this, get your Http Application to implement the IRaygunApplication interface. Implement the GenerateRaygunClient method to return a new (or previously created) RaygunClient instance. -The http module will use the RaygunClient returned from this method to send the unhandled exceptions. -In this method you can setup any additional options on the RaygunClient instance that you need - more information about each feature is described at the end of this file. - -MVC -==================== - -As of version 4.0.0, Mvc support has been moved into a new NuGet package. -If you have an Mvc project, please uninstall this NuGet package and install the Mindscape.Raygun4Net.Mvc NuGet package instead. -The NuGet package will include a readme containing everything you need to know about using it. - -The Mvc and WebApi NuGet packages can be installed in the same project. - -Web Api -==================== - -As of version 4.0.0, WebApi support has been moved into a new NuGet package. -If you have a WebApi project, please uninstall this NuGet package and install the Mindscape.Raygun4Net.WebApi NuGet package instead. -The NuGet package will include a readme containing everything you need to know about using it. - -The Mvc and WebApi NuGet packages can be installed in the same project. - -WPF -==================== -Create an instance of RaygunClient by passing your app API key in the constructor. -Attach an event handler to the DispatcherUnhandledException event of your application. -In the event handler, use the RaygunClient.Send method to send the Exception. - -private RaygunClient _client = new RaygunClient("YOUR_APP_API_KEY"); - -public App() -{ - DispatcherUnhandledException += OnDispatcherUnhandledException; -} - -void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) -{ - _client.Send(e.Exception); -} - -WinForms -==================== -Create an instance of RaygunClient by passing your app API key in the constructor. -Attach an event handler to the Application.ThreadException event BEFORE calling Application.Run(...). -In the event handler, use the RaygunClient.Send method to send the Exception. - -private static readonly RaygunClient _raygunClient = new RaygunClient("YOUR_APP_API_KEY"); - -[STAThread] -static void Main() -{ - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - - Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); - - Application.Run(new Form1()); -} - -private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) -{ - _raygunClient.Send(e.Exception); -} - -Windows Store Apps (Windows 8.1 and Windows Phone 8.1) -==================== - -In the App.xaml.cs constructor (or any central entry point in your application), call the static RaygunClient.Attach method using your API key. This will catch and send all unhandled exception to Raygun for you. - -public App() -{ - RaygunClient.Attach("YOUR_APP_API_KEY"); -} - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages (via the Send methods) or changing options such as the User identity string. - -You can manually send exceptions with the SendAsync method. When manually sending, currently the compiler does not allow you to use `await` in a catch block. You can however call SendAsync in a blocking way: - -try -{ - throw new Exception("foo"); -} -catch (Exception e) -{ - RaygunClient.Current.SendAsync(e); -} - -WinRT -==================== -In the App.xaml.cs constructor (or any main entry point to your application), call the static RaygunClient.Attach method using your API key. - -public App() -{ - RaygunClient.Attach("YOUR_APP_API_KEY"); -} - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages (via the Send methods) or changing options such as the User identity string. - -Limitations of WinRT UnhandledException event and Wrap() workarounds -==================== -The options available in WinRT for catching unhandled exceptions at this point in time are more limited -compared to the options in the more mature .NET framework. The UnhandledException event will be raised when -invalid XAML is parsed, in addition to other runtime exceptions that happen on the main UI thread. While -many errors will be picked up this way and therefore be able to be sent to Raygun, others will be missed by -this exception handler. In particular asynchronous code or Tasks that execute on background threads will -not have their exceptions caught. - -A workaround for this issue is provided with the Wrap() method. These allow you to pass the code you want -to execute to an instance of the Raygun client - it will simply call it surrounded by a try-catch block. -If the method you pass in does result in an exception being thrown this will be transmitted to Raygun, and -the exception will again be thrown. Two overloads are available; one for methods that return void and -another for methods that return an object. - -Windows Phone 7.1 and 8 -======================= -In the App.xaml.cs constructor (or any main entry point to your application), call the static RaygunClient.Attach method using your API key. - -RaygunClient.Attach("YOUR_APP_API_KEY"); - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages (via the Send methods) or changing options such as the User identity string. - -Xamarin for Android -==================== -In the main/entry Activity of your application, use the static RaygunClient.Attach method using your app API key. -There is also an overload for the Attach method that lets you pass in a user-identity string which is useful for tracking affected users in your Raygun dashboard. - -RaygunClient.Attach("YOUR_APP_API_KEY"); - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages or changing options such as the User identity string. - -Xamarin for iOS -==================== -In the main entry point of the application, use the static RaygunClient.Attach method using your app API key. - -static void Main(string[] args) -{ - RaygunClient.Attach("YOUR_APP_API_KEY"); - - UIApplication.Main(args, null, "AppDelegate"); -} - -There is also an overload for the Attach method that lets you enable native iOS crash reporting. - -static void Main(string[] args) -{ - RaygunClient.Attach("YOUR_APP_API_KEY", true, true); - - UIApplication.Main(args, null, "AppDelegate"); -} - -The first boolean parameter is simply to enable the native iOS crash reporting. -The second boolean parameter is whether or not to hijack some of the native signals – this is to solve the well known iOS crash reporter issue where null reference exceptions within a try/catch block can cause the application to crash. -By setting the second boolean parameter to true, the managed code will take over the SIGBUS and SIGSEGV iOS signals which solves the null reference issue. -Doing this however prevents SIGBUS and SIGSEGV native errors from being detected, meaning they don’t get sent to Raygun. -This is why we provide this as an option – so if you don’t have any issues with null reference exceptions occurring within try/catch blocks and you want to maximize the native errors that you can be notified of, then set the second boolean parameter to false. - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages or changing options such as the User identity string. - -Xamarin for Mac -==================== -Xamarin for Mac support is not included in the NuGet package or the Raygun4Net Xamarin Component. Instead, download the .zip of assemblies from the latest release on GitHub: https://github.com/MindscapeHQ/raygun4net/releases (Click the green button). Then copy and reference the Mindscape.Raygun4Net.Xamarin.Mac.dll into your Xamarin.Mac project. - -In the main entry point of the application, use the static RaygunClient.Attach method using your app API key. - -static void Main(string[] args) -{ - RaygunClient.Attach("YOUR_APP_API_KEY"); - - NSApplication.Init(); - NSApplication.Main(args); -} - -At any point after calling the Attach method, you can use RaygunClient.Current to get the static instance. This can be used for manually sending messages or changing options such as the User identity string. - -Additional features for all .Net frameworks: -============================================ - -Modify or cancel message ------------------------- - -On a RaygunClient instance, attach an event handler to the SendingMessage event. This event handler will be called just before the RaygunClient sends an exception - either automatically or manually. -The event arguments provide the RaygunMessage object that is about to be sent. One use for this event handler is to add or modify any information on the RaygunMessage. -Another use for this method is to identify exceptions that you never want to send to raygun, and if so, set e.Cancel = true to cancel the send. - -Strip wrapper exceptions ------------------------- - -If you have common outer exceptions that wrap a valuable inner exception which you'd prefer to group by, you can specify these by using the multi-parameter method: - -raygunClient.AddWrapperExceptions(typeof(TargetInvocationException)); - -In this case, if a TargetInvocationException occurs, it will be removed and replaced with the actual InnerException that was the cause. -Note that HttpUnhandledException and TargetInvocationException are already added to the wrapper exception list; you do not have to add these manually. -This method is useful if you have your own custom wrapper exceptions, or a framework is throwing exceptions using its own wrapper. - -Unique (affected) user tracking -------------------------------- - -There is a property named *User* on RaygunClient which you can set to be the current user's ID or email address. -This allows you to see the count of affected users for each error in the Raygun dashboard. -If you provide an email address, and the user has an associated Gravatar, you will see their avatar in the error instance page. - -Make sure to abide by any privacy policies that your company follows when using this feature. - -Version numbering ------------------ - -By default, Raygun will send the assembly version of your project with each report. -If you are using WinRT, the transmitted version number will be that of the Windows Store package, set in Package.appxmanifest (under Packaging). - -If you need to provide your own custom version value, you can do so by setting the ApplicationVersion property of the RaygunClient (in the format x.x.x.x where x is a positive integer). - -Tags and custom data --------------------- - -When sending exceptions manually, you can also send an arbitrary list of tags (an array of strings), and a collection of custom data (a dictionary of any objects). -This can be done using the various Send and SendInBackground method overloads. - -Custom grouping keys --------------------- -You can provide your own grouping key if you wish. We only recommend this you're having issues with errors not being grouped properly. - -On a RaygunClient instance, attach an event handler to the CustomGroupingKey event. This event handler will be called after Raygun has built the RaygunMessage object, but before the SendingMessage event is called. -The event arguments provide the RaygunMessage object that is about to be sent, and the original exception that triggered it. You can use anything you like to generate the key, and set it by `CustomGroupingKey` -property on the event arguments. Setting it to null or empty string will leave the exception to be grouped by Raygun, setting it to something will cause Raygun to group it with other exceptions you've sent with that key. - -The key has a maximum length of 100.